Глава 7: Контроль вывода
9 апреля 2026 г.
Принцип
Явное указание формата вывода устраняет неоднозначность и упрощает парсинг результата.
Структурированный вывод
JSON
Наиболее универсальный формат для программной обработки.
Пример 1: Простая схема
"Проанализируй функцию.
Ответ в JSON:
\{
'name': str,
'params': list$str$,
'returns': str,
'complexity': str
\}
Функция:
def quicksort(arr): ..."
Пример 2: Вложенная схема
"Извлеки информацию о классе.
Формат:
\{
'class\_name': str,
'methods': $\{
'name': str,
'params': \[\{'name': str, 'type': str\}$,
'return\_type': str,
'is\_async': bool
\}
\],
'attributes': $\{'name': str, 'type': str\}$
\}
Код:
class UserService: ..."
Пример 3: С валидацией
"Результат в JSON.
Схема (Pydantic):
\`\`\`python
class AnalysisResult(BaseModel):
issues: list$Issue$
score: int = Field(ge=0, le=100)
class Issue(BaseModel):
line: int
severity: Literal$'low', 'medium', 'high'$
message: str
Код для анализа: ..."
\#\#\# Markdown
Для читаемого вывода с форматированием.
Пример 1: Секции "Формат ответа:
Проблема
Причина
Решение
$код$
Тесты
$тесты$
\`\`\`"
Пример 2: Таблица
"Сравни алгоритмы сортировки.
Формат: markdown таблица
| Алгоритм | Лучший | Средний | Худший | Память | Стабильный |
|----------|--------|---------|--------|--------|------------|"
Пример 3: Список
"Формат:
1. \*\*$Название проблемы$\*\*: $описание$
- Строка: $номер$
- Исправление: \`$код$\`
Максимум 5 проблем, по убыванию критичности."
Код
Структурированный код с метаданными.
Пример 1: С комментариями-секциями
"Формат:
\`\`\`python
\# === IMPORTS ===
\# === TYPES ===
\# === IMPLEMENTATION ===
\# === TESTS ===
\`\`\`"
Пример 2: С метаданными в docstring
"Формат:
\`\`\`python
def function():
'''
Complexity: O(n)
Space: O(1)
Examples:
\>\>\> function()
result
'''
\`\`\`"
Пример 3: Модуль
"Формат: полный Python модуль
\`\`\`python
'''
Module: $name$
Purpose: $description$
'''
from \_\_future\_\_ import annotations
from typing import ...
\_\_all\_\_ = $...$
\# Implementation
\`\`\`"
Ограничение длины
Лимит строк/символов
Пример 1: Код
"Напиши функцию.
Ограничение: максимум 15 строк, без пустых строк."
Пример 2: Объяснение
"Объясни концепцию.
Ограничение: 3-5 предложений."
Пример 3: Список
"Найди проблемы.
Ограничение: топ-3, по одной строке каждая."
Лимит элементов
Пример 1: Фиксированное число
"Предложи названия переменной.
Ровно 5 вариантов."
Пример 2: Диапазон
"Найди баги.
От 1 до 5 проблем (только реальные, не выдумывай)."
Пример 3: Приоритизация
"Code review.
Максимум 10 замечаний.
Порядок: критичные → важные → минорные."
Негативные инструкции
Что исключить из ответа
Пример 1: Без объяснений
"Напиши функцию сортировки.
НЕ ВКЛЮЧАТЬ:
- Объяснения
- Комментарии в коде
- Альтернативные варианты
- Примеры использования
Только код."
Пример 2: Без шаблонного текста
"Ответь на вопрос.
НЕ ВКЛЮЧАТЬ:
- 'Конечно, я помогу...'
- 'Вот ответ на ваш вопрос...'
- 'Надеюсь, это поможет!'
Сразу ответ."
Пример 3: Фокус на конкретном
"Code review.
НЕ КОММЕНТИРОВАТЬ:
- Форматирование
- Нейминг
- Стиль
ТОЛЬКО:
- Логические ошибки
- Баги
- Уязвимости"
Технологические ограничения
Пример 1: Без внешних зависимостей
"Напиши парсер JSON.
НЕ ИСПОЛЬЗОВАТЬ:
- json модуль
- сторонние библиотеки
Только базовый Python."
Пример 2: Без определённых конструкций
"Напиши функцию.
НЕ ИСПОЛЬЗОВАТЬ:
- Рекурсию
- Глобальные переменные
- Классы
Только функции и циклы."
Пример 3: Версионные ограничения
"Напиши код.
НЕ ИСПОЛЬЗОВАТЬ (Python \<3.10):
- match/case
- Оператор |= для dict
- Параметры позиции / (PEP 570)"
Уровень детализации
Адаптация под аудиторию
Пример 1: Эксперт
"Объясни GIL.
Аудитория: senior Python developer.
Уровень: internals, C-level детали.
НЕ объяснять: что такое потоки, базовый синтаксис."
Пример 2: Средний уровень
"Объясни GIL.
Аудитория: middle Python developer.
Уровень: практические последствия, когда проблема, как обойти.
Без низкоуровневых деталей реализации."
Пример 3: Новичок
"Объясни GIL.
Аудитория: junior, первый год Python.
Уровень: аналогии, простые примеры.
Избегать: технические термины без объяснения."
Глубина анализа
Пример 1: Поверхностный
"Code review.
Уровень: quick scan.
Только критичные проблемы (безопасность, падения)."
Пример 2: Стандартный
"Code review.
Уровень: стандартный.
Безопасность, производительность, читаемость."
Пример 3: Глубокий
"Code review.
Уровень: тщательный.
Включить:
- Безопасность (OWASP)
- Производительность (Big-O, memory)
- Тестируемость
- Соответствие SOLID
- Edge cases"
Форматы для разных задач
| Задача | Рекомендуемый формат |
|---|---|
| Извлечение данных | JSON |
| Генерация кода | Код в блоке ``` |
| Сравнение | Markdown таблица |
| Пошаговое руководство | Нумерованный список |
| Анализ | Markdown с секциями |
| Классификация | Одно слово / enum |
| Оценка | Число + обоснование |
Примеры комбинирования
Пример 1: JSON + ограничения
"Анализ функции.
Формат JSON:
\{
'issues': $...$, // максимум 5
'score': int // 0-100
\}
Без дополнительного текста, только JSON."
Пример 2: Markdown + структура
"Документация для функции.
Формат:
\#\# Описание
$1-2 предложения$
\#\# Параметры
| Параметр | Тип | Описание |
|----------|-----|----------|
\#\# Возвращает
$тип и описание$
\#\# Примеры
\`\`\`python
$2-3 примера$
Исключения
ExceptionType: когда возникает"
Пример 3: Код + метаданные "Оптимизируй функцию.
Формат:
\# Оригинал: O(n²)
\# Оптимизировано: O(n log n)
\# Изменения: $краткое описание$
$код$
После кода: бенчмарк до/после (таблица)."