Формат ответа (SSE)
Ответ - поток text/event-stream. Каждая строка выглядит как data: {json}\n\n. Типы событий:
| type | Поля | Когда |
|---|---|---|
sources | sources: string[] | Приходит первым: идентификаторы найденных фрагментов базы, по которым бот отвечает. |
token | text: string | Кусок ответа. Приходит много раз - склеивайте text. |
done | balance, model, charged, conversation, tokens_in, tokens_out, tokens | Ответ завершён. charged - сколько рублей списано, conversation - идентификатор сессии. |
error | error: string | Ошибка, см. Ошибки. |
Цена ответа приходит в событии
done полем charged. Считать её самостоятельно по числу токенов не нужно и не стоит: она сохраняется вместе с ответом, и посчитанная задним числом покажет не то, что было списано.