Формат ответа
Типы output
output — массив элементов в порядке действий ассистента. Типичный ответ: несколько tool_call подряд, затем финальный text.
Каждый элемент output дискриминируется полем type. Порядок соответствует тому, как ассистент действовал.
пример реального output
[
{
"type": "tool_call",
"tool_call": {
"name": "get_current_weather",
"input": { "latitude": 55.75, "longitude": 37.62 },
"output": { "type": "content", "content": [{ "type": "text", "text": "{\"temp\":12}" }] },
"cost": 0
}
},
{ "type": "text", "text": "В Москве сейчас +12°C…" }
]
text
{ "type": "text", "text": "Вот мой ответ…" }
file
Появляется, когда ассистент сгенерировал файл (например, изображение).
{
"type": "file",
"file": { "id": "88", "name": "generated_image.png", "mime_type": "image/png" }
}
Ссылку на скачивание постройте через базовый URL хранилища.
tool_call
Вызов инструмента вместе с его результатом. Успех:
{
"type": "tool_call",
"tool_call": {
"name": "get_current_weather",
"input": { "latitude": 55.75, "longitude": 37.62 },
"output": { "type": "content", "content": [{ "type": "text", "text": "…" }] },
"cost": 0
}
}
Ошибка инструмента — output.type становится error:
"output": { "type": "error", "error": { "message": "Request timeout", "reason": "fetch_timeout" } }
Как выглядят ответы конкретных инструментов — на странице Ответы инструментов.
search
Появляется, когда провайдер — Perplexity (web search встроен в модель).
{
"type": "search",
"search": {
"results": [{ "title": "…", "url": "…", "snippet": "…", "source": "…" }],
"citations": ["https://…"],
"images": [{ "title": "…", "image_url": "…", "origin_url": "…" }]
}
}
custom
Провайдер-специфичные данные.
{ "type": "custom", "custom": { "from": "perplexity", "content": { … } } }
Thinking не попадает в output
Блоки extended thinking появляются только в messages
как { "type": "thinking", … }, но не в output.