Native Api

Чат

Документация нативного API ER-GPT.
Документация нативного API находится в разработке и может изменяться в будущем.

Общая логика работы

Для корректной работы диалога и сохранения контекста, взаимодействие происходит в два этапа:

  1. Создание сообщения (POST /message): Сообщение пользователя сохраняется в базе данных.
  2. Генерация ответа (POST /message/generate): Запускает процесс генерации. В запросе передается parent_id (ID сообщения из первого шага), чтобы нейросеть видела контекст беседы.

Чат

Создание сообщения

Метод сохраняет сообщение в базе данных.

Endpoint: POST https://api.er-gpt.ru/api/v2/message

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

chat_id
string (uuid) required
ID чата, в котором отправляется сообщение. ::
content
string required
Текст сообщения. ::
model_id
string required
Идентификатор используемой модели (например, ERGPT-Vision). ::
assistant_id
string (uuid) | string
ID ассистента или идентификатор промпта/системных инструкций. ::
parent_id
string (uuid)
ID родительского сообщения (для цепочки ответов). ::
think
boolean
Флаг, включающий режим "размышления" (Chain of Thought). По умолчанию false. ::
rag
boolean | 'agent'
Флаг, включающий использование Retrieval-Augmented Generation (поиск по базе знаний). По умолчанию false. Если нужен Агентский режим, то значение равно agent. ::
attachments
array (AttachmentSchema)
Массив объектов вложений. Структура объекта: `{ id, filename, content_type, bucket, size, created_at }`. ::

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

Возвращает объект созданного сообщения Message.

{
  "id": "a1b2c3d4-e5f6-7890-1234-56789abcdef0",
  "chat_id": "b2c3d4e5-f6a7-8901-2345-6789abcdef01",
  "model_id": "ERGPT-Vision",
  "role": "user",
  "content": "Привет, как дела?",
  "created_at": "2023-10-27T10:00:00Z"
}

Генерация ответа

Метод запускает генерацию ответа на основе сохраненного сообщения.

Endpoint: POST https://api.er-gpt.ru/api/v2/message/generate

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

chat_id
string (uuid) required
ID чата. ::
parent_id
string (uuid) required
ID сообщения, на которое отвечаем. Берется из ответа метода POST /message. ::
model_id
string required
ID модели для генерации. ::
exclude_tools
array[string]
Список инструментов (blacklist), которые нельзя использовать. ::
include_tools
array[string]
Список инструментов (whitelist), которые можно использовать. ::

Управление инструментами

Параметры exclude_tools и include_tools являются взаимоисключающими. Нельзя использовать их одновременно в одном запросе.
  • exclude_tools (Blacklist): Исключает указанные инструменты из списка доступных.
  • include_tools (Whitelist): Разрешает использовать только указанные инструменты.
    • Примечание: Параметр include_tools находится в разработке и будет добавлен в будущих релизах.

Примеры реализации

Ниже приведены примеры реализации алгоритма: сначала сохраняем сообщение, затем запускаем генерацию.

main.py
import os
import logging
import httpx
from .models import GenerateRequest, MessageCreateRequest
from .methods import create_message, generate_message

logging.basicConfig(
    level=logging.INFO,
)
logger = logging.getLogger(__name__)

BASE_URL = os.getenv("API_BASE_URL", "https://api.er-gpt.ru/api/v2")
API_TOKEN = os.getenv("API_TOKEN")


def main():
    if not API_TOKEN:
        logger.error("Переменная окружения API_TOKEN не установлена.")
        return

    headers = {
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json",
    }

    # Пример данных
    chat_id = "d290f1ee-6c54-4b01-90e6-d701748f0851"
    model_id = "ERGPT-Vision"
    user_text = "Привет! Напиши функцию на Python, которая складывает два числа."

    with httpx.Client(base_url=BASE_URL, headers=headers) as client:
        # 1. Сохраняем сообщение в чатике
        msg_response = create_message(
            client,
            MessageCreateRequest(
                chat_id=chat_id,
                content=user_text,
                model_id=model_id,
                think=False,
                rag=False,
            ),
        )

        if not msg_response:
            logger.error("Генерация отменена, не удалось создать сообщение.")
            return

        # 2. Генерируем ответ, используя ID созданного сообщения как parent_id
        gen_response = generate_message(
            client,
            GenerateRequest(
                chat_id=chat_id,
                parent_id=msg_response.id,  # Вот тут связка
                model_id=model_id,
                exclude_tools=["web_search"],  # Пример исключения инструмента
            ),
        )

        if gen_response:
            print("\n--- Результат ---")
            print(gen_response.message.content)


if __name__ == "__main__":
    main()
Copyright © 2026