Self-hosting
Конфигурация (.env файл)
Ниже каждму параметру указано значение по умолчанию.
Логирование
-
LOG_TYPE=dev
- конфигурация вывода логов. Один из:dev
,yc
,volume
,stdout
.dev
- вывод в консоль с цветной подсветкойyc
- логирование в консоль в формате json для Yandex Cloud Loggingvolume
- логирование .log файл в монтированный том контейнера /logsstdout
- логирование в stdout
-
LOG_LEVEL=DEBUG
- уровень логирования
Флаг для отключения логирования в Yandex Cloud
YC_FOMO_LOG_POLICY=true
- значение для заголовка x-data-logging-enabled по умолчанию, подробнее https://yandex.cloud/ru/docs/foundation-models/operations/disable-logging
Флаги для включения ретраев
Foundational Models иногда возвращает 429 ошибку даже при не превышении квоты. Рекомендуется включить ретраи для эндпоинтов completions и embeddings.
YC_COMPLETION_RETRIES=True
- включение ретраев для эндпоинта completionsYC_EMBEDDINGS_RETRIES=True
- включение ретраев для эндпоинта embeddings
Флаги для настройки пакетной обработки для эндпоинта embeddings
Foundational Models не поддерживает синхронную пакетную обработку эмбеддингов. Для совместимости с AIOps движками адаптер реализует пакетную обработку эмбеддингов, отправляя до N запросов в течении определенного окна времени, чтобы не превысить вашу квоту в Yandex Cloud, пока не будет обработан весь батч.
YC_EMBEDDINGS_RATE_LIMIT=1
- ограничение на количество запросов в секундуYC_EMBEDDINGS_TIME_WINDOW=1
- временное окно для ограничения запросовYC_EMBEDDINGS_MAX_RETRIES=3
- максимальное количество ретраевYC_EMBEDDINGS_BACKOFF_FACTOR=2
- коэффициент для расчета времени ожидания между ретраями
Настройка эндпоинтов
*YC_SERVICE_URL=https://llm.api.cloud.yandex.net
- url сервиса Yandex GPT
Настройка маппинга моделей
Указывайте модели в формате OPENAI_MODEL_NAME:YC_MODEL_NAME/YC_MODEL_VERSION
.
YC_COMPLETIONS_MODEL_MAP=gpt-4o:yandexgpt/latest,gpt-4o-mini:yandexgpt-lite/latest,gpt-3.5:yandexgpt/latest,gpt-3.5-turbo:yandexgpt/latest,gpt-5:yandexgpt/latest,llama-3.1-8b-instruct:llama-lite/latest,llama-3.1-70b-instruct:llama/latest
YC_EMBEDDINGS_MODEL_MAP=text-embedding-3-large:text-search-doc/latest,text-embedding-3-small:text-search-doc/latest,text-embedding-ada-002:text-search-doc/latest
Конфигурации для всех публичных эндпоинтов
LOG_TYPE=yc
LOG_LEVEL=INFO
YC_FOMO_LOG_POLICY=true
YC_COMPLETION_RETRIES=True
YC_EMBEDDINGS_RETRIES=True
YC_EMBEDDINGS_RETRIES=True
YC_EMBEDDINGS_RATE_LIMIT=1
YC_EMBEDDINGS_TIME_WINDOW=1
YC_EMBEDDINGS_MAX_RETRIES=3
YC_EMBEDDINGS_BACKOFF_FACTOR=2
YC_SERVICE_URL=https://llm.api.cloud.yandex.net
YC_COMPLETIONS_MODEL_MAP=gpt-4o:yandexgpt/latest,gpt-4o-mini:yandexgpt-lite/latest,gpt-3.5:yandexgpt/latest,gpt-3.5-turbo:yandexgpt/latest,gpt-5:yandexgpt/latest,llama-3.1-8b-instruct:llama-lite/latest,llama-3.1-70b-instruct:llama/latest
YC_EMBEDDINGS_MODEL_MAP=text-embedding-3-large:text-search-doc/latest,text-embedding-3-small:text-search-doc/latest,text-embedding-ada-002:text-search-doc/latest
CLASSIFIER_DETECTION=true
TUNED_CLASSIFIER_CALL_SEQ=///Classify next text///
FS_CLASSIFIER_CALL_SEQ=///Classify next text with few shot model///
CLASSIFIER_MODE=best_label
CLASSIFIER_THRESHOLD=0
Способы разворачивания
Запуск на vercel
После успешного запуска приложения, рекомендуется настроить максимальное время выполения функций до 60 секунд.
Запуск на serverless контейнерах через github actions
- Используется данный github action. Прочитайте readme.md, action.yml и создайте сервисный аккаунт с необходимыми ролями.
- Создайте container registry json-ключ для сервисного аккаунта, который будет использоваться для аутентификации в Yandex Cloud.
- Создайте serverless контейнер в Yandex Cloud. Имя контейнера вам пригодится позже.
- Сделайте форк репозитория адаптера. Добавьте содержимое json-ключа в секреты github репозитория. Создайте свой файл .github/workflows/deploy-sls-my-adapter.yml.
- Измените содержимое файла в соответствии с вашими требованиями. Запуште изменения.
Сразу после этого github actions запустится и развернет ваш адаптер. Вы можете использовать его как публичный эндпоинт, или настроить интеграцию с api-gateway, чтобы присвоить ему свой домен.
Локальный запуск
Запустите приложение:
- Docker:
docker-compose up -d --build
- Python:
pip install -r requirements.txt
, затемpython main.py
Приложение будет доступно по адресу 127.0.0.1:9041
Проверка работы
curl -X POST <PROXY_URL>/v1/chat/completions \
-H "Authorization: Bearer <FOLDER>@<IAM_OR_API>" \
-H "Content-Type: application/json" \
-d '{
"model": "yandexgpt/latest",
"messages": [
{"role": "user", "content": "В каком году Гагарин полетел в космос?"},
{"role": "assistant", "content": "В 1961."},
{"role": "user", "content": "Как назывался корабль?"}
]
}'