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

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