Формат ответа

Типы 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.