Как устроен запрос к чат-API модели — роли сообщений, причина остановки, расход токенов?
- Что такое system, user и assistant в API?
- Что означает finish_reason?
Запрос — список сообщений с ролями: system (правила и роль модели), user (запросы), assistant (прошлые ответы модели). Модель не хранит диалог: приложение каждый раз отправляет историю целиком. Ответ содержит текст, причину остановки (закончила сама, упёрлась в лимит токенов, вызвала инструмент, сработал фильтр) и расход токенов входа и выхода.
- Остановка по лимиту — ответ обрезан, его нельзя показывать как полный
- Расход токенов логируют: из него считается стоимость
- Ключ API хранится только на сервере, клиентское приложение ходит через ваш бэкенд
А ещё У разных провайдеров поля называются по-разному, но смысл одинаковый
Подробно
Пример (схематично):
{"model": "…", "max_tokens": 500,
"messages": [
{"role": "system", "content": "Ты помощник магазина. Отвечай кратко."},
{"role": "user", "content": "Где мой заказ 123?"}]}
Причины остановки:
- модель закончила ответ — нормальный случай;
- достигнут max_tokens — ответ обрезан, нужно увеличить лимит или продолжить;
- вызов инструмента — нужно выполнить его и вернуть результат;
- фильтр безопасности — показать понятное сообщение.
Ключ. Ключ в коде браузера или мобильного приложения увидит любой пользователь и потратит ваш бюджет. Запросы идут через сервер, где хранится ключ, проверяется пользователь и лимиты.
Что хотят услышать
- Роли сообщений и передача истории.
- Обработка причины остановки, особенно обрезки.
- Учёт токенов.
- Ключ только на сервере.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Модель хранит историю диалога, достаточно отправлять только новое сообщение
- ✗Модель хранит историю диалога на стороне провайдера, поэтому достаточно отправлять новое сообщение и идентификатор беседы
- ✗Ключ API удобнее хранить в мобильном приложении, чтобы не нагружать сервер
- ✓Историю с ролями шлют каждый раз; stop reason показывает обрезку, usage — стоимость
Разбор темы
- Как устроена языковая модель — токены, контекст и генерация
Что на самом деле делает LLM, почему она ошибается, как считаются токены и стоимость и как выглядит запрос к API модели.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.