OpenAI-совместимый API
POST /v1/chat/completions
Создаёт chat completion. Полностью совместим с OpenAI Chat Completions API.
Заголовки запроса
| Заголовок | Описание |
|---|---|
Authorization: Bearer sk-ru-… | Обязательно. Ваш API-ключ ru-llm. |
Content-Type: application/json | Обязательно. |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
model | string | Да | ID модели (например, gpt-5.5, claude-sonnet-4-6). См. Модели. |
messages | array | Да | Массив объектов {role, content}. Роли: system, user, assistant. |
stream | boolean | Нет | true для получения потока Server-Sent Events. По умолчанию: false. |
max_tokens | integer | Нет | Максимум генерируемых токенов. |
temperature | number | Нет | Температура сэмплирования 0–2. По умолчанию: 1. |
top_p | number | Нет | Nucleus-сэмплирование. |
stop | string или array | Нет | Стоп-последовательности. |
n | integer | Нет | Число вариантов ответа. По умолчанию: 1. |
Пример без потока
curl https://api.ru-llm.relay2.xyz/v1/chat/completions \ -H "Authorization: Bearer sk-ru-YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.5", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is the capital of France?"} ] }'Ответ:
{ "id": "chatcmpl-abc123", "object": "chat.completion", "created": 1710000000, "model": "gpt-5.5", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "The capital of France is Paris." }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 24, "completion_tokens": 9, "total_tokens": 33 }}Пример с потоком
curl https://api.ru-llm.relay2.xyz/v1/chat/completions \ -H "Authorization: Bearer sk-ru-YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.5", "messages": [{"role": "user", "content": "Count to three."}], "stream": true }'Поток ответа (SSE):
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant","content":""},"index":0}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{"content":"1"},"index":0}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{"content":", 2, 3."},"index":0}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{},"finish_reason":"stop","index":0}]}
data: [DONE]Каждое событие — строка data: с JSON. Поток завершается строкой data: [DONE].
Объект usage
Объект usage в непотоковых ответах сообщает о расходе токенов:
{ "prompt_tokens": 24, "completion_tokens": 9, "total_tokens": 33}Кэшированные входные токены могут указываться в prompt_tokens_details.cached_tokens для поддерживающих моделей.
GET /v1/models
Возвращает список всех моделей, доступных на шлюзе.
curl https://api.ru-llm.relay2.xyz/v1/models \ -H "Authorization: Bearer sk-ru-YOUR_KEY"Ответ:
{ "object": "list", "data": [ {"id": "gpt-5.5", "object": "model", "created": 1715000000, "owned_by": "openai"}, {"id": "claude-sonnet-4-6", "object": "model", "created": 1710000000, "owned_by": "anthropic"} ]}Использование OpenAI SDK
Укажите base_url OpenAI SDK на шлюз и используйте ваш ключ sk-ru-… как API-ключ. Других изменений не требуется.
Python
from openai import OpenAI
client = OpenAI( base_url="https://api.ru-llm.relay2.xyz/v1", api_key="sk-ru-YOUR_KEY",)
response = client.chat.completions.create( model="gpt-5.5", messages=[{"role": "user", "content": "Hello!"}],)print(response.choices[0].message.content)TypeScript / Node.js
import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://api.ru-llm.relay2.xyz/v1', apiKey: 'sk-ru-YOUR_KEY',});
const response = await client.chat.completions.create({ model: 'gpt-5.5', messages: [{ role: 'user', content: 'Hello!' }],});console.log(response.choices[0].message.content);