4.3 KiB
Проверочный чат агента
POST /api/v1/organizations/{organizationPublicId}/agents/{id}/test-chat/
требует права управления агентом и активного AI-агента. Проверочный чат использует
планирование знаний, псевдонимизацию и цикл инструментов живого хода. Подготовка
и журнал выполняются в коротких tenant-транзакциях, сеть — между ними.
{
"message": "Где мой заказ?",
"history": [{"role": "assistant", "content": "Здравствуйте"}],
"clientData": {
"name": "Анна",
"email": "anna@example.test",
"phone": "+79990001122",
"webFields": {
"42": {"order_number": "10482"}
}
}
}
id — идентификатор карточки (Channel), ключ webFields — строковый ID
веб-подключения этого агента. Поля проверяются по текущей схеме подключения тем
же валидатором, что значения веб-виджета. Неизвестные подключения и поля,
неверные типы, формат или варианты enum дают 400 до вызова провайдера.
Имя, e-mail и телефон также проверяются по типу и длине поля контакта.
clientData необязателен; пустой объект сбрасывает тестовые данные.
Отсутствующие и null-значения означают отсутствие данных; для стандартных
полей допускается также пустая строка. Обязательность формы перед чатом не
применяется: можно проверить поведение без значения привязанного параметра.
Без обязательного привязанного значения инструмент не предлагается модели.
История допускает только роли user и assistant, обрезается до окна агента.
Стандартные поля и свои тестовые значения становятся известными значениями
карты псевдонимизации, общей для эмбеддинга, истории, промпта и инструментов.
В промпт входят стандартные поля и свои поля с ai_visible=true в порядке
схемы; все переданные поля доступны серверным привязкам HTTP-параметров.
Данные, карта токенов, аргументы и тела ответов инструментов остаются в памяти.
Контакты, значения полей, диалоги и события проверочного чата не создаются.
В журнале LLM остаются только метаданные вызовов и учёт токенов каждого раунда.
Ответ сохраняет reply, model, promptTokens, completionTokens и добавляет
toolCalls. Числа токенов суммируются по всем раундам ответа. Каждый вызов:
{
"name": "order_status",
"tool": "Статус заказа",
"ok": true,
"errorCode": "",
"error": "",
"durationMs": 400,
"turnId": null
}
Это метаданные для плашки: итог успеха или ошибки, а не тело ответа инструмента.
error — переведённая подпись по тем же правилам, что в ленте диалога.
turnId=null: сохраняемого сообщения хода нет; UI группирует вызовы одного
HTTP-ответа. При отказе провайдера 502 содержит detail и уже выполненные
toolCalls. Ошибка инструмента возвращается модели кодом; она может закончить
ход ответом.