Диалоговый режим работы с ассистентом
С помощью данного метода вы можете отправлять сообщения боту в диалоговом формате. Бот самостоятельно определит, нужно ли использовать поиск по документам (RAG) для формирования ответа, и при использовании поиска вернет с ответом источники информации.
Отправка сообщений в диалоговом формате
POST ваш_базовый_url/agent/{bot_id}/v1/chat/completions
Ниже приведены примеры запроса для Python и cURL.
Важно! Используются только 2 роли: user
и assistant
- Python
import requests
import json
# Замените на ваш bot_id и токен
bot_id = "assistant_1234"
token = "ваш_токен_InsightStream"
# Определение URL
url = f"ваш_базовый_url/agent/{bot_id}/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {token}"
}
# Создание тела запроса
payload = {
"messages": [
{
"role": "user",
"content": "Какие критерии оценки срочности?"
}
],
"stream": False # Установите True для потокового получения ответа
}
# Выполнение POST-запроса
response = requests.post(url, headers=headers, data=json.dumps(payload))
</TabItem>
<TabItem value="curl" label="cURL">
```bash
curl -X POST "ваш_базовый_url/agent/{bot_id}/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ваш_токен_InsightStream" \
-d '{
"messages": [
{
"role": "user",
"content": "Какие критерии оценки срочности?"
}
],
"stream": false
}'
Ответ на запрос:
- 200 OK: Возвращает ответ и, при использовании RAG, ссылки на соответствующие документы.
- 400 Bad Request: Некорректные входные данные.
- 404 Not Found: Бот не найден или индексация не завершена.
- 429 Too Many Requests: Превышен лимит запросов.
Пример ответа (без использования RAG)
{
"id": "chatcmpl-ABC123XYZ",
"object": "chat.completion",
"created": 1741569952,
"model": "your-model-name",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Критерии оценки срочности обычно включают важность задачи, сроки выполнения и влияние на бизнес-процессы. Для более точного ответа мне нужен контекст вашего вопроса.",
},
"finish_reason": "stop"
}
]
}
Пример ответа (с использованием RAG)
Поля documents
и relevant_questions
появляются в ответе только в том случае, если бот решил использовать RAG.
{
"id": "chatcmpl-ABC123XYZ",
"object": "chat.completion",
"created": 1741569952,
"model": "your-model-name",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "Добрый день! Вот ответ на ваш вопрос."
}
}
],
"sources": [
{
"source_location": "http://ваш_базовый_url/documents/doc.pdf",
"source_document_name": "doc.pdf",
"source_document_type": "pdf",
"chunk": {
"begin_page": 1,
"end_page": 7,
"seq_number": 0
}
},
{
"source_location": "http://ваш_базовый_url/documents/doc.pdf",
"source_document_name": "doc.pdf",
"source_document_type": "pdf",
"chunk": {
"begin_page": 24,
"end_page": 30,
"seq_number": 4
}
},
После первых сообщений вам необходимо добавлять всю историю переписки в "messages", чтобы бот помнил контекст беседы. "sources" добавлять в "messages" не нужно.
Потоковые ответы (streaming)
При установке параметра "stream": true
в запросе, ответ будет приходить частями в формате Server-Sent Events. Первый чанк может содержать поле sources
(если бот решил использовать RAG), последующие чанки будут содержать только части текста ответа.
Пример потокового ответа:
data: {"id": "chatcmpl-0b09136c-dd92-402e-b653-eb8eecd194c4", "object": "chat.completion.chunk", "created": 1748471741, "model": "compressa", "choices": [{"index": 0, "delta": {"role": "assistant"}, "finish_reason": null}], "sources": [{"source_location": "http://ваш_url/documents/doc.pdf", "source_document_name": "doc.pdf", "source_document_type": "pdf", "chunk": {"begin_page": 37, "end_page": 44, "seq_number": 6}}, {"source_location": "http://ваш_url/documents/doc2.pdf", "source_document_name": "doc2.pdf", "source_document_type": "pdf", "chunk": {"begin_page": 19, "end_page": 24, "seq_number": 3}}]}
data: {"id": "chatcmpl-0b09136c-dd92-402e-b653-eb8eecd194c4", "object": "chat.completion.chunk", "created": 1748471741, "model": "compressa", "choices": [{"index": 0, "delta": {"content": ""}, "finish_reason": null}]}
data: {"id": "chatcmpl-0b09136c-dd92-402e-b653-eb8eecd194c4", "object": "chat.completion.chunk", "created": 1748471741, "model": "compressa", "choices": [{"index": 0, "delta": {"content": "Д"}, "finish_reason": null}]}
Объяснение параметров ответа
id
: Уникальный идентификатор запроса.
object
: Тип объекта ответа.
created
: Временная метка создания ответа.
model
: Название используемой модели.
choices
: Массив с возможными ответами (обычно один).
message.role
: Роль отправителя сообщения (в данном случае "assistant").
message.content
: Содержание ответа бота.
sources
: Список документов, которые использовал бот для ответа на вопрос (присутствует только если был использован RAG).
finish_reason
: Причина завершения генерации ("stop" означает нормальное завершение).