Перейти к основному содержимому

LLM: модели и chat completions

Все эндпоинты ниже относятся к префиксу /v2 и используют ту же HMAC‑аутентификацию, что и остальной API (X-Public-Key, X-Timestamp, X-Signature). Подробнее — Аутентификация.

Ответы POST …/chat/completions отдаются в потоковом режиме (text/event-stream / фрагментированный JSON одним телом — как в продакшене), в стиле OpenAI: в итоге в теле присутствуют id, object, created, model, choices, usage. Точная форма стрима описана в OpenAPI.

Список моделей — GET /v2/ai/models

Возвращает массив доступных для чата моделей: имя и описание.

[Контракт: listAIModelsV2]
TS=$(date +%s)
SIG=$(printf "%s\n%s" "$API_PUBLIC" "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')

curl -sS "https://api.transcription.aiesa.ru/api/v2/ai/models" \
-H "X-Public-Key: $API_PUBLIC" \
-H "X-Timestamp: $TS" \
-H "X-Signature: $SIG"

Пример ответа 200:

{
"models": [
{ "name": "aiesa-mini", "description": "…" },
{ "name": "aiesa-pro", "description": "…" }
]
}

Общий чат — POST /v2/chat/completions

OpenAI‑совместимый chat completion: массив messages с объектами { "role", "content" } (role: system | user | assistant). Поле model обязательно: aiesa-mini или aiesa-pro. Опционально: temperature (0–1), max_tokens.

[Контракт: analyzeChatCompletion]
TS=$(date +%s)
BODY='{"model":"aiesa-mini","messages":[{"role":"user","content":"Привет"}]}'
SIG=$(printf "%s\n%s" "$API_PUBLIC" "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')

curl -sS -X POST "https://api.transcription.aiesa.ru/api/v2/chat/completions" \
-H "Content-Type: application/json" \
-H "X-Public-Key: $API_PUBLIC" \
-H "X-Timestamp: $TS" \
-H "X-Signature: $SIG" \
-d "$BODY"

Чат по тексту транскрипции — POST /v2/transcriptions/{transcriptionId}/chat/completions

Запрос к LLM в контексте готовой транскрипции (status: completed, есть текст). В тело передаётся messages — массив строк (тексты пользователя). Текст транскрипции подмешивается на стороне API. Контекст диалога хранится отдельно для каждой пары (транскрипция + модель).

Опционально: modelaiesa-mini или aiesa-pro (по умолчанию aiesa-mini), temperature (0–2), maxTokens или max_tokens.

Поведение и биллинг:

  • Для aiesa-mini: 5 бесплатных запросов на транскрипцию; далее — списание по тарифу.
  • Для aiesa-pro: запросы платные.
  • Если при создании транскрипции был передан ai_prompt, он учитывается как один из пяти бесплатных запросов для aiesa-mini.
[Контракт: transcriptionChatCompletion]
TS=$(date +%s)
BODY='{"messages":["Кратко перечисли ключевые решения из встречи"],"model":"aiesa-mini"}'
SIG=$(printf "%s\n%s" "$API_PUBLIC" "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')

curl -sS -X POST "https://api.transcription.aiesa.ru/api/v2/transcriptions/2f0b2f2a-5b07-4c3e-8a42-5c8a3f2b1e9d/chat/completions" \
-H "Content-Type: application/json" \
-H "X-Public-Key: $API_PUBLIC" \
-H "X-Timestamp: $TS" \
-H "X-Signature: $SIG" \
-d "$BODY"

Типичные ошибки: 400 — транскрипция не готова к чату; 402 — недостаточно средств; 403 — нет доступа; 404 — транскрипция не найдена.