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

Мультиходовые разговоры

Чтобы продолжить диалог, передайте предыдущие ходы в массиве turns[]. Каждый ход собирается из input запроса и output/messages ответа.

Как собрать turn

После получения результата возьмите turn из задачи целиком (там уже есть input, output, messages, metadata) и положите его в turns[] следующего запроса.

запрос 1
{
  "assistant_id": 1,
  "input": [{ "type": "text", "text": "Что такое Laravel?" }]
}
запрос 2 — с историей
{
  "assistant_id": 1,
  "input": [{ "type": "text", "text": "Как работает роутинг?" }],
  "turns": [
    {
      "input":    [/* из ответа 1 */],
      "output":   [/* из ответа 1 */],
      "messages": [/* из ответа 1 — обязательно */],
      "metadata": {/* из ответа 1 — опционально */}
    }
  ]
}

Правила

Поле ходаПередавать?
messagesОбязательно — это реальный контекст для модели.
outputНужно — используется для файлового контекста и некоторых инструментов.
inputНужно.
metadataОпционально — нужен только клиенту для показа стоимости.

Порядок в turns[] — хронологический, старые ходы первыми.

Типичные ошибки

СитуацияПоследствие
messages: [] или его нетМодель не видит историю — контекст пуст.
Передан только metadata, без messagesТо же самое.
turns[] в обратном порядкеМодель видит историю задом наперёд.
Очень длинная историяМожно превысить лимит контекста модели.
Нативные image-модели
Ассистентское сообщение нативной image-модели содержит полные base64-данные картинки в messages. При передаче такого хода в turns[] тело запроса вырастает на несколько МБ. Если история не нужна — этот messages можно не передавать.