Интеграция YandexGPT API
YandexGPT — LLM от Яндекса через Yandex Cloud (сервис Yandex Foundation Models). Ключевые преимущества для российского рынка: данные обрабатываются в РФ (152-ФЗ compliance), интеграция с другими сервисами Yandex Cloud, поддержка русского языка на уровне нативного.
Настройка доступа
# Необходимо:
# 1. Аккаунт Yandex Cloud с платёжным аккаунтом
# 2. Каталог (folder_id)
# 3. IAM-токен или API-ключ сервисного аккаунта
import requests
import json
FOLDER_ID = "your-folder-id"
IAM_TOKEN = "your-iam-token" # Обновляется каждые 12 часов
# Или API_KEY для сервисного аккаунта
Синхронный запрос через REST API
def yandexgpt_chat(
prompt: str,
model: str = "yandexgpt",
temperature: float = 0.1,
max_tokens: int = 2000,
) -> str:
url = "https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
headers = {
"Authorization": f"Api-Key {API_KEY}",
"x-folder-id": FOLDER_ID,
}
body = {
"modelUri": f"gpt://{FOLDER_ID}/{model}",
"completionOptions": {
"stream": False,
"temperature": temperature,
"maxTokens": max_tokens,
},
"messages": [
{"role": "user", "text": prompt}
]
}
response = requests.post(url, headers=headers, json=body)
response.raise_for_status()
return response.json()["result"]["alternatives"][0]["message"]["text"]
# С system prompt
def yandexgpt_with_system(system: str, user_prompt: str) -> str:
url = "https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
body = {
"modelUri": f"gpt://{FOLDER_ID}/yandexgpt",
"completionOptions": {"stream": False, "temperature": 0.1, "maxTokens": 2000},
"messages": [
{"role": "system", "text": system},
{"role": "user", "text": user_prompt}
]
}
response = requests.post(
url,
headers={"Authorization": f"Api-Key {API_KEY}", "x-folder-id": FOLDER_ID},
json=body,
)
return response.json()["result"]["alternatives"][0]["message"]["text"]
Async через официальный SDK
from yandex_cloud_ml_sdk import YCloudML
sdk = YCloudML(folder_id=FOLDER_ID, auth=API_KEY)
model = sdk.models.completions("yandexgpt")
# Синхронно
result = model.configure(temperature=0.5).run("Расскажи о Москве")
# Async
result = await model.configure(temperature=0.5).run_async("Запрос")
# Streaming
for event in model.configure(temperature=0.5).run_stream("Длинный запрос"):
print(event.alternatives[0].text, end="")
Модели YandexGPT
| Модель | Описание | Контекст |
|---|---|---|
| yandexgpt | Основная модель, баланс качество/скорость | 32K |
| yandexgpt-lite | Лёгкая версия, быстрее и дешевле | 32K |
| yandexgpt-32k | Длинный контекст | 32K |
Эмбеддинги Yandex
# text-search-doc — для индексирования документов
# text-search-query — для поисковых запросов
def get_yandex_embedding(text: str, embedding_type: str = "text-search-doc") -> list[float]:
response = requests.post(
"https://llm.api.cloud.yandex.net/foundationModels/v1/textEmbedding",
headers={"Authorization": f"Api-Key {API_KEY}", "x-folder-id": FOLDER_ID},
json={
"modelUri": f"emb://{FOLDER_ID}/{embedding_type}",
"text": text,
}
)
return response.json()["embedding"]
Практический кейс
Государственное предприятие с требованием обработки данных в РФ. Система автоматического ответа на запросы граждан. YandexGPT выбран из-за:
- Данные не покидают РФ (152-ФЗ)
- Интеграция с Yandex SpeechKit для голосового ввода
- Качество на русском языке
Сроки
- Базовая REST интеграция: 1–2 дня
- SDK интеграция с async/streaming: 2–3 дня
- Интеграция с другими сервисами Yandex Cloud: 1 неделя







