Это лаконичное fastapi приложение (прокси), которое транслирует запросы OpenAI<->Yandex Cloud Foundational Models, чтобы сервисы Yandex Cloud можно было использовать в сторонних фреймворках через OpenAI SDK.
Например:
import openai
# С аутентификацией запроса
client = openai.Client(api_key=f"{FOLDER_ID}@{API_KEY_OR_IAM_KEY}", base_url=f"{proxy_url}/v1/")
# Или с автоматической аутентификацией
client = openai.Client(api_key=f"sk-my", base_url=f"{proxy_url}/v1/")
# генерация текста
client.chat.completions.create(
messages=[
{
"role": "user",
"content": 'В каком году был основан Яндекс?',
}
],
model="yandexgpt/latest",
# или f'gpt://{FOLDER_ID}/yandexgpt/latest'
# или f'ds://{MODEL_ID}'
max_tokens=2000,
temperature=0.1,
)
# эмбеддинги текста
client.embeddings.create(input = ['В каком году был основан Яндекс?'], model='text-search-doc/latest').data[0].embedding # или model=f'emb://{FOLDER_ID}/text-search-doc/latest'
Подробные примеры содержатся в файле test.py
.
- Все модели генерации текста, uri которых начинаются с
gpt://
- Все Embedding модели, uri которых начинаются с
emb://
- Все дообученные модели генерации текста, uri которых начинаются с
ds://
- Все дообученные Embedding модели, uri которых начинаются с
ds://
(пока такого функционала нет в Yandex Cloud)
Классификаторы, function calling, logprobs не поддерживаются.
-
На стороне прокси. Если опенаи ключ в запросе указать
sk-my
,.env
илиDockerfile
. -
На стороне пользователя. Если в данную проксю будет ходит несколько пользователей, то в качестве OpenAI ключа указывайте folder_id и статический апи-ключ или IAM-ключ, разделяя их символом
@
(напримерfolder_id@iam_key
).
Быстрый запуск на vercel:
- Если вам нужен доступ к ресурсам с автоматической аутентификацией, заполните данные параметры (in
.env
file, Dockerfile or cloud environment):FOLDER_ID
: your Yandex Cloud folder idYANDEX_API_KEY
: your Yandex Cloud API key
- Запустите приложение:
docker-compose up -d --build
- или (команды аналогичны для
podman
)docker build -t image_name .
, затемdocker run -d -p 127.0.0.1:8000:8000 --name container_name image_name
- или (для локального тестирования)
pip install -r requirements.txt
, затемpython main.py
Если у вас возникли проблемы по работе с этим приложением, пожалуйста, создайте issue в этом репозитории, он активно поддерживается.
- Чтобы ходить в дообученную gpt, пользователь/сервисный аккаунт должны быть участниками проекта DataShpere с ролью
developer
- При деплое через serverless платформы (vervel, yc functions) не забудьте выставить timeout 30 секунд.