LangChain + DeepSeek-R1:构建高效的语言模型服务

发布于:2025-02-10 ⋅ 阅读:(567) ⋅ 点赞:(0)

引言

探讨如何使用 LangChain 和 DeepSeek-R1 模型构建一个高效的语言模型服务,并将其部署为一个可扩展的 API。

代码解析与技术要点

1. 环境准备

在开始之前,我们需要确保环境已经准备好。以下代码展示了如何设置环境变量并引入必要的库:

import os
from fastapi import FastAPI
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langserve import add_routes

os.environ["OPENAI_API_KEY"] = "your_api_key_here"

技术要点

  • os.environ["OPENAI_API_KEY"]:设置 OpenAI API 的密钥,这是调用外部模型的必要步骤。

  • langchain_openai.ChatOpenAI:使用 LangChain 封装的 OpenAI 模型接口,支持多种语言模型。

2. 创建模型

接下来,我们创建一个基于 DeepSeek-R1 的语言模型实例。DeepSeek-R1 是一个强大的语言模型,特别适合推理和多语言任务。

model = ChatOpenAI(
    model='deepseek-reasoner',
    base_url="https://api.deepseek.com"
)

技术要点

  • model='deepseek-reasoner':指定使用 DeepSeek-R1 模型。

  • base_url:模型的 API 地址,确保正确填写以避免连接问题。

3. 准备 Prompt 和解析响应

为了使模型能够理解我们的需求,我们需要准备一个合适的 Prompt。以下代码展示了如何构建一个简单的 Prompt 并解析模型的响应:

msg = [
    SystemMessage(content='请将以下的内容翻译成英语'),
    HumanMessage(content='你好,我叫孙悟空,来自花果山?')
]
result = model.invoke(msg)

parser = StrOutputParser()
print(parser.invoke(result))

技术要点

  • SystemMessageHumanMessage:定义系统和用户的消息,这是构建对话式 AI 的基础。

  • StrOutputParser:将模型的输出解析为字符串,方便后续处理。

4. 构建 Chain 和部署服务

LangChain 提供了一个强大的工具来构建和部署语言模型服务。以下代码展示了如何将模型封装为一个可调用的 Chain,并将其部署为一个 FastAPI 服务:

prompt_template = ChatPromptTemplate.from_messages([
    ('system', '请将下面的内容翻译成{language}'),
    ('user', "{text}")
])

chain = prompt_template | model | parser

print(chain.invoke({'language': 'English', 'text': '我下午要打篮球'}))

app = FastAPI(title='Langchain翻译服务', version='V1.0', description='使用Langchain翻译任何语句的服务')
add_routes(app, chain, path="/translate")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=9999)

技术要点

  • ChatPromptTemplate:定义了一个动态的 Prompt 模板,可以根据输入参数生成不同的 Prompt。

  • add_routes:将 Chain 部署为一个 FastAPI 路由,使其可以通过 HTTP 请求调用。

  • uvicorn.run:启动 FastAPI 服务,监听指定的端口。

服务启动成功后输出以下信息:

在这里插入图片描述LangServe服务页面效果
浏览器访问http://localhost:9999/translate/playground/
在这里插入图片描述

总结

通过 LangChain 和 DeepSeek-R1,我们可以轻松构建一个高效的语言模型服务,并将其部署为一个可扩展的 API。这种组合不仅提高了开发效率,还为开发者提供了强大的语言处理能力


网站公告

今日签到

点亮在社区的每一天
去签到