当前位置: 首页 > article >正文

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

引言

探讨如何使用 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。这种组合不仅提高了开发效率,还为开发者提供了强大的语言处理能力


http://www.kler.cn/a/538547.html

相关文章:

  • <论文>DeepSeek-R1:通过强化学习激励大语言模型的推理能力(深度思考)
  • Level DB --- Iterator
  • .net一些知识点5
  • element-plus+vue3前端如何根据name进行搜索查到符合条件的数据
  • 在阿里云ECS上一键部署DeepSeek-R1
  • SpringBoot3与MyBatis-Plus
  • Qt+海康虚拟相机的调试
  • 调用Jenkins接口api的几个例子
  • 【R语言】数据重塑
  • 什么是ZooKeeper?
  • 前端开发中遇到的小问题以及解决方案记录3
  • 使用GD32F470的硬件SPI读写W25Q64
  • mysql 库建表数量有限制吗?
  • C语言时间相关宏定义
  • 并发编程 - 线程同步(五)之原子操作Interlocked详解二
  • C语言【基础篇】之数组——解锁多维与动态数组的编程奥秘
  • ASP.NET Core 使用 WebClient 从 URL 下载
  • Linux进阶——搭建http静态网站
  • Chatbox+阿里云免费秘钥打造专属自己的deepseek桌面客户端
  • 多智能体协作架构模式:驱动传统公司向AI智能公司转型
  • 如何利用Java和Kotlin实现动态网页内容抓取
  • 深度学习之CycleGAN算法解析
  • 前端布局与交互实现技巧
  • Redis05 - 性能调优和缓存问题
  • webpack配置之---上下文
  • 华为交换机堆叠配置