Infrastructure

REST API

Архитектурный стиль HTTP-API для взаимодействия клиента с inference-сервером.

Что такое REST API в контексте ML

REST API (Representational State Transfer) — стандартный HTTP-интерфейс для взаимодействия клиентских приложений с ML-сервисами. Все production-фреймворки инференса (vLLM, TGI, Ollama) предоставляют REST API.

Стандарт де-факто — OpenAI API: клиентский код, написанный для ChatGPT, работает с любым OpenAI-совместимым сервером без изменений.

OpenAI-совместимый API

# Chat Completions
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer any-token" \
  -d '{
    "model": "mistral-7b",
    "messages": [{"role": "user", "content": "Привет!"}],
    "max_tokens": 200,
    "temperature": 0.7
  }'

# Streaming
curl http://localhost:8000/v1/chat/completions \
  -d '{"model": "mistral-7b", "messages": [...], "stream": true}'

# Список моделей
curl http://localhost:8000/v1/models

# Embeddings
curl http://localhost:8000/v1/embeddings \
  -d '{"model": "bge-m3", "input": "Текст для эмбеддинга"}'

Python: OpenAI SDK

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="any-token",   # vLLM не проверяет ключ по умолчанию
)

# Синхронный запрос
response = client.chat.completions.create(
    model="mistral-7b",
    messages=[{"role": "user", "content": "Объясни Docker."}]
)
print(response.choices[0].message.content)

# Асинхронный стриминг
async for chunk in await client.chat.completions.create(..., stream=True):
    print(chunk.choices[0].delta.content, end="")

Связанные термины

  • streaming — потоковый режим REST API
  • serving — общий контекст предоставления API
  • load balancer — распределение REST-запросов
  • WebSocket — альтернативный протокол для real-time

Готовы запустить GPU-задачу?

Запустить GPU-сервер