Интеграция LLM провайдеров
О чем эта страница
Эта документация объясняет, как подключить и использовать LLM (Large Language Model) провайдеры в Rumess. Вы узнаете:
- Как работает система провайдеров, пресетов и агентов
- Как использовать готовые провайдеры от администратора
- Как создать свои провайдеры и пресеты
- Как интегрировать LLM в ваши приложения через API
Для кого: менеджеры продуктов, бизнес-пользователи, backend и frontend разработчики.
Быстрый старт
- Выберите или создайте пресет — набор параметров для LLM модели (температура, токены и т.д.)
- Примените пресет к агенту — свяжите пресет с вашим AI-агентом
- Используйте агента через API — отправляйте сообщения и получайте ответы
Минимальный пример:
POST /api/v1/client/ai-agents/{agent_id}/apply-preset/
Authorization: Bearer {token}
{"preset_id": 123}
Подробности ниже.
Как это работает
Концептуальная модель
LLM Provider (провайдер)
↓
Preset (пресет) — параметры модели
↓
Agent (агент) — ваш AI-помощник
↓
Chat/API — использование
Провайдер — это сервис, который предоставляет доступ к AI-моделям (например, OpenAI, Anthropic, или общий провайдер от Rumess).
Пресет — это конфигурация модели: какая модель использовать, температура, максимальное количество токенов, дополнительные параметры.
Агент — это ваш AI-помощник, который использует пресет для общения с пользователями.
Типы провайдеров
| Тип | Видимость | Управление | Использование |
|---|---|---|---|
| Общие (Shared) | Видны всем организациям | Только просмотр | Через пресеты |
| Приватные (Private) | Только ваша организация | Полное управление | Через пресеты |
Общие провайдеры создаются администратором и доступны всем. Вы не можете их редактировать или удалять, но можете использовать в своих пресетах.
Приватные провайдеры создаются вашей организацией. Только вы и администратор можете их видеть и управлять ими.
Типичные сценарии использования
Сценарий 1: Использование готового провайдера
Задача: Начать использовать AI без настройки собственного провайдера.
Шаги:
- Откройте список пресетов:
GET /api/v1/client/llm/presets/ - Найдите пресет с
scope: "global"(общий пресет) - Примените пресет к агенту:
POST /api/v1/client/ai-agents/{agent_id}/apply-preset/ - Используйте агента для чата
Время: 2-3 минуты.
Сценарий 2: Создание своего провайдера
Задача: Подключить свой API ключ от OpenAI, Anthropic и т.д.
Шаги:
- Создайте провайдера:
POST /api/v1/client/llm/providers/ - Создайте пресет для этого провайдера:
POST /api/v1/client/llm/presets/ - Примените пресет к агенту
- Используйте агента
Время: 5-10 минут.
Сценарий 3: Тестирование перед использованием
Задача: Проверить, как работает пресет, не сохраняя изменения в агенте.
Решение: Используйте Playground: POST /api/v1/client/ai-agents/{agent_id}/test-with-preset/
Использование агентов
Применение пресета к агенту
Применяет пресет к агенту, обновляя его конфигурацию LLM.
Endpoint:
POST /api/v1/client/ai-agents/{agent_id}/apply-preset/
Authorization: Bearer {access_token}
Content-Type: application/json
Запрос:
{
"preset_id": 123
}
Ответ: 200 OK (без тела) или ошибка.
Роли: owner, admin.
Чат с агентом
Отправка сообщения агенту и получение ответа.
Endpoint:
POST /api/v1/ai/agents/{agent_id}/chat/
Authorization: Bearer {access_token}
Content-Type: application/json
Запрос:
{
"message": "Привет!",
"conversation_id": 456, // опционально — ID существующего диалога
"use_rag": true, // использовать RAG (поиск по документам)
"use_tools": true // использовать инструменты агента
}
Ответ:
{
"content": "Привет! Чем могу помочь?",
"conversation_id": 456,
"usage": {
"prompt_tokens": 10,
"completion_tokens": 8,
"total_tokens": 18
}
}
Роли: owner, admin, member, viewer.
Тестирование пресета (Playground)
Тестирует агента с выбранным пресетом без сохранения изменений. Использование токенов записывается.
Endpoint:
POST /api/v1/client/ai-agents/{agent_id}/test-with-preset/
Authorization: Bearer {access_token}
Content-Type: application/json
Запрос:
{
"preset_id": 123,
"message": "Привет!",
"context": {} // опционально — дополнительный контекст
}
Ответ:
{
"ok": true,
"preset_id": 123,
"model": "gpt-4o-mini",
"output": "Привет! Чем могу помочь?",
"tokens_used": 18,
"response_time": 850,
"metadata": {
"prompt_tokens": 10,
"completion_tokens": 8
}
}
Роли: owner, admin.
Использование общих провайдеров
Что такое общие провайдеры
Общие (shared) провайдеры предоставляются администратором и доступны всем организациям. Они уже настроены и готовы к использованию.
Особенности:
- Видны всем организациям
- Нельзя редактировать или удалять
- Используются через пресеты
- API ключи управляются администратором
Как использовать общий провайдер
- Найдите пресет с общим провайдером:
GET /api/v1/client/llm/presets/
Ищите пресеты с "scope": "global" и "provider_display_name" нужного провайдера.
- Примените пресет к агенту (см. раздел "Использование агентов")
- Используйте агента для чата через API
Важно: Для общих провайдеров не нужно указывать base_url или API ключи — они уже настроены администратором.
Управление провайдерами
Получение списка провайдеров
Endpoint:
GET /api/v1/client/llm/providers/
Authorization: Bearer {access_token}
Ответ:
{
"results": [
{
"id": 1,
"name": "rumess",
"display_name": "Rumess",
"base_url": "",
"is_active": true,
"has_api_key": true,
"scope": "global",
"can_edit": false,
"created_at": "2025-01-01T00:00:00Z"
},
{
"id": 2,
"name": "openai",
"display_name": "Мой OpenAI",
"base_url": "https://api.openai.com/v1",
"is_active": true,
"has_api_key": true,
"scope": "tenant",
"can_edit": true,
"created_at": "2025-01-02T00:00:00Z"
}
]
}
Поля:
scope: "global"— общий провайдер (только просмотр)scope: "tenant"— ваш провайдер (можно редактировать/удалять)can_edit: false— нельзя редактировать (общий провайдер)can_edit: true— можно редактировать (ваш провайдер)
Создание провайдера
Endpoint:
POST /api/v1/client/llm/providers/
Authorization: Bearer {access_token}
Content-Type: application/json
Запрос:
{
"name": "openai",
"display_name": "Мой OpenAI",
"base_url": "https://api.openai.com/v1",
"new_api_key": "sk-...",
"is_active": true
}
Поля:
name(обязательно) — уникальный идентификатор провайдера (slug, например:openai,anthropic,openrouter)display_name(обязательно) — отображаемое имяbase_url(опционально) — URL API провайдера. Если не указан, используется стандартный URL для данного провайдераnew_api_key(обязательно) — API ключ провайдера (хранится в зашифрованном виде)is_active(опционально, по умолчаниюtrue) — активен ли провайдер
Ответ: 201 Created с данными созданного провайдера.
Роли: owner, admin.
Ошибки:
- 400 — неверные данные (например,
nameуже существует) - 403 — недостаточно прав
Удаление провайдера
Endpoint:
DELETE /api/v1/client/llm/providers/{provider_id}/
Authorization: Bearer {access_token}
Ответ: 204 No Content при успехе.
Роли: owner, admin.
Ограничения: Можно удалять только свои провайдеры (scope: "tenant"). Общие провайдеры удалить нельзя.
Управление пресетами
Получение списка пресетов
Endpoint:
GET /api/v1/client/llm/presets/
Authorization: Bearer {access_token}
Ответ:
{
"results": [
{
"id": 1,
"name": "Rumess Default",
"provider": "rumess",
"provider_display_name": "Rumess",
"model_name": "Rumess",
"temperature": 0.7,
"max_tokens": 1000,
"extra_params": {},
"is_active": true,
"is_default": false,
"scope": "global",
"can_edit": false,
"created_at": "2025-01-01T00:00:00Z"
}
]
}
Поля:
scope: "global"— общий пресет (только просмотр)scope: "tenant"— ваш пресет (можно редактировать/удалять)is_default: true— пресет используется по умолчанию для новых агентов в вашей организации
Создание пресета
Endpoint:
POST /api/v1/client/llm/presets/
Authorization: Bearer {access_token}
Content-Type: application/json
Запрос:
{
"name": "GPT-4o для чата",
"provider": "openai",
"model_name": "gpt-4o-mini",
"temperature": 0.7,
"max_tokens": 1000,
"extra_params": {
"top_p": 0.9,
"frequency_penalty": 0.5
},
"is_default": false,
"is_active": true
}
Поля:
name(обязательно) — название пресетаprovider(обязательно) — ключ провайдера (например,openai,rumess)model_name(обязательно) — название модели (например,gpt-4o-mini,claude-3-sonnet)temperature(обязательно, 0.0-2.0) — параметр творчества моделиmax_tokens(обязательно) — максимальное количество токенов в ответеextra_params(опционально, JSON объект) — дополнительные параметры моделиis_default(опционально, по умолчаниюfalse) — использовать ли как пресет по умолчанию для новых агентовis_active(опционально, по умолчаниюtrue) — активен ли пресет
Ответ: 201 Created с данными созданного пресета.
Роли: owner, admin.
Удаление пресета
Endpoint:
DELETE /api/v1/client/llm/presets/{preset_id}/
Authorization: Bearer {access_token}
Ответ: 204 No Content при успехе.
Роли: owner, admin.
Ограничения: Можно удалять только свои пресеты (scope: "tenant"). Общие пресеты удалить нельзя.
Параметры пресета
Основные параметры
| Параметр | Тип | Диапазон | Описание |
|---|---|---|---|
| temperature | число | 0.0 - 2.0 | Параметр творчества модели. Чем выше, тем более креативные ответы. Рекомендуется 0.7 для большинства задач. |
| max_tokens | число | > 0 | Максимальное количество токенов в ответе модели. Ограничивает длину ответа. |
Рекомендации:
temperature: 0.7— для большинства задач (баланс между креативностью и точностью)temperature: 0.3— для задач, требующих точности (анализ данных, ответы на вопросы)temperature: 1.0+— для креативных задач (генерация текста, идей)
Дополнительные параметры (extra_params)
Дополнительные параметры передаются в формате JSON объекта в поле extra_params.
| Параметр | Тип | Диапазон | Описание |
|---|---|---|---|
| top_p | число | 0.0 - 1.0 | Выборка ядра (nucleus sampling). Контролирует разнообразие ответов. |
| frequency_penalty | число | -2.0 - 2.0 | Штраф за частоту использования токенов. Положительные значения снижают вероятность повторения. |
| presence_penalty | число | -2.0 - 2.0 | Штраф за присутствие токенов. Положительные значения поощряют новые темы. |
| stop | массив строк | — | Массив строк для остановки генерации. |
| max_completion_tokens | число | > 0 | Лимит токенов ответа (альтернатива max_tokens). |
Пример:
{
"top_p": 0.9,
"frequency_penalty": 0.5,
"presence_penalty": 0.3,
"stop": ["\n\n", "---"],
"max_completion_tokens": 2000
}
Примечание: Не все провайдеры поддерживают все параметры. Проверьте документацию вашего провайдера.
Ошибки и ограничения
Коды ошибок HTTP
| Код | Название | Причина | Решение |
|---|---|---|---|
| 400 | Bad Request | Неверные данные в запросе | Проверьте формат JSON и обязательные поля |
| 401 | Unauthorized | Отсутствует или неверный токен | Проверьте заголовок Authorization: Bearer {token} |
| 402 | Payment Required | Требуется активная подписка | Активируйте подписку в личном кабинете |
| 403 | Forbidden | Недостаточно прав | Требуется роль owner или admin для создания/редактирования |
| 404 | Not Found | Провайдер, пресет или агент не найден | Проверьте ID в URL |
| 429 | Too Many Requests | Превышена квота использования токенов или API вызовов | Дождитесь обновления квоты или обновите план подписки |
| 500 | Internal Server Error | Ошибка LLM API или внутренняя ошибка сервера | Обратитесь в поддержку |
| 503 | Service Unavailable | LLM сервис временно недоступен (timeout, rate limit, connection error) | Повторите запрос позже |
Ограничения
- Общие провайдеры: нельзя редактировать или удалять
- Приватные провайдеры: видны только вашей организации и администратору
- Пресеты: можно использовать только с провайдерами, доступными вашей организации
- Квоты: использование токенов ограничено планом подписки
Безопасность
Хранение данных
- API ключи провайдеров хранятся в зашифрованном виде
- Доступ к провайдерам и пресетам ограничен по tenant (организации)
- Общие провайдеры доступны только для чтения
- Приватные провайдеры видны только вашей организации и администратору
Роли и права доступа
| Действие | owner | admin | member | viewer |
|---|---|---|---|---|
| Просмотр провайдеров/пресетов | ✅ | ✅ | ✅ | ✅ |
| Создание провайдеров/пресетов | ✅ | ✅ | ❌ | ❌ |
| Редактирование провайдеров/пресетов | ✅ | ✅ | ❌ | ❌ |
| Удаление провайдеров/пресетов | ✅ | ✅ | ❌ | ❌ |
| Использование агентов (чат) | ✅ | ✅ | ✅ | ✅ |
| Применение пресетов к агентам | ✅ | ✅ | ❌ | ❌ |
Рекомендации
- Не передавайте API ключи в URL или в логах
- Используйте HTTPS для всех запросов
- Регулярно обновляйте API ключи провайдеров
- Используйте минимально необходимые права доступа для пользователей
Дополнительная информация
Для получения помощи:
- Обратитесь к администратору вашей организации
- Свяжитесь с поддержкой Rumess
Последнее обновление: 2025-01-14