Native Api
Чат
Документация нативного API ER-GPT.
Документация нативного API находится в разработке и может изменяться в будущем.
Общая логика работы
Для корректной работы диалога и сохранения контекста, взаимодействие происходит в два этапа:
- Создание сообщения (
POST /message): Сообщение пользователя сохраняется в базе данных. - Генерация ответа (
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()
main.ts
import axios from "axios";
import { IMessageCreatePayload, IGeneratePayload } from "./models";
import { createMessage, generateMessage } from "./methods";
// --- Конфигурация ---
const BASE_URL = process.env.API_BASE_URL || "https://api.er-gpt.ru/api/v2";
const API_TOKEN = process.env.API_TOKEN || "YOUR_ACCESS_TOKEN";
async function main() {
// Инициализация клиента
const client = axios.create({
baseURL: BASE_URL,
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${API_TOKEN}`,
},
});
// Тестовые данные
const chatId = "d290f1ee-6c54-4b01-90e6-d701748f0851";
const modelId = "ERGPT-Vision";
const userText =
"Привет! Напиши функцию на TypeScript, которая складывает два числа.";
// Выполняем создание
const message = await createMessage(client, {
chat_id: chatId,
content: userText,
model_id: modelId,
think: false,
rag: false,
});
if (!message || !message.id) {
console.error("Генерация отменена из-за ошибки создания сообщения.");
return;
}
// 2. Генерируем ответ, используя ID созданного сообщения как parent_id
const result = await generateMessage(client, {
chat_id: chatId,
parent_id: message.id, // Связываем сообщения через parent_id
model_id: modelId,
exclude_tools: ["web_search"], // Пример: исключаем поиск в интернете
});
if (result) {
console.log("\n--- Результат ---");
console.log(result.message.content);
}
}
main();