Поддерживаемые провайдеры

vLLM

Гайд по vLLM API — OpenAI-совместимый self-hosted inference, chat, text, embeddings, rerank и streaming.

Обзор

vLLM — это OpenAI-совместимый провайдер для self-hosted inference. Meridian делегирует обработку общему OpenAI-провайдеру. Ключевые особенности:

  • OpenAI-совместимость — chat, text completions, embeddings, rerank и streaming;
  • Self-hosted — обычно запускается на http://localhost:8000 или на собственном сервере;
  • Опциональная аутентификация — API key часто не требуется для локальных инстансов;
  • Responses API — поддерживается через fallback на chat completion.

Поддерживаемые операции

ОперацияNon-StreamingStreamingEndpoint
Chat Completions/v1/chat/completions
Responses API/v1/chat/completions
Text Completions/v1/completions
Embeddings/v1/embeddings
Rerank/v1/rerank (fallback: /rerank)
List Models/v1/models
Image Generation
Speech (TTS)
Transcriptions (STT)/v1/audio/transcriptions
Files
Batch

Неподдерживаемые операции (❌): Image Generation, Speech, Files и Batch не поддерживаются и возвращают UnsupportedOperationError.


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

  • API key: опционален. Для локальных инстансов vLLM ключ часто оставляют пустым.
  • При задании ключ отправляется как Authorization: Bearer <key>.

Конфигурация

  • Base URL: по умолчанию http://localhost:8000. Переопределяется через network_config.base_url провайдера.
  • Имена моделей: зависят от моделей, загруженных в ваш vLLM-инстанс (например, meta-llama/Llama-3.2-1B-Instruct, BAAI/bge-m3 для embeddings).
# Указываем на локальный или удалённый vLLM-инстанс (по умолчанию http://localhost:8000)
curl -X POST http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "vllm/meta-llama/Llama-3.2-1B-Instruct",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

# Конфигурация провайдера в шлюзе: задайте base_url для удалённого vLLM
# "network_config": { "base_url": "http://vllm-endpoint:8000" }

С чего начать

  1. Запустите vLLM-сервер (через Docker или pip). Пример с Docker:
    docker run --gpus all -p 8000:8000 vllm/vllm-openai:latest --model meta-llama/Llama-3.2-1B-Instruct
  2. Проверьте сервер:
    curl http://localhost:8000/v1/models
  3. Используйте Meridian с префиксом модели vllm/<model_id> (например, vllm/meta-llama/Llama-3.2-1B-Instruct).

1. Chat Completions

vLLM поддерживает стандартные параметры chat completion OpenAI. Полный справочник параметров — на странице OpenAI Chat Completions. Типы сообщений, tools и streaming работают идентично.


2. Responses API

Meridian преобразует запросы Responses API в Chat Completions и обратно:

BifrostResponsesRequest
  → ToChatRequest()
  → ChatCompletion
  → ToBifrostResponsesResponse()

3. Text Completions

ПараметрМаппинг
promptПередаётся как есть
max_tokensmax_tokens
temperaturetemperature
top_ptop_p
stopstop sequences

4. Embeddings

vLLM поддерживает /v1/embeddings. Используйте идентификаторы моделей, экспортируемых вашим vLLM-сервером (например, BAAI/bge-m3).


5. List Models

Возвращает список моделей из вашего vLLM-инстанса через /v1/models. Доступные модели зависят от того, что загружено на сервере.


6. Rerank

vLLM поддерживает reranking для pooling/cross-encoder reranker-моделей. Meridian отправляет запросы на /v1/rerank и автоматически делает fallback на /rerank, если этого требует ваш vLLM-деплой.

curl -X POST http://localhost:8080/v1/rerank \
  -H "Content-Type: application/json" \
  -d '{
    "model": "vllm/BAAI/bge-reranker-v2-m3",
    "query": "What is machine learning?",
    "documents": [
      {"text": "Machine learning is a subset of AI."},
      {"text": "Python is a programming language."},
      {"text": "Deep learning uses neural networks."}
    ],
    "params": {
      "return_documents": true
    }
  }'

Ваш upstream vLLM-сервер должен быть запущен с rerank-совместимой моделью (поддержка pooling/cross-encoder task).


Нюансы

Содержание