Online Serving¶
vLLM provides an HTTP server that is compatible with many interfaces!
OpenAI-Compatible Server¶
We currently support the following OpenAI APIs:
- Completions API (
/v1/completions)- Only applicable to text generation models.
- Note:
suffixparameter is not supported.
- Responses API (
/v1/responses)- Only applicable to text generation models.
- Chat Completions API (
/v1/chat/completions)- Only applicable to text generation models with a chat template.
- Note:
userparameter is ignored. - Note: Setting the
parallel_tool_callsparameter tofalseensures vLLM only returns zero or one tool call per request. Setting it totrue(the default) allows returning more than one tool call per request. There is no guarantee more than one tool call will be returned if this is set totrue, as that behavior is model dependent and not all models are designed to support parallel tool calls.
- Embeddings API (
/v1/embeddings)- Only applicable to embedding models.
- Transcriptions API (
/v1/audio/transcriptions)- Only applicable to Automatic Speech Recognition (ASR) models.
- Translation API (
/v1/audio/translations)- Only applicable to Automatic Speech Recognition (ASR) models.
Anthropic APIs¶
- Anthropic messages API (
/v1/messages)
Cohere APIs¶
- Cohere Embed API (
/v2/embed)- Compatible with Cohere's Embed API
- Works with any embedding model, including multimodal models.
- Cohere Rerank API (
/rerank,/v1/rerank,/v2/rerank)- Implements Jina AI's v1 rerank API
- compatible with Cohere's v1 & v2 rerank APIs
SageMaker APIs¶
/invocations- SageMaker-compatible endpoint (routes to the same inference functions as/v1endpoints)
Pooling APIs¶
For further details on pooling models, please refer to this page.
- Classification Usages
- Classification API (
/classify) - Only applicable to classification models.
- Classification API (
- Embedding Usages
- Cohere Embed API (
/v2/embed) - OpenAI-compatible Embeddings API (
/v1/embeddings) - Only applicable to embedding models.
- Cohere Embed API (
- Scoring Usages
- Score API (
/score) - Cohere Rerank API (
/rerank,/v1/rerank,/v2/rerank) - Applicable to score models (cross-encoder, bi-encoder, late-interaction).
- Score API (
- Pooling API (
/pooling)- Applicable to all pooling models.
Speech to Text APIs¶
For further details on speech to text, please refer to this page.
- Transcriptions API (
/v1/audio/transcriptions)- Only applicable to Automatic Speech Recognition (ASR) models.
- Translation API (
/v1/audio/translations)- Only applicable to Automatic Speech Recognition (ASR) models.
- Realtime API (
/v1/realtime)- Only applicable to Automatic Speech Recognition (ASR) models.
Disaggregated APIs¶
Renderer APIs¶
For further details on renderer APIs, please refer to this page.
- Completions Render API (
/v1/completions/render)- Render completion requests
- Chat Completions Render API (
/v1/chat/completions/render)- Render chat completions
Custom APIs¶
- Classification API (
/classify)- Only applicable to classification models.
- Score API (
/score,/v1/score)- Applicable to score models (cross-encoder, bi-encoder, late-interaction).
- Pooling API (
/pooling)- Applicable to all pooling models.
- Generative Scoring API (
/generative_scoring)- Applicable to CausalLM models (task
"generate"). - Computes next-token probabilities for specified
label_token_ids.
- Applicable to CausalLM models (task
Utility APIs¶
/tokenize- Tokenize text/detokenize- Detokenize tokens/health- Health check/ping- SageMaker health check/version- Version information/load- Server load metrics
Sleep Mode APIs¶
For further details on sleep mode, please refer to this page.
/sleep- Put engine to sleep (causes denial of service)/wake_up- Wake engine from sleep/is_sleeping- Check if engine is sleeping/collective_rpc- Execute arbitrary RPC methods on the engine (extremely dangerous)
Chat Template¶
In order for the language model to support chat protocol, vLLM requires the model to include a chat template in its tokenizer configuration. The chat template is a Jinja2 template that specifies how roles, messages, and other chat-specific tokens are encoded in the input.
An example chat template for NousResearch/Meta-Llama-3-8B-Instruct can be found here
Some models do not provide a chat template even though they are instruction/chat fine-tuned. For those models, you can manually specify their chat template in the --chat-template parameter with the file path to the chat template, or the template in string form. Without a chat template, the server will not be able to process chat and all chat requests will error.
vLLM community provides a set of chat templates for popular models. You can find them under the examples directory.
With the inclusion of multi-modal chat APIs, the OpenAI spec now accepts chat messages in a new format which specifies both a type and a text field. An example is provided below:
completion = client.chat.completions.create(
model="NousResearch/Meta-Llama-3-8B-Instruct",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Classify this sentiment: vLLM is wonderful!"},
],
},
],
)
Most chat templates for LLMs expect the content field to be a string, but there are some newer models like meta-llama/Llama-Guard-3-1B that expect the content to be formatted according to the OpenAI schema in the request. vLLM provides best-effort support to detect this automatically, which is logged as a string like "Detected the chat template content format to be...", and internally converts incoming requests to match the detected format, which can be one of:
"string": A string.- Example:
"Hello world"
- Example:
"openai": A list of dictionaries, similar to OpenAI schema.- Example:
[{"type": "text", "text": "Hello world!"}]
- Example:
If the result is not what you expect, you can set the --chat-template-content-format CLI argument to override which format to use.
Offline API Documentation¶
The FastAPI /docs endpoint requires an internet connection by default. To enable offline access in air-gapped environments, use the --enable-offline-docs flag:
Ray Serve LLM¶
Ray Serve LLM enables scalable, production-grade serving of the vLLM engine. It integrates tightly with vLLM and extends it with features such as auto-scaling, load balancing, and back-pressure.
Key capabilities:
- Exposes an OpenAI-compatible HTTP API as well as a Pythonic API.
- Scales from a single GPU to a multi-node cluster without code changes.
- Provides observability and autoscaling policies through Ray dashboards and metrics.
The following example shows how to deploy a large model like DeepSeek R1 with Ray Serve LLM: examples/ray_serving/ray_serve_deepseek.py.
Learn more about Ray Serve LLM with the official Ray Serve LLM documentation.