Обработка данных ответа
На этой странице объясняется, как правильно разбирать данные ответа, возвращаемые 4ALL API, для всех моделей, вызываемых через Chat Completions.
Структура нестримингового ответа
{ "id": "chatcmpl-xxx", "object": "chat.completion", "model": "gpt-5.5", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "……" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 12, "completion_tokens": 46, "total_tokens": 58 }}Обработка finish_reason
| Значение | Значение | Рекомендуемая обработка |
|---|---|---|
stop | Нормальное завершение | Использовать напрямую |
length | Обрезано из-за достижения верхнего предела max_tokens | Увеличить max_tokens или продолжить по частям |
tool_calls | Модель запрашивает вызов функции | После выполнения функции вернуть результат, см. FC 函数调用 |
content_filter | Контент заблокирован верхнеуровневой политикой безопасности | Скорректировать подсказку |
Поле usage
usage— основа для сверки: тарификация отдельно поprompt_tokens/completion_tokens;- Последний блок данных при стриминговом вызове также содержит
usage(подробнее см. 流式输出); - При попадании в кеш подсказки
prompt_tokens_details.cached_tokensотмечает часть из кеша, она тарифицируется по коэффициенту кеша, см. 缓存计费。
Рекомендации по разбору
- Всегда читайте
choices[0].message.content, не предполагая, что длинаchoicesбольше 1; - Модели с рассуждением (
-thinkingуровень) могут содержать полеreasoning_content; при отображении отделяйте его от основного текста, см. 推理模型输出; - При ошибке ответ имеет структуру
{"error": {...}}, способ обработки см. в 错误码与重试】【。