📝 LLM и AI

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

P
Автор
PyLand Team
📅
Опубликовано
04.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
401
🌱
Уровень
Начальный

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)

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

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

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

🔗 Похожие

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

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

📝

httpx: современный HTTP-клиент для Python

httpx — HTTP-клиент нового поколения. Интерфейс похож на requests, но с поддержкой async/await из коробки.

📅 30.06.2026 👁️ 330
📝

AI-агенты: ReAct loop и автономные действия

Чат-бот отвечает на вопросы. Агент — действует: вызывает инструменты, получает реальные данные и использует их...

📅 30.06.2026 👁️ 336
📝

Typer: CLI-приложения без boilerplate

Typer создаёт CLI из аннотаций типов Python. Никаких argparse, никакого ручного парсинга — только декораторы...

📅 30.06.2026 👁️ 368
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

Нейросети в коде: 5 AI-проектов на Python с Claude Открыть программу курса