Інтеграція 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"]
Асинхронність через офіційний 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("Розповідай про Москву")
# Асинхронність
result = await model.configure(temperature=0.5).run_async("Запит")
# Потокова передача
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 інтеграція з асинхронністю/потоковою передачею: 2–3 дні
- Інтеграція з іншими сервісами Yandex Cloud: 1 тиждень







