Chat API

Интегрируйте возможности чата на базе ИИ в ваши приложения с помощью наших Chat API эндпоинтов.

Аутентификация

Все API запросы требуют аутентификации с использованием вашего API ключа. Вы можете найти ваш API ключ в настройках аккаунта .

Chat API

POST https://filebrain.pro/api/chat/v1/

Параметры запроса

Параметр Тип Обязательный Описание
project_id string Да Идентификатор вашего проекта
api_key string Да Ваш секретный API ключ
query string Да Вопрос или сообщение пользователя
session_id string Нет Уникальный идентификатор для поддержания контекста разговора
prompt string Нет Пользовательский промпт для переопределения стандартного промпта проекта
tags array Нет Список тегов для фильтрации контента базы знаний. Если теги не переданы или список пуст, фильтрация по тегам не применяется; автоматическое определение тегов отключено.
context_info boolean Нет Включить информацию о контексте в ответ
url_format string Нет Формат ответа ('html' или 'plain'). По умолчанию 'html'
response_schema string Нет Доступная схема: 'CodeMessage'. Требуется для структурированного ответа с пользовательской логикой.

Пример запроса

{
  "project_id": "c929732212329c3da8368e868bcd3393",
  "api_key": "4a6b796c6931eecbb1ec8cdd85ac15c4ba64408e",
  "query": "Привет, FileBrain!",
  "session_id": "optional_unique_user_token",
  "prompt": "optional_custom_prompt",
  "tags": ["optional", "tags", "list"],
  "context_info": false,
  "url_format": "html"
}

Формат ответа

{
  "status": "success",
  "message": {
    "question": "вопрос_пользователя",
    "answer": "ответ_на_вопрос",
    "source": ["Опциональный_массив_источников"]
  },
  "execution_time": 0.5,
  "call_cost": 1,
  "total_tokens": 150,
  "is_intention": false,
  "context_info": {
    "chunks": [
      {
        "id": 1,
        "source": "document.txt",
        "content": "релевантный текст из базы знаний",
        "score": 0.9600
      }
    ],
    "memory_context": [
      {
        "id": 1,
        "user": "привет",
        "chatbot": "привет, как я могу помочь вам сегодня?"
      }
    ]
  }
}

Параметры ответа

Параметр Тип Описание
status string Статус ответа (success или error)
message object Содержит вопрос, ответ и опциональные источники
execution_time number Время, затраченное на обработку запроса в секундах
call_cost number Стоимость, связанная с этим API вызовом
total_tokens number Общее количество токенов, использованных в запросе и ответе
is_intention boolean Указывает, был ли сработан пользовательский интент (true) или это обычный ответ (false)
context_info object Опциональная информация о контексте базы знаний и истории разговора (включается только когда параметр context_info установлен в true)

Формат ответа с ошибкой

{
  "status": "error",
  "message": "сообщение_об_ошибке"
}

Распространенные сообщения об ошибках включают:

  • "Authentication failed"
  • "Project ID is not valid"
  • "API usage limit reached"
  • "Invalid JSON"

Ответ из Намерений

Когда срабатывает пользовательский интент, ответ будет включать is_intention: true и ответ будет содержать настроенный ответ интента:

{
  "status": "success",
  "message": {
    "question": "вопрос_пользователя",
    "answer": "Текст ответа из Намерений",
    "source": []
  },
  "execution_time": 1,
  "call_cost": 0,
  "total_tokens": 1,
  "is_intention": true
}

Примеры кода

import requests

API_URL = "https://filebrain.pro/api/chat/v1/"
headers = {"Content-Type": "application/json"}

payload = {
    "project_id": "YOUR-PROJECT-ID",
    "api_key": "YOUR-API-KEY",
    "query": "Привет, FileBrain!",
    "session_id": "unique_session_id",
    # "prompt": "optional_custom_prompt",
    # "tags": ["tag1", "tag2"],
    # "context_info": False,
    # "url_format": "html"
}

response = requests.post(API_URL, json=payload, headers=headers)

if response.status_code == 200:
    data = response.json()
    if data.get("status") == "success":
        answer = data["message"]["answer"]
        is_intention = data.get("is_intention", False)
        print(f"Ответ: {answer}")
        
        # Проверяем, является ли это ответом пользовательского интента
        if is_intention:
            print("Это ответ пользовательского интента")
            
        # Получаем чанки, если был запрошен context_info
        chunks = data.get("context_info", {}).get("chunks", [])
        print(f"Релевантные чанки: {len(chunks)}")
    else:
        print("Ошибка:", data.get("message", "Неизвестная ошибка"))
else:
    print("Не удалось связаться с сервером.")
const API_URL = 'https://filebrain.pro/api/chat/v1/';

const payload = {
    project_id: 'YOUR-PROJECT-ID',
    api_key: 'YOUR-API-KEY',
    query: 'Привет, FileBrain!',
    session_id: 'unique_session_id',
    // prompt: 'optional_custom_prompt',
    // tags: ['tag1', 'tag2'],
    // context_info: false,
    // url_format: 'html'
};

async function chatWithFileBrain() {
    try {
        const response = await fetch(API_URL, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(payload)
        });

        const data = await response.json();
        
        if (data.status === 'success') {
            console.log('Ответ:', data.message.answer);
            
            // Проверяем, является ли это пользовательским интентом
            if (data.is_intention) {
                console.log('Обнаружен пользовательский интент!');
            }
            
            // Получаем информацию о контексте, если запрошена
            if (data.context_info) {
                console.log('Чанки контекста:', data.context_info.chunks.length);
            }
        } else {
            console.error('Ошибка:', data.message);
        }
    } catch (error) {
        console.error('Не удалось связаться с сервером:', error);
    }
}
curl -X POST https://filebrain.pro/api/chat/v1/ \
    -H "Content-Type: application/json" \
    -d '{
        "project_id": "YOUR-PROJECT-ID",
        "api_key": "YOUR-API-KEY",
        "query": "Привет, FileBrain!",
        "session_id": "unique_session_id",
        # "prompt": "optional_custom_prompt",
        # "tags": ["tag1", "tag2"],
        # "context_info": false,
        # "url_format": "html"
    }'