AiHummer доки
v1.0.x
RU EN

API Chat Completions

v1.0.x · обновлено 2026-06-26

AiHummer предоставляет единый OpenAI-совместимый HTTP-эндпоинт для текстовых ходов: POST /v1/chat/completions. Любой клиент или SDK, уже умеющий работать с форматом OpenAI Chat Completions, может обращаться к AiHummer, поменяв только базовый URL и ключ — никакого специфичного для AiHummer кода не нужно.

Аутентификация

Запросы аутентифицируются персональным API-ключом в виде Bearer-токена. Ключи AiHummer имеют префикс ah- и выпускаются в веб-админке.

POST /v1/chat/completions HTTP/1.1
Host: your-aihummer.example
Authorization: Bearer ah-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

[!TIP] Базовый URL — это адрес вашего gateway. В установке по умолчанию gateway слушает на :8765, поэтому локальный вызов идёт на http://localhost:8765/v1/chat/completions. В продакшене TLS терминируется на обратном прокси перед gateway.

Простой запрос

Отправьте JSON-тело с полем messages — ровно так же, как в OpenAI. Поле model выбирает модель (или агента), настроенную на вашем инстансе.

curl https://your-aihummer.example/v1/chat/completions \
  -H "Authorization: Bearer ah-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "default",
    "messages": [
      { "role": "system", "content": "Ты полезный ассистент." },
      { "role": "user", "content": "Кратко опиши нашу политику возвратов в двух предложениях." }
    ],
    "temperature": 0.3
  }'

Нестриминговый ответ имеет привычную форму Chat Completions:

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1750000000,
  "model": "default",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "Возврат оформляется в течение 14 дней..." },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 0, "completion_tokens": 0, "total_tokens": 0 }
}

Стриминг ответов (SSE)

Установите "stream": true, чтобы получать ответ по частям как Server-Sent Events. Каждое событие несёт дельту chat.completion.chunk, а поток завершается финальной строкой data: [DONE].

curl -N https://your-aihummer.example/v1/chat/completions \
  -H "Authorization: Bearer ah-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "default",
    "stream": true,
    "messages": [
      { "role": "user", "content": "Напиши приветствие в одну строку." }
    ]
  }'

Ответ — это text/event-stream:

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"}}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Привет"}}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":"stop"}]}

data: [DONE]

[!WARNING] /v1/chat/completionsединственный эндпоинт на OpenAI-совместимой поверхности. AiHummer не предоставляет /v1/models и не предоставляет /v1/embeddings — эмбеддинги это внутренняя подсистема, недоступная по HTTP. Не полагайтесь на эти маршруты: они возвращают 404.

Discovery- и schema-поверхности

Хотя листинга /v1/models нет, AiHummer поставляет несколько discovery-поверхностей, чтобы люди и инструменты могли изучать API:

ПутьЧто отдаёт
GET /docsТочка входа в документацию для человека
GET /docs/apiИнтерактивный API Explorer
GET /docs/openapi.jsonСпецификация OpenAPI 3.x
GET /openapi.jsonСпецификация OpenAPI 3.x (алиас в корне)
GET /docs/llm.jsonМашиночитаемая сводка API для LLM-инструментов
GET /llms.txtИндекс llms.txt для LLM-агентов
# Получить спецификацию OpenAPI
curl https://your-aihummer.example/openapi.json

Системные эндпоинты

Два лёгких неаутентифицированных системных эндпоинта помогают проверять живость и часы:

Метод и путьНазначение
GET /v1/pingПростой ответ о живости
GET /v1/timeТекущее серверное время gateway
curl https://your-aihummer.example/v1/ping
curl https://your-aihummer.example/v1/time

Куда дальше