LLM API
Chat, embeddings и rerank — как OpenAI API
Тот же контракт, что у OpenAI: chat/completions, embeddings и rerank. Модели Qwen, BGE-M3 и другие — в облаке A5X.
Базовый URL
https://llm.a5x.pro/v1Authorization: Bearer YOUR_API_KEY. Ключ — в кабинете A5X Cloud LLM.
Быстрый старт
curl -X POST "https://llm.a5x.pro/v1/chat/completions" \
-H " Bearer YOUR_API_KEY" \
-H " application/json" \
-d '{
"model": "qwen36-35b-a3b",
"messages": [
{
"role": "system",
"content": "Ты аналитик звонков. На вход — segments из Speech API (start, end, speaker, text). Верни JSON: summary, objections, commitments."
},
{
"role": "user",
"content": "{\"segments\":[{\"start\":0.0,\"end\":8.2,\"speaker\":\"SPEAKER_00\",\"text\":\"Добрый день, звоню по заявке на демо речевой аналитики.\"},{\"start\":8.4,\"end\":11.1,\"speaker\":\"SPEAKER_01\",\"text\":\"Да, слушаю.\"},{\"start\":11.3,\"end\":19.5,\"speaker\":\"SPEAKER_00\",\"text\":\"Интересовала транскрибация для колл-центра. Что приоритетнее — виджет или API?\"},{\"start\":19.7,\"end\":27.0,\"speaker\":\"SPEAKER_01\",\"text\":\"Скорее API, у нас 200 операторов. И нужна интеграция с CRM.\"},{\"start\":27.2,\"end\":34.8,\"speaker\":\"SPEAKER_00\",\"text\":\"Понял. Пришлю расчёт по минутам и кейс из ритейла сегодня до 18:00.\"},{\"start\":35.0,\"end\":37.2,\"speaker\":\"SPEAKER_01\",\"text\":\"Хорошо, жду на почту.\"}]}"
}
],
"temperature": 0.7,
"chat_template_kwargs": { "enable_thinking": false }
}'Модели
| Поле | Тип | Описание |
|---|---|---|
qwen36-35b-a3b | chat | Основная chat-модель. |
bge-m3 | embedding | Эмбеддинги для поиска и RAG. |
bge-m3-rr | rerank | Ранжирование документов по запросу. |
llama-3-* / mistral-* | chat | По запросу на SMB / Enterprise. |
Streaming
Добавьте "stream": true — ответ придёт как SSE (data: {...}), как в OpenAI.
Chat Completions
POST
https://llm.a5x.pro/v1/chat/completionsОтвет модели по истории сообщений. Сегменты Speech (start, end, speaker, text) передавайте строкой в messages[].content — отдельного поля segments нет.
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
model* | string | ID модели, например qwen36-35b-a3b. |
messages* | object[] | { role, content } — role: system | user | assistant. Для анализа звонка: JSON segments из Speech API в content. |
temperature | number | 0–2. Для Qwen instruct: 0.7 вместе с top_p=0.8, top_k=20, presence_penalty=1.5. |
max_tokens | integer | Лимит токенов ответа. |
stream | boolean | true — SSE-поток. |
chat_template_kwargs.enable_thinking | boolean | false — без блока «размышлений» у reasoning-моделей. |
Примеры запросов
curl -X POST "https://llm.a5x.pro/v1/chat/completions" \
-H " Bearer YOUR_API_KEY" \
-H " application/json" \
-d '{
"model": "qwen36-35b-a3b",
"messages": [
{
"role": "system",
"content": "Ты аналитик звонков. На вход — segments из Speech API (start, end, speaker, text). Верни JSON: summary, objections, commitments."
},
{
"role": "user",
"content": "{\"segments\":[{\"start\":0.0,\"end\":8.2,\"speaker\":\"SPEAKER_00\",\"text\":\"Добрый день, звоню по заявке на демо.\"},{\"start\":8.4,\"end\":11.1,\"speaker\":\"SPEAKER_01\",\"text\":\"Да, слушаю.\"},{\"start\":11.3,\"end\":19.5,\"speaker\":\"SPEAKER_00\",\"text\":\"Нужна транскрибация для колл-центра.\"}]}"
}
],
"temperature": 0.7,
"chat_template_kwargs": { "enable_thinking": false }
}'Примеры ответов
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"model": "qwen36-35b-a3b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "{\"summary\":\"Клиент интересуется API транскрибации для колл-центра на 200 операторов и интеграцией с CRM. Договорились прислать расчёт и кейс до 18:00.\",\"objections\":[],\"commitments\":[\"Отправить расчёт по минутам\",\"Приложить ритейл-кейс на e-mail\"]}"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 312,
"completion_tokens": 86,
"total_tokens": 398
}
}Коды ответов
| HTTP | error.code | Ситуация |
|---|---|---|
| 200 | — | Успех (или SSE при stream=true). |
| 400 | invalid_request_error | Неверное тело или неизвестная model. |
| 401 | invalid_api_key | Нет ключа или он неверный. |
| 429 | rate_limit_exceeded | Лимит запросов — повторите позже. |
| 502 | api_error | Временная ошибка — повторите запрос. |
Embeddings
POST
https://llm.a5x.pro/v1/embeddingsВекторы текста
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
model* | string | bge-m3 или другая embedding-модель. |
input* | string | string[] | Один текст или массив строк. |
Примеры запросов
curl -X POST "https://llm.a5x.pro/v1/embeddings" \
-H " Bearer YOUR_API_KEY" \
-H " application/json" \
-d '{
"model": "bge-m3",
"input": "Политика возврата товара"
}'200 OK
{
"object": "list",
"model": "bge-m3",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [0.012, -0.034, 0.089]
}
],
"usage": { "prompt_tokens": 12, "total_tokens": 12 }
}Rerank
POST
https://llm.a5x.pro/v1/rerankСортирует документы по релевантности запросу. До 1000 непустых строк в texts.
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
model* | string | bge-m3-rr или другая rerank-модель. |
query* | string | Поисковый запрос. |
texts* | string[] | Документы для ранжирования (1–1000). |
raw_scores | boolean | Вернуть сырые scores. |
truncate | boolean | Обрезать слишком длинные тексты. |
Два кандидата
curl -X POST "https://llm.a5x.pro/v1/rerank" \
-H " Bearer YOUR_API_KEY" \
-H " application/json" \
-d '{
"model": "bge-m3-rr",
"query": "условия возврата",
"texts": [
"Возврат в течение 14 дней при сохранении чека",
"Доставка по России 3–5 дней"
],
"raw_scores": true
}'200 OK
[
{ "index": 0, "score": 0.98 },
{ "index": 1, "score": 0.12 }
]Коды ответов
| HTTP | error.code | Ситуация |
|---|---|---|
| 200 | — | Массив `{ index, score }` или объект с results. |
| 400 | invalid_request_error | Неверное тело, пустые texts или неизвестная model. |
| 401 | invalid_api_key | Нет ключа или он неверный. |
| 429 | rate_limit_exceeded | Лимит запросов — повторите позже. |
| 502 | api_error | Временная ошибка — повторите запрос. |