# AllModel > Единый OpenAI-совместимый API для доступа к AI-моделям разных провайдеров через один ключ и один баланс. # Руководство пользователя > Регистрация, работа с чатами, файлами и биллингом ## Обзор сервиса > Что такое allmodel.ru и его возможности # Обзор сервиса ## Что такое allmodel.ru aLLModel.ru — единая точка доступа к AI-моделям разных провайдеров через единый интерфейс. Сервис агрегирует модели множества провайдеров и агрегаторов, расширяя функционал, предоставляя доступ пользователям любым удобным для них способом: AI-студия, API, боты мессенджеров. ## Ключевые возможности - **Единый каталог моделей** — текстовые модели, генерация изображений, работа с аудио и видео в одном списке. - **Несколько источников на модель** — одна и та же модель может быть доступна через разных провайдеров с разными ценами. - **Мультиплатформенность** — веб-интерфейс, Telegram-бот и бот в Max. - **История диалогов** — сессии сохраняются, их можно переименовывать, продолжать и удалять. - **Файлы и медиа** — загрузка изображений, документов, аудио и видео в чат. - **Биллинг** — внутренний кошелёк, пополнение картой или через СБП, история транзакций. - **API-ключи** — программный доступ к моделям по OpenAI-совместимому API. ## Поддерживаемые платформы | Платформа | Адрес | Особенности | |---|---|---| | Веб-приложение | allmodel.ru/app | Полный интерфейс, история, файлы, настройки | | Telegram | бот в Telegram | Мини-приложение и команды бота | | Max | бот в Max | Мини-приложение и команды бота | ## Режимы работы Сервис поддерживает несколько режимов взаимодействия с моделями: - **Текст** — классический диалог,system-промпты, потоковые ответы. - **Изображения** — генерация изображений по текстовому описанию, обработка изображений. - **Аудио** — распознавание речи, синтез речи. - **Видео** — генерация и обработка видео. - **Музыка** — генерация и обработка музыки. - **Эмбеддинги** — генерация числовые векторы ("язык" ИИ моделей). Точный список доступных режимов зависит от каталога моделей и виден в интерфейсе при выборе модели. ## Регистрация и вход > Способы создания аккаунта и авторизации # Регистрация и вход ## Способы регистрации Аккаунт можно создать тремя способами: 1. **Через Telegram** — регистрация по логину и паролю с указанием email и авторизация через мини-приложение в Telegram-боте. 2. **Через Max** — аналогично Telegram. 3. **Через веб-интерфейс** — аналогично. ## Вход в веб-интерфейс 1. Откройте страницу входа. 2. Введите логин и пароль. 3. При регистрации укажите email — на него отправляется письмо для подтверждения. 4. После подтверждения email доступны все функции аккаунта. ## Верификация email Email подтверждается по ссылке из письма. Пока email не подтверждён, часть функций (например, отправка запросов) недоступна. ## Быстрый старт > Первые шаги после регистрации # Быстрый старт ## Шаг 1. Пополните баланс Без положительного баланса запросы к моделям будут отклонены. Нажмите на значок кошелька на главной панели, либо выберите пункт меню "Баланс" в мобильном приложении. Далее нажмите кнопку «+», выберите способ оплаты и укажите сумму. После этого выполните пополнение любым из доступных способов. ## Шаг 2. Выберите модель В списке моделей видны название, провайдер, поддерживаемые модальности, стоимость. Модели можно искать по названию, фильтровать по провайдеру и типу. ## Шаг 3. Задайте режим Переключите режим работы (текст, изображения, аудио, видео, музыка) — список моделей обновится в соответствии с выбранным режимом. ## Шаг 4. Отправьте сообщение Введите текст в поле ввода и отправьте. Ответ модели появится в чате. ## Шаг 5. Прикрепите файлы Перетащите файл в поле ввода или нажмите на скрепку. Поддерживаются изображения, документы, аудио и видео в зависимости от возможностей выбранной модели. ## Что дальше - Сохраняйте важные диалоги — история доступна на всех устройствах. - Создайте API-ключ, если планируете интеграцию. - Ознакомьтесь с [API Reference](/docs/api/obzor-api), если нужен программный доступ. ## Работа с чатами > Модели, режимы, сессии и сообщения # Работа с чатами ## Выбор модели Перед началом диалога выберите модель. Для каждой модели доступны: - название и провайдер; - поддерживаемые модальности; - параметры генерации; - стоимость за токены или за операцию. Если модель доступна у нескольких провайдеров, сервис использует источник с наименьшей задержкой генерации. Пользователь может выбрать из списка конкретного провайдера. ## Режимы чата ### Текстовый режим Стандартный диалог с моделью. Поддерживаются длинные контексты, потоковые ответы и системные промпты. ### Генерация изображений Выберите модель с поддержкой генерации изображений и опишите желаемый результат. Часто доступна загрузка референсного изображения для обработки. ### Аудио Работа с аудиофайлами: расшифровка речи, ответы на вопросы по записи, синтез речи. ### Видео Генерация и обработка видео, в зависимости от возможностей модели. ### Музыка Генерация музыкальных произведений. ## Сессии и сообщения - **Создание** — новая сессия создаётся автоматически при первом сообщении. - **Переименование** — задайте понятное название, чтобы легко находить диалог. - **Продолжение** — вернитесь к любой сессии из истории и продолжите диалог. - **Редактирование сообщений** — в режиме "Чат" сообщение можно отредактировать и отправить заново. - **Удаление** — отдельную сессию, сообщения или всю переписку. - **Очистка** — команда очистки чата в мессенджерах. ## Загрузка файлов В чат можно загрузить: - изображения; - документы (PDF, текстовые файлы, таблицы); - аудио; - видео. Ограничения по размеру, количеству и типам зависят от модели. Если файл не поддерживается выбранной моделью, система сообщит об этом. ## Тарификация Каждое обращение к модели списывается с внутреннего кошелька по тарифу модели. Стоимость зависит от количества токенов в отправленом запросе, полученном ответе, кэшировнаия токенов, использования вэб-поиска. Есть варианты, где стоимость указана за итоговое действие, например генерацию изображения ## Биллинг и оплата > Кошелёк, пополнение, транзакции # Биллинг и оплата ## Внутренний кошелёк У каждого пользователя есть кошелёк с балансом. Все расходы на обращения к AI-моделям списываются с него. Баланс общий для веб-интерфейса, Telegram и Max. ## Пополнение баланса Нажмите на значок кошелька на главной панели, либо выберите пункт меню "Баланс" в мобильном приложении. Далее нажмите кнопку «+», выберите способ оплаты и укажите сумму. После этого выполните пополнение любым из доступных способов. После оплаты платёж подтверждается автоматически либо по callback от платёжной системы, баланс пополняется в течение короткого времени. ## Транзакции В разделе «Транзакции» доступна история операций: - пополнения; - списания за использование моделей; - возвраты. Можно посмотреть сводку по расходам за период. ## Стоимость использования Стоимость зависит от выбранной модели и режима. Актуальная цена отображается в интерфейсе при выборе модели. Стоимость рассчитывается по фактическому объёму: числу входных и выходных токенов либо за операцию генерации медиа. ## Если баланса недостаточно Запросы к моделям будут отклонены с ошибкой о недостаточном балансе. Пополните кошелёк и повторите запрос. ## Особенности - Списание происходит по факту использования. - Суммы и статусы операций видны в истории транзакций. ## Часто задаваемые вопросы > Ответы на популярные вопросы # Часто задаваемые вопросы ## Общие вопросы **Какие модели доступны?** Доступ к моделям предоставляется через внешних провайдеров и агрегаторов. Полный список виден в интерфейсе и меняется по мере подключения новых моделей. **Можно ли пользоваться сервисом через мессенджеры?** Да. Есть боты в Telegram и Max, а также мини-приложения. Баланс общий для всех каналов. **Есть ли API?** Да, есть OpenAI-совместимый API. Ключи создаются в личном кабинете. Подробнее — в разделе [API Reference](/docs/api/obzor-api). ## Биллинг **Как пополнить баланс?** Нажмите на значок кошелька на главной панели, либо выберите пункт меню "Баланс" в мобильном приложении. Далее нажмите кнопку «+», выберите способ оплаты и укажите сумму. После этого выполните пополнение любым из доступных способов. **Почему списывается сумма за запрос?** Обращение к модели тарифицируется по её тарифу: за токены или за операцию генерации. **Что делать при нулевом балансе?** Пополнить кошелёк. До пополнения запросы к моделям недоступны. **Можно ли отменить пополнение?** Отмена платежа доступна, пока платёж не зачислен. После зачисления возврат выполняется через поддержку. ## Технические вопросы **Хранится ли история чатов?** Да, история сохраняется в аккаунте. Ненужные сессии и сообщения можно удалить самостоятельно. **Можно ли продолжить диалог на другом устройстве?** Да, в веб-интерфейсе поддерживается загрузка из истории. В мессенджерах история хранится и поддерживается функционалом самого мессенджера. **Что делать, если модель не отвечает?** Проверьте баланс и статус модели. Если ошибка повторяется, напишите в поддержку — приложите текст ошибки. **Как удалить аккаунт?** Обратитесь в поддержку с запросом на удаление данных. # Описание API > Программный доступ к сервису: аутентификация и эндпоинты ## Обзор API > Базовый URL, форматы ответов, структура # Обзор API ## Базовый URL ``` https://allmodel.ru/api ``` ## Формат ответов Все ответы возвращаются в формате JSON. Успешный ответ: ```json { "data": { } } ``` Список с пагинацией: ```json { "data": [ ], "total": 100, "page": 1, "limit": 50 } ``` Ошибка: ```json { "error": "Описание ошибки", "statusCode": 400 } ``` ## Группы эндпоинтов | Префикс | Назначение | Доступ | |---|---|---| | `/api/v1` | OpenAI-совместимый доступ к моделям | API-ключ или JWT | | `/api/public` | Каталог моделей, провайдеров, режимов, настройки сайта | Открытый | | `/api/user` | Профиль, чаты, файлы, платежи, API-ключи | Требуется авторизация | | `/api/docs` | Доступ к документации сервиса | Открытый, с учётом ролей | ## Аутентификация Два способа: - **API-ключ** — заголовок `X-API-Key`, либо `Authorization: Bearer `; - **JWT-токен** — заголовок `Authorization: Bearer <токен>`. Подробности — в разделе [Аутентификация](/docs/api/autentifikaciya). ## Соглашения об именовании - Ответы и поля — в `camelCase`. - Даты — ISO 8601 в UTC. - Идентификаторы — UUID. ## Аутентификация > API-ключи и JWT-токены # Аутентификация ## Способ 1. API-ключ Основной способ для серверных интеграций. Ключ передаётся в заголовке `X-API-Key`. ```bash curl -H "X-API-Key: your_api_key" https://allmodel.ru/api/v1/models ``` Ключ наследует права и баланс пользователя, которому он принадлежит. ## Способ 2. JWT-токен (также доступен для API-ключа) Используется для запросов из веб-интерфейса. Токен выдаётся при входе и передаётся в заголовке `Authorization`. ```bash curl -H "Authorization: Bearer your_jwt_token" https://allmodel.ru/api/user/profile ``` ## Получение API-ключа Личный кабинет → раздел «API ключи» → «Создать ключ». Параметры ключа: - **Название** — для удобства идентификации. - **Срок действия** — 1 день, 1 неделя, 1 месяц или без ограничений. - **Фильтрация персональных данных** — можно включить или отключить для конкретного ключа. ## Особенности ключей - Ключ хранится в виде хеша, в открытом виде не сохраняется. - Ключ можно деактивировать и удалить. - Есть ключ по умолчанию — он используется, если явно не указан другой. - Ключ имеет префикс и суффикс для идентификации в списке. ## Требования безопасности - Не передавайте ключи в параметрах URL — только в заголовках. - Храните ключи в переменных окружения или секрет-хранилище. - Не публикуйте ключи в репозиториях и клиентском коде. - При подозрении на компрометацию отзовите ключ и создайте новый. - Используйте отдельные ключи для разных приложений и окружений. ## Профиль и история > Профиль и история # Профиль пользователя ## GET /api/user/profile Профиль текущего пользователя. ## PUT /api/user/profile Изменить имя, email, телефон, часовой пояс. ## PUT /api/user/password Смена пароля. ## POST /api/user/logout Завершение сессии. # Аватар ## PUT /api/user/avatar Загрузить авата ## DELETE /api/user/avatar Удалить аватар # История сессий ## GET /api/user/history История обращений к моделям. ## Каталог моделей > Эндпоинты /api/v1 и /api/public # Каталог моделей ## GET /api/v1/models Список активных моделей, доступных для вызова. **Аутентификация:** API-ключ или JWT. ```bash curl -H "X-API-Key: your_api_key" https://allmodel.ru/api/v1/models ``` ## GET /api/public/models Каталог моделей для интерфейса с фильтрами и пагинацией. **Аутентификация:** не требуется. Параметры: | Параметр | Тип | Описание | |---|---|---| | `mode` | string | Ключ или название режима (text, image, audio, video) | | `modelType` | string | Тип модели (например, chat, tts, image) | | `search` | string | Поиск по названию | | `provider` | string | Фильтр по провайдеру | | `creator` | string | Фильтр по создателю модели | | `page` | number | Номер страницы, по умолчанию 1 | | `limit` | number | Количество на странице, `0` — без ограничения | | `include_prices` | boolean | `false` — не возвращать цены | ```bash curl "https://allmodel.ru/api/public/models?mode=text&page=1&limit=20" ``` ## Другие справочные эндпоинты | Метод и путь | Назначение | |---|---| | `GET /api/public/modes` | Список режимов работы | | `GET /api/public/model-types` | Список типов моделей | | `GET /api/public/model-parameters/:modelId` | Дерево параметров модели | | `GET /api/public/model/:modelId` | Карточка модели с провайдерами и ценами | | `GET /api/public/providers` | Список провайдеров | | `GET /api/public/creators` | Список создателей моделей | | `GET /api/public/stats` | Статистика сервиса | | `GET /api/public/site-settings` | Настройки сайта (название, тексты) | | `GET /api/user/models` | Модели с учётом прав пользователя | ## Избранные модели | Метод и путь | Назначение | |---|---| | `GET /api/user/models/favorites` | Список избранных моделей | | `POST /api/user/models/favorites/:modelId` | Добавить в избранное | | `DELETE /api/user/models/favorites/:modelId` | Убрать из избранного | ## Обращения к моделям > POST /api/v1/chat/completions # Обращения к моделям ## POST /api/v1/chat/completions OpenAI-совместимый эндпоинт для отправки сообщений в модель. **Аутентификация:** API-ключ или JWT. ### Тело запроса ```json { "model": "gpt-4o", "messages": [ { "role": "system", "content": "Ты — помощник." }, { "role": "user", "content": "Привет" } ], "temperature": 0.7, "max_tokens": 1024, "stream": false } ``` | Поле | Тип | Описание | |---|---|---| | `model` | string | **Обязательно.** Имя модели из каталога | | `messages` | array | **Обязательно.** Массив сообщений с ролями `system`, `user`, `assistant` | | `temperature` | number | Температура генерации | | `max_tokens` | number | Максимум токенов в ответе | | `stream` | boolean | Потоковый вывод ответа | | `sessionId` | string | Идентификатор сессии для сохранения истории | | `tools` | array | Инструменты (function calling) | | `tool_choice` | string | Выбор инструмента: `auto`, `none`, `specific` | Любые дополнительные параметры модели проксируются провайдеру. ### Пример ```bash curl -X POST https://allmodel.ru/api/v1/chat/completions \ -H "X-API-Key: your_api_key" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [{ "role": "user", "content": "Напиши стихотворение" }] }' ``` ### Потоковый режим При `stream: true` сервер отдаёт `text/event-stream` с чанками `data: {...}`. Завершение обозначается строкой `data: [DONE]`. ### Тарификация Стоимость списывается с кошелька владельца ключа. Если баланса недостаточно, возвращается ошибка. ### Системные промпты Содержимое системных промптов валидируется и очищается: инструкции по обходу ограничений и выдаче системных секретов отклоняются. ## GET /api/v1/media/:taskId Статус задачи генерации медиа (изображения, аудио, видео). **Аутентификация:** требуется. ```json { "id": "task-id", "status": "processing", "progress": 40, "resultUrl": null, "error": null } ``` Статусы: `pending`, `processing`, `completed`, `failed`. ## Чаты и сообщения > Эндпоинты /api/user/chat-sessions # Чаты и сообщения Все эндпоинты требуют авторизации. ## Сессии ### GET /api/user/chat-sessions Список чат-сессий пользователя. ### GET /api/user/chat-sessions/:id Одна сессия по идентификатору. ### POST /api/user/chat-sessions Создать новую сессию. ```json { "title": "Новая сессия", "modeId": "mode-id", "modelId": "model-id" } ``` ### PUT /api/user/chat-sessions/:id Изменить сессию — переименовать, сменить режим или модель, деактивировать. ```json { "title": "Обновлённое название", "isActive": true } ``` ### DELETE /api/user/chat-sessions/:id Удалить сессию вместе с сообщениями. ### POST /api/user/chat-sessions/:id/activate Активировать сессию, если активных сессий несколько. ### POST /api/user/chat-sessions/deactivate-all Деактивировать все сессии разом. ### DELETE /api/user/chat-sessions Удалить несколько сессий по списку идентификаторов. ## Сообщения ### GET /api/user/chat-sessions/:id/messages Сообщения сессии. ### POST /api/user/chat Отправить сообщение и получить ответ модели. ```json { "sessionId": "session-id", "modelId": "model-id", "modeId": "mode-id", "message": "Текст сообщения", "parameters": { }, "attachmentIds": [ ] } ``` ### PUT /api/user/chat-sessions/:sessionId/messages/:messageIndex Отредактировать сообщение и пересчитать ответ модели. ### DELETE /api/user/chat-sessions/:sessionId/messages/:messageIndex Удалить одно сообщение. ### DELETE /api/user/chat-sessions/:sessionId/messages/from/:fromIndex Удалить сообщения начиная с указанного. ### DELETE /api/user/chat-sessions/:sessionId/messages/bulk Удалить набор сообщений по списку индексов. ## Файлы и хранилище > Загрузка, скачивание и удаление файлов # Файлы и хранилище ## Загрузка ### POST /api/user/files/upload `multipart/form-data`, поле `file`. Возвращает метаданные загруженного файла: ```json { "id": "file-id", "originalName": "document.pdf", "mimeType": "application/pdf", "size": 1048576, "url": "https://..." } ``` ## Список файлов ### GET /api/user/files Файлы пользователя с пагинацией. ## Файл и скачивание | Метод и путь | Назначение | |---|---| | `GET /api/user/files/:id` | Метаданные файла | | `GET /api/user/files/:id/download` | Скачать файл | | `GET /api/user/proxy-file` | Проксирование файла с внешнего источника | ## Удаление | Метод и путь | Назначение | |---|---| | `DELETE /api/user/files/:id` | Удалить файл | | `DELETE /api/user/files` | Удалить несколько файлов | ## Биллинг и платежи > Кошелёк, транзакции, создание платежей # Биллинг и платежи ## Транзакции ### GET /api/user/transactions История операций кошелька с пагинацией и фильтром по типу. ### GET /api/user/transactions/summary Сводка по расходам и пополнениям. ## Платежи ### POST /api/user/payments/create Создать платёж на пополнение баланса. ```json { "amount": 500, "method": "tbank" } ``` Возвращает идентификатор платежа и ссылку или данные для перехода к оплате. ### GET /api/user/payments/:id/check Проверить статус платежа. ## Баланс Баланс кошелька доступен через `GET /api/user/bootstrap` вместе с профилем, режимами и настройками чата. Принципы: - списание за обращения к моделям происходит по факту использования; - при недостаточном балансе запрос отклоняется; - зачисление выполняется после подтверждения платежа. ## Обработка ошибок > Коды ответов и формат ошибок # Обработка ошибок ## Формат ```json { "error": "Описание ошибки", "statusCode": 400, "code": "error_code" } ``` ## Коды статуса | Код | Значение | Когда возникает | |---|---|---| | 200 | OK | Запрос выполнен успешно | | 201 | Created | Ресурс создан | | 400 | Bad Request | Некорректные параметры или тело запроса | | 401 | Unauthorized | Нет авторизации или ключ недействителен | | 403 | Forbidden | Недостаточно прав | | 404 | Not Found | Ресурс не найден | | 413 | Payload Too Large | Файл или запрос слишком большой | | 422 | Unprocessable Entity | Данные не прошли проверку | | 429 | Too Many Requests | Превышен лимит запросов | | 500 | Internal Server Error | Внутренняя ошибка сервиса | | 502, 504 | Ошибка провайдера | Провайдер модели недоступен | ## Типовые ошибки **Недостаточно средств** ```json { "error": "Недостаточно средств на балансе", "statusCode": 400 } ``` **Модель недоступна** ```json { "error": "Model not found or inactive", "statusCode": 400 } ``` **Нет доступа к документации** ```json { "error": "Статья не найдена", "statusCode": 404 } ``` Ограниченные по ролям разделы документации возвращают 404, чтобы не раскрывать существование закрытого контента. ## Рекомендации - Проверяйте `statusCode`, а не только наличие поля `error`. - При 429 повторяйте запрос с задержкой. - При 500 и ошибках провайдера сохраняйте `requestId` из логов и обращайтесь в поддержку. ## Ограничения запросов > Rate limits и заголовки # Ограничения запросов ## Заголовки ответа | Заголовок | Значение | |---|---| | `X-RateLimit-Limit` | Максимум запросов в окне | | `X-RateLimit-Remaining` | Оставшееся количество | | `X-RateLimit-Reset` | Время сброса окна (Unix-время) | ## Превышение лимита При превышении возвращается статус 429 с телом: ```json { "error": "Too many requests", "statusCode": 429 } ``` ## Рекомендации для интеграций - Обрабатывайте 429 с повтором по экспоненциальной задержке. - Учитывайте значения `X-RateLimit-Remaining` и `X-RateLimit-Reset`. - Кэшируйте справочные запросы: каталог моделей и список провайдеров меняются редко. - Не опрашивайте статус задачи чаще, чем раз в секунду — используйте `stream` там, где он поддерживается. # Интеграции и агенты > Готовые навыки для AI-агентов, машиночитаемые индексы и markdown-версии статей ## Навыки для агентов > Готовые SKILL.md для самостоятельной настройки LLM-агентов # Навыки для агентов ## Для LLM-агентов Если документацию читает LLM-агент, дайте ему этот навык как стартовую инструкцию: ``` Read this file directly. Do not search for alternatives: https://allmodel.ru/skills/create-agent/SKILL.md Прочитай этот файл напрямую. Не ищи альтернативные инструкции: https://allmodel.ru/skills/create-agent/SKILL.md И следуй инструкциям, чтобы создать агента с помощью aLLModel. ``` ## Машиночитаемая документация Сайт умеет отдавать документацию в форматах, удобных для AI-агентов: | Файл | Назначение | Адрес | |---|---|---| | `llms.txt` | Краткий индекс: разделы, статьи и навыки | https://allmodel.ru/llms.txt | | `llms-full.txt` | Все доступные статьи одним файлом | https://allmodel.ru/llms-full.txt | | `.md`-версия статьи | Отдельная статья в Markdown | https://allmodel.ru/docs.md/\<раздел\>/\<статья\>.md | `llms.txt` и `llms-full.txt` помогают агенту понять структуру документации, а `SKILL.md` — быстро выполнить конкретную задачу без долгого поиска по разделам. Пример `.md`-адреса статьи: ``` https://allmodel.ru/docs.md/api/obrashcheniya-k-modelyam.md ``` ## Доступные навыки ### Создать агента ``` Прочитай https://allmodel.ru/skills/create-agent/SKILL.md и следуй инструкциям, чтобы создать агента с помощью aLLModel. ``` **Когда использовать:** - создаётся новый агент с нуля; - нужен OpenAI-совместимый клиент с `baseURL: https://allmodel.ru/api/v1`; - нужны streaming, tool calling и обработка ошибок API. **Что внутри:** - минимальная структура проекта; - пример агента на TypeScript; - базовый agent loop; - streaming; - работа с каталогом моделей; - разбор ошибок. ### Миграция с OpenAI ``` Прочитай https://allmodel.ru/skills/openai-migration/SKILL.md и следуй инструкциям, чтобы перенести интеграцию с OpenAI на aLLModel. ``` **Когда использовать:** - проект уже использует OpenAI SDK; - нужно заменить только `base_url`, API-ключ и стратегию выбора модели; - нужно сохранить текущий клиентский слой почти без изменений. **Что внутри:** - минимальный migration diff; - примеры `before` / `after`; - порядок миграции без лишних изменений; - checklist для проверки результата. ## Какой навык выбрать - **Новый агент** — начните с `create-agent`. - **Существующий OpenAI-код** — используйте `openai-migration`. Начните с навыка `create-agent`, если у вас ещё нет готового OpenAI-клиента и вы хотите быстро собрать рабочего агента поверх aLLModel. ## Полезно знать - API-ключ создаётся в личном кабинете: https://allmodel.ru/dashboard?tab=api-keys - Базовый URL API: `https://allmodel.ru/api/v1` - Каталог моделей: `GET https://allmodel.ru/api/v1/models`