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-Streaming | Streaming | Endpoint |
|---|---|---|---|
| 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" }С чего начать
- Запустите vLLM-сервер (через Docker или pip). Пример с Docker:
docker run --gpus all -p 8000:8000 vllm/vllm-openai:latest --model meta-llama/Llama-3.2-1B-Instruct - Проверьте сервер:
curl http://localhost:8000/v1/models - Используйте 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_tokens | max_tokens |
temperature | temperature |
top_p | top_p |
stop | stop 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).