Перейти к основному содержимому

Диалоговый режим работы с ассистентом

С помощью данного метода вы можете отправлять сообщения боту в диалоговом формате. Бот самостоятельно определит, нужно ли использовать поиск по документам (RAG) для формирования ответа, и при использовании поиска вернет с ответом источники информации.

Отправка сообщений в диалоговом формате

POST ваш_базовый_url/agent/{bot_id}/v1/chat/completions

Ниже приведены примеры запроса для Python и cURL.

Важно! Используются только 2 роли: user и assistant

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" означает нормальное завершение).