Начало работы с Yeap LLM API через OpenAI SDK
Yeap LLM API совместим с OpenAI: используйте привычный SDK, указав https://llm.yeap.cloud/v1 в base_url. Создание ключа, примеры на Python и Node.js, потоковые ответы, эмбеддинги, квоты и ограничения моделей и IP для ключей.
Yeap LLM API — шлюз к моделям, совместимый с OpenAI. Цель проста: не нужно изучать новый SDK или переписывать код. Используйте существующий OpenAI SDK, измените base_url на https://llm.yeap.cloud/v1, укажите API-ключ Yeap — и можно начинать. Оплата начисляется за токены и списывается с баланса вашей учётной записи Yeap, общего для всех используемых вами продуктов Yeap.
Доступные эндпоинты
| Эндпоинт | Назначение |
|---|---|
POST /v1/chat/completions | Генерация ответов в чате с поддержкой потоковой передачи |
POST /v1/completions | Дополнение текста |
POST /v1/embeddings | Эмбеддинги |
POST /v1/images/generations | Генерация изображений |
POST /v1/audio/transcriptions | Преобразование речи в текст |
GET /v1/models | Список моделей, доступных вашему ключу |
Для аутентификации на каждом эндпоинте используется Authorization: Bearer <key>. Модели и цены меняются со временем; актуальные сведения всегда доступны через GET /v1/models или в списке моделей в консоли, поэтому в примерах ниже используются заполнители вместо конкретных названий моделей.
Шаг 1: создайте API-ключ
Войдите на console.yeap.cloud, откройте LLM → Токены и создайте ключ. Можно задать:
- Имя: рекомендуем указывать проект или окружение, например
blog-summarizer-prod; - Квота: лимит расходов для ключа либо отсутствие ограничений;
- Ограничения моделей: разрешить ключу доступ только к определённым моделям;
- Ограничения IP: принимать запросы только с определённых IP;
- Срок действия: после указанного времени ключ автоматически перестанет работать.
Ключи начинаются с sk-; сохраните ключ сразу после создания. Используйте отдельный ключ для каждого проекта и окружения, а для ключей вне производственной среды задавайте небольшую квоту, чтобы ограничить последствия утечки.
Храните ключ в переменной окружения, а не в репозитории:
export YEAP_API_KEY="sk-..."
Шаг 2: проверьте подключение через curl
curl https://llm.yeap.cloud/v1/models \
-H "Authorization: Bearer $YEAP_API_KEY"
В ответе JSON значение id каждого элемента массива data — это имя модели, которое можно использовать в запросах.
Шаг 3: Python
Установите официальный SDK командой pip install openai.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["YEAP_API_KEY"],
base_url="https://llm.yeap.cloud/v1",
)
resp = client.chat.completions.create(
model="your-model-id", # pick one from /v1/models
messages=[
{"role": "system", "content": "You are a concise technical assistant."},
{"role": "user", "content": "Explain what a CDN is in one sentence."},
],
)
print(resp.choices[0].message.content)
print(resp.usage) # prompt_tokens / completion_tokens / total_tokens
Потоковая передача
В чат-приложениях обычно требуется показывать ответ по мере генерации. Задайте stream=True, и ответ будет поступать частями в виде событий Server-Sent Events:
stream = client.chat.completions.create(
model="your-model-id",
messages=[{"role": "user", "content": "Write a short poem about cache hits."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Эмбеддинги
emb = client.embeddings.create(
model="your-embedding-model-id",
input=["Yeap CDN supports HTTP/3", "How to purge the cache"],
)
vectors = [item.embedding for item in emb.data]
print(len(vectors), len(vectors[0]))
Генерация изображений и транскрипция
Эндпоинты изображений и аудио также используют стандартные методы SDK; достаточно выбрать модель соответствующего типа:
# Image generation
img = client.images.generate(
model="your-image-model-id",
prompt="A minimalist illustration of a server room",
size="1024x1024",
)
print(img.data[0].url or "base64 image returned")
# Speech to text
with open("meeting.mp3", "rb") as f:
tr = client.audio.transcriptions.create(
model="your-transcription-model-id",
file=f,
)
print(tr.text)
Модели могут возвращать изображения как URL или как base64, поэтому в коде стоит обрабатывать оба варианта.
Как сделать расходы предсказуемыми
- Задавайте
max_tokens. Выходные токены обычно стоят дороже входных. Разумное ограничение длины ответа для каждого типа запросов помогает избежать неожиданных расходов из-за слишком многословной модели. - Сокращайте контекст. В диалогах вся история отправляется заново на каждом шаге. Сжатое изложение или обрезка старых сообщений существенно сокращает число входных токенов.
- Подбирайте модель под задачу. Классификация, извлечение данных и переформулирование часто хорошо работают на небольших моделях; оставляйте крупные для задач, действительно требующих рассуждений. Сравните несколько моделей в Playground, прежде чем выбрать модель по умолчанию.
- Используйте квоты ключей как страховку. Даже если из-за ошибки код начнёт вызывать API в цикле, квота ключа не даст расходам расти бесконтрольно.
Шаг 4: Node.js
Установите SDK командой npm install openai.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.YEAP_API_KEY,
baseURL: "https://llm.yeap.cloud/v1",
});
const stream = await client.chat.completions.create({
model: "your-model-id",
messages: [{ role: "user", content: "List three ways to reduce API latency." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
Переключение без изменения кода
Официальные SDK OpenAI читают переменные окружения OPENAI_BASE_URL и OPENAI_API_KEY. Если инструмент или скрипт уже использует OpenAI SDK и вы не хотите менять код, достаточно изменить окружение:
export OPENAI_BASE_URL="https://llm.yeap.cloud/v1"
export OPENAI_API_KEY="$YEAP_API_KEY"
То же работает для большинства сторонних инструментов с поддержкой собственного API-эндпоинта: задайте адрес https://llm.yeap.cloud/v1 и укажите свой ключ Yeap.
Ошибки и повторные попытки
В производственной среде учитывайте возможные сбои:
- 401: ключ недействителен, срок его действия истёк либо запрос пришёл с адреса вне списка разрешённых IP ключа. Проверьте настройки ключа.
- Недостаточная квота: запросы отклоняются, когда квота ключа исчерпана или на балансе учётной записи недостаточно средств; причина указана в сообщении об ошибке. Увеличьте квоту ключа или пополните баланс в консоли.
- 429 и 5xx: обычно это временные ошибки, при которых следует повторять запросы с увеличением интервала. SDK OpenAI выполняют повторные попытки автоматически; их число настраивается через
max_retries, а тайм-аут отдельного запроса — черезtimeout.
client = OpenAI(
api_key=os.environ["YEAP_API_KEY"],
base_url="https://llm.yeap.cloud/v1",
max_retries=3,
timeout=60.0,
)
Мониторинг использования
Для каждого запроса в журнал записываются модель, число токенов и стоимость. В разделе LLM консоли можно просматривать журналы запросов и статистику, а также расходы по каждому ключу, что упрощает раздельный учёт проектов. Чтобы сравнить модели до написания кода, попробуйте их в Playground консоли прямо в браузере.
Итоги
Для начала работы с Yeap LLM API нужны три вещи: ключ, base_url и имя модели из /v1/models. Весь остальной код у вас уже написан.
Создавайте проекты на Yeap Cloud
Бесплатные тарифы DNS и CDN для каждого нового аккаунта.
Читать дальше

PHP2Shell (CVE-2026-109618/109619): как мы закрыли уязвимость виртуальным патчем на границе сети
Два критических бюллетеня PHP позволяют выполнить код удалённо без аутентификации через аварийный выход при нехватке памяти и устаревшее глобальное состояние. Рассказываем, как работают уязвимости, что Yeap WAF блокирует на границе с первого дня и что вам всё ещё нужно исправить на своём источнике.
Практическое руководство по очистке кэша: от ключей до отдельных вариантов
Очистили кэш, но по-прежнему получаете попадания? Чаще всего причина в ключе кэша. Как Yeap CDN формирует ключи, как работают режимы строки запроса и что именно удаляет очистка по URL с параметрами и без них.
Новые пограничные узлы Yeap CDN: почему мы выбрали Rust
Мы заменили пограничный компонент CDN собственной реализацией на Rust и Pingora. Что это даёт вашему сайту: более быстрое подключение, применение конфигурации за секунды, усиленную изоляцию и безопасность.