0Pricing
AI Agents · Урок

Форматирование вывода (JSON, XML, Markdown)

Заставьте модель возвращать структуры, пригодные для разбора, используя режим JSON, теги XML или строгий Markdown, чтобы вывод можно было обрабатывать программно.

«Форматирование вывода (JSON, XML, Markdown)» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Почему формат важен

Агенты передают вывод модели в код. Свободный текст нарушает работу анализаторов. Структурированный вывод (JSON, XML и т. д.) обязателен для любого рабочего агента.

Режим JSON

OpenAI и большинство провайдеров предлагают режим JSON, который гарантирует вывод, пригодный для разбора:

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    response_format={'type': 'json_object'},
)
import json
data = json.loads(response.choices[0].message.content)

Структурированный вывод (строгая схема)

Структурированный вывод OpenAI принимает JSON Schema и гарантирует соответствие вывода этой схеме:

schema = {
    'name': 'extract_person',
    'schema': {
        'type': 'object',
        'properties': {
            'name': {'type': 'string'},
            'age': {'type': 'integer'}
        },
        'required': ['name', 'age'],
        'additionalProperties': False
    },
    'strict': True
}

response = client.chat.completions.create(
    model='gpt-4o-2024-08-06',
    messages=messages,
    response_format={'type': 'json_schema', 'json_schema': schema}
)

Теги XML (стиль Anthropic)

Anthropic рекомендует XML-теги как самый надёжный формат для Claude:

system = '''
Return your answer wrapped in XML tags:

<reasoning>Your step-by-step thinking</reasoning>
<answer>The final answer</answer>
'''

# Parse with a simple regex or BeautifulSoup
import re
ans = re.search(r'<answer>(.*?)</answer>', text, re.S).group(1)

Markdown для людей

Используйте Markdown, когда вывод непосредственно предназначен для человека (интерфейс чата, документация).

Не используйте Markdown при передаче вывода в код — надёжно разобрать Markdown сложно.

Выбирайте формат для конкретного получателя

  • JSON — если данные поступают в Ваш код
  • XML — если данные поступают в Ваш код, особенно при работе с Claude
  • Markdown — если данные поступают в пользовательский интерфейс
  • Обычный текст — если данные поступают в другую LLM

Показывайте, а не только рассказывайте

Всегда включайте в запрос буквальный пример желаемого вывода:

system = '''
Return a JSON object like:
{
  "action": "reply",
  "content": "Hi there!",
  "confidence": 0.95
}
'''
print(system.strip())

Принудительно задайте первый токен

В Anthropic предварительно заполните сообщение ассистента символом { или [, чтобы принудительно получить вывод в формате JSON:

messages = [
    {'role': 'user', 'content': 'Return JSON with name and age.'},
    {'role': 'assistant', 'content': '{'}
]
# Output will start at '{ "name": ...' guaranteed.
for m in messages:
    print(f"{m['role']}: {m['content']}")
print('Output will start at \'{ "name": ...\' guaranteed.')

Обрабатывайте лишний текст в конце

Даже в режиме JSON модели иногда добавляют префикс «Конечно! Вот JSON:». Надёжные анализаторы:

  1. Ищут первую { или [
  2. Подсчитывают скобки, чтобы найти соответствующую закрывающую скобку
  3. Разбирают только этот фрагмент

Запросы для исправления

Если разбор не удался, отправьте сломанный вывод обратно модели и попросите исправить его:

repair_prompt = f'''
The previous output failed to parse with error: {error}.
Return ONLY a valid JSON object matching the schema. No prose.

Previous output:
{bad_output}
'''

Pydantic для проверки

Проверьте разобранный словарь с помощью модели Pydantic: проверьте типы полей и вызовите ошибку, если какое-либо поле отсутствует.

from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int

person = Person.model_validate_json(response_text)
print(person.name, person.age)

Лучший формат для кода

Вы передаёте вывод в Python. Какой формат наиболее надёжен?

Итоги

Три правила:

  1. Выбирайте формат, соответствующий получателю
  2. Показывайте пример, а не только описывайте результат
  3. Проверяйте каждый ответ и предусмотрите путь исправления

Часто задаваемые вопросы

Урок «Форматирование вывода (JSON, XML, Markdown)» бесплатный?

Да — полный текст урока «Форматирование вывода (JSON, XML, Markdown)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Форматирование вывода (JSON, XML, Markdown)»?

Заставьте модель возвращать структуры, пригодные для разбора, используя режим JSON, теги XML или строгий Markdown, чтобы вывод можно было обрабатывать программно. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Форматирование вывода (JSON, XML, Markdown)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Zero-shot, Few-shot и Chain-of-Thought
  2. Роли системы, пользователя и ассистента
  3. Форматирование вывода (JSON, XML, Markdown)
  4. Защита входных данных от внедрения промптов
← Назад к AI Agents