十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

vLLM 搭配 LiteLLM:用 OpenAI 兼容格式调用本地模型服务(Chat 与 Embedding 实战)

vLLM 搭配 LiteLLM:用 OpenAI 兼容格式调用本地模型服务(Chat 与 Embedding 实战) vLLM 搭配 LiteLLM用 OpenAI 兼容格式调用本地模型服务Chat 与 Embedding 实战【免费下载链接】vllmA high-throughput and memory-efficient inference and serving engine for LLMs项目地址: https://gitcode.com/GitHub_Trending/vl/vllmLiteLLM 是一个支持 OpenAI 统一格式调用各家 LLM API 的网关/适配层它可以把请求翻译到各供应商的completion、embedding、image_generation端点统一输出结构文本响应始终位于[choices][0][message][content]并提供跨多个部署的 Router 重试/回退逻辑以及按项目、API Key、模型粒度设置预算与限流的 Proxy ServerLLM Gateway能力。由于 vLLM 提供标准 OpenAI 兼容 APILiteLLM 原生支持 vLLM 上部署的全部模型——这意味着你可以把 vLLM 当作一个自建模型供应商用一套统一的代码同时对接 OpenAI、Azure、本地 vLLM 等多种后端。本文基于 docs/deployment/frameworks/litellm.md 讲解完整的部署与调用流程并结合 vLLM 源码说明 LiteLLM 实际打到的服务端点实现。环境准备准备工作非常直接在 Python 环境中同时安装 vLLM 与 litellmpip install vllm litellm安装后本地即可启动 vLLM 服务vllm serve而客户端代码只需引入litellm库即可发起请求。部署 vLLM 服务Chat Completion以 Qwen1.5 为例第一步用一个支持 chat completion 的模型启动 vLLM OpenAI 兼容 API 服务vllm serve qwen/Qwen1.5-0.5B-Chat从源码看vllm serve命令的入口在 vllm/entrypoints/cli/serve.py它最终调用 vllm/entrypoints/launchers/api_server/entry.py 中的setup_server/run_server拉起 FastAPI 应用服务默认监听端口为 8000见 vllm/entrypoints/launchers/cli_args.py 中port: int 8000可通过--port、--host调整。启动后服务暴露的聊天补全端点定义在 vllm/entrypoints/openai/chat_completion/api_router.py端点路径为POST /v1/chat/completions请求体由ChatCompletionRequest协议解析实际处理委托给OpenAIServingChat见 vllm/entrypoints/openai/chat_completion/serving.py 的create_chat_completion支持 JSON 一次性响应与 SSE 流式text/event-stream两种返回形式流式响应还带有可配置的sse_keep_alive_interval心跳机制。这正是 LiteLLM 的completion接口所对接的端点。Embeddings以 BGE 为例若需要向量嵌入能力则改用支持 embedding 的模型启动服务vllm serve BAAI/bge-base-en-v1.5对应服务端点实现位于 vllm/entrypoints/pooling/embed/api_router.py除 OpenAI 标准的/v1/embeddings外还额外提供了/v2/embedCohere 风格端点请求经EmbeddingRequest协议校验后由embedding(raw_request)句柄分发给具体 serving 实现vllm/entrypoints/pooling/embed/serving.py。使用 LiteLLM 调用1. 调用 Chat Completion关键点模型名必须带hosted_vllm前缀LiteLLM 用它识别自建 vLLM 服务这一供应商类型并把api_base指向 vLLM 服务的/v1路径import litellm messages [{content: Hello, how are you?, role: user}] # hosted_vllm 是必需的前缀关键字 response litellm.completion( modelhosted_vllm/qwen/Qwen1.5-0.5B-Chat, # 传 vLLM 中部署的模型名 messagesmessages, api_basehttp://{your-vllm-server-host}:{your-vllm-server-port}/v1, temperature0.2, max_tokens80, ) print(response)参数说明参数说明model必须形如hosted_vllm/{vLLM 部署的模型名}前缀不可省略api_basevLLM 服务的 base 地址注意结尾带/v1默认端口通常为 8000messagesOpenAI 标准消息列表格式temperature/max_tokens透传到 vLLM 的采样参数由于 LiteLLM 负责把各家协议统一翻译为 OpenAI 格式返回结果中response[choices][0][message][content]始终可稳定取到文本内容无需针对 vLLM 单独做响应解析。2. 调用 EmbeddingsEmbedding 调用的写法与 completion 略有不同api_base通过环境变量HOSTED_VLLM_API_BASE传入而非函数参数模型名同样需要hosted_vllm前缀from litellm import embedding import os os.environ[HOSTED_VLLM_API_BASE] http://{your-vllm-server-host}:{your-vllm-server-port}/v1 # hosted_vllm 是必需的前缀关键字传 vLLM 中部署的模型名 embedding embedding(modelhosted_vllm/BAAI/bge-base-en-v1.5, input[Hello world]) print(embedding)这里model中的模型名要与vllm serve BAAI/bge-base-en-v1.5启动时的模型名一致input为待嵌入的文本列表返回结构与 OpenAI/v1/embeddings响应一致data中携带向量。适用场景与小结这套组合的价值在于统一接口业务代码只用一套 LiteLLM 调用逻辑即可在后端替换时OpenAI 云端 ↔ 自建 vLLM只改动model前缀与api_base多部署容错借助 LiteLLM Router可将多个 vLLM 部署或多供应商配置为同一路由目标实现重试与 fallback网关级管控通过 LiteLLM Proxy Server 可在网关层按项目、API Key、模型做预算与限流适合多租户接入自建推理集群。排查要点调用失败时优先确认hosted_vllm前缀是否遗漏、api_base是否以/v1结尾、vLLM 服务端口默认 8000与模型名是否与vllm serve启动参数一致。更多 vLLM 部署框架集成可参考 docs/deployment/frameworks 目录下的其他文档如 Open WebUI、AnythingLLM、BentoML 等。【免费下载链接】vllmA high-throughput and memory-efficient inference and serving engine for LLMs项目地址: https://gitcode.com/GitHub_Trending/vl/vllm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表