Перейти к основному содержимому

Self-hosting

Конфигурация (.env файл)

Ниже каждму параметру указано значение по умолчанию.

Логирование

  • LOG_TYPE=dev - конфигурация вывода логов. Один из: dev, yc, volume, stdout.

    1. dev - вывод в консоль с цветной подсветкой
    2. yc - логирование в консоль в формате json для Yandex Cloud Logging
    3. volume - логирование .log файл в монтированный том контейнера /logs
    4. stdout - логирование в stdout
  • LOG_LEVEL=DEBUG - уровень логирования

Флаг для отключения логирования в Yandex Cloud

Флаги для включения ретраев

примечание

Foundational Models иногда возвращает 429 ошибку даже при не превышении квоты. Рекомендуется включить ретраи для эндпоинтов completions и embeddings.

  • YC_COMPLETION_RETRIES=True - включение ретраев для эндпоинта completions
  • YC_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

Deploy with Vercel

После успешного запуска приложения, рекомендуется настроить максимальное время выполения функций до 60 секунд.

Запуск на serverless контейнерах через github actions

  1. Используется данный github action. Прочитайте readme.md, action.yml и создайте сервисный аккаунт с необходимыми ролями.
  2. Создайте container registry json-ключ для сервисного аккаунта, который будет использоваться для аутентификации в Yandex Cloud.
  3. Создайте serverless контейнер в Yandex Cloud. Имя контейнера вам пригодится позже.
  4. Сделайте форк репозитория адаптера. Добавьте содержимое json-ключа в секреты github репозитория. Создайте свой файл .github/workflows/deploy-sls-my-adapter.yml.
  5. Измените содержимое файла в соответствии с вашими требованиями. Запуште изменения.

Сразу после этого 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": "Как назывался корабль?"}
]
}'