📝 LLM и AI

rich: красивый вывод в терминал

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
04.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
16
🌱
Уровень
Начальный
🐦 💼 ✈️

rich — Python-библиотека для форматированного вывода в терминал. Цвета, таблицы, панели, markdown, прогресс-бары, спиннеры — всё через один простой API. Разработана Will McGugan и активно развивается.

Установка

uv add rich

Console — основа всего

from rich.console import Console

console = Console()

console.print("Обычный текст")
console.print("[bold red]Ошибка![/bold red]")
console.print("[green]Успех[/green]")
console.print("[bold blue]Заголовок[/bold blue]")
console.print("[dim]Вторичный текст[/dim]")

Стили обрамляются в [стиль]текст[/стиль].

Markdown

from rich.markdown import Markdown

text = "# Заголовок\n\nПараграф с **жирным** текстом.\n\n```python\nprint('hello')\n```"
console.print(Markdown(text))

Идеально для вывода ответов Claude — модель часто отвечает в markdown-формате.

Panel

from rich.panel import Panel

console.print(Panel(
    "Текст сообщения",
    title="Заголовок",
    border_style="blue"
))

console.print(Panel(
    "[bold]Важное сообщение[/bold]",
    title="[red]Ошибка[/red]",
    border_style="red",
    padding=(1, 2),
))

Status (спиннер)

import time

with console.status("[bold green]Думаю...[/]", spinner="dots"):
    time.sleep(2)  # долгая операция
# спиннер останавливается автоматически при выходе из with

Встроенные спиннеры: dots, dots2, line, arc, bouncingBall, clock.

Input с подсказкой

user_input = console.input("[bold blue]Ты:[/] ")

Поддерживает те же цветовые теги что и console.print().

Таблица

from rich.table import Table

table = Table(title="Статистика токенов")
table.add_column("Тип", style="cyan", no_wrap=True)
table.add_column("Количество", justify="right", style="green")
table.add_column("Стоимость", justify="right", style="yellow")

table.add_row("Input", "1 234", "$0.0037")
table.add_row("Output", "567", "$0.0085")

console.print(table)

Цветовые стили шпаргалка

Стиль Применение
[bold] важные части
[italic] термины, акценты
[dim] вторичная информация
[red] / [green] ошибки / успех
[blue] / [cyan] метки пользователя / кода
[yellow] предупреждения, стоимость
[bold green]Claude[/bold green] составные стили

Важно: highlight=False при стриминге

При выводе текста по чанкам всегда отключай автоподсветку:

# При стриминге:
console.print(chunk, end="", highlight=False)

# При обычном выводе можно без флага:
console.print(response_text)

Без highlight=False rich пытается применить синтаксическую подсветку к каждому чанку отдельно — это ломает форматирование при потоковом выводе.

Rule (разделитель)

from rich.rule import Rule

console.print(Rule("[dim]новый диалог[/dim]"))

Выводит горизонтальную линию на всю ширину терминала — удобно для разделения блоков вывода.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Anthropic SDK: первые шаги с Claude API

Anthropic Python SDK — официальная библиотека для работы с Claude. Она скрывает сложность HTTP-запросов, добавляет...

📅 04.06.2026 👁️ 17
📝

Стриминг ответов LLM: ответ по частям

По умолчанию messages.create() ждёт пока модель полностью сформирует ответ и только потом возвращает результат. При...

📅 04.06.2026 👁️ 19
📝

uv: современный менеджер пакетов для Python

uv — инструмент нового поколения для управления Python-зависимостями. Написан на Rust компанией Astral, в 10–100...

📅 04.06.2026 👁️ 17

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!