一文教会你使用 LangServe 构建大模型服务

LangServe 是一个用于构建和部署基于自然语言处理(NLP)模型的应用程序的框架。它使得开发者可以轻松地将训练好的模型集成到 Web 服务中,提供 API 接口,以便于其他应用程序进行调用。它具有以下优点:

  • 易于调试:它提供了一个`Playground`,允许开发者实时地与他们的智能机器人互动,测试不同的输入并查看即时输出,这有助于快速迭代和调试;
  • 支持并发:它支持并发请求,这意味着多个用户可以同时使用部署的服务而不会出现性能问题;
  • 安全性:提供了一些安全性措施,如请求追踪,确保数据传输的安全;
  • 支持流式传输和异步调用:支持流式传输和异步调用,这对于需要实时反馈或处理大量数据的应用程序来说非常有用;

本文是一个 LangServe 的基本教程,以阿里云的通义千问大模型作为语义模型,其它模型类似,帮助您快速上手。

LangChain基础文章:《一文教会你用 LangChain 快速构建大模型应用》

1、安装

我们使用国内的清华源来安装 langserve 包,运行以下命令即可完成安装

pip install "langserve[all]" -U -i https://pypi.tuna.tsinghua.edu.cn/simple/
2、创建链

创建一个问答链,它提供简单地翻译功能,具体的提示词模版、模型创建、输出解析器、创建链等功能,已经在上一篇文章中详细介绍,这里就不在赘述。


from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_community.llms import Tongyi
from langserve import add_routes
import os

os.environ["DASHSCOPE_API_KEY"] = "你的API_KEY"

# 1. 创建提示词模版
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([
    ('system', system_template),
    ('user', '{text}')
])

# 2. 创建模型
model = Tongyi()

# 3. 创建解析器
parser = StrOutputParser()

# 4. 创建链
chain = prompt_template | model | parser

至此,一个简单的问答链已经创建好了。运行它需要两个参数:`language`、`text`。

3、使用 langServe 将链包装为 API

我们通过 FastAPI 将 langServer 链包装为 API 应用,通过 langserve.add_routes 定义服务链的路由,如下所示

# 5. App 定义
app = FastAPI(
  title="LangChain Server",
  version="1.0",
  description="使用 LangChain 的 Runnable 接口的简单 API 服务器",
)

# 6. 添加链路由
add_routes(
    app,
    chain,
    path="/chain",
)

if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="127.0.0.1", port=5100)
4、启动测试

我们启动此程序,如果出现类似下面的输出则说明启动成功

我们接着在浏览器中打开 http://127.0.0.1:5100/chain/playground/ 测试下这个应用提供的接口,如下所示我们输入对应的两个参数的值:language 为 chinese、text 为 hi,则翻译应用输出为:你好

我们还可以通过 http://127.0.0.1:5100/docs 打开接口文档,可以看见它还提供了很多其它接口,留在我们根据需要使用。

通过以上步骤,您可以快速搭建一个基于 LangServe 的 NLP 应用。您可以根据需求扩展功能,整合更多的模型和服务。LangServe 的灵活性和易用性使得它成为构建 NLP 应用的理想选择。希望这篇文章对您有所帮助!如果您有任何问题或需要更多示例,请留言。


如果你喜欢本文,欢迎点赞,并且关注我们的微信公众号:Python技术极客,我们会持续更新分享 Python 开发编程、数据分析、数据挖掘、AI 人工智能、网络爬虫等技术文章!让大家在Python 技术领域持续精进提升,成为更好的自己!

添加作者微信(coder_0101),拉你进入行业技术交流群,进行技术交流!

### 使用LangChain快速创建Agent并与LangServe集成 #### 创建基础环境 为了使用LangChain库来构建代理并将其与LangServe集成,确保安装必要的Python包。这通常涉及`langchain`和`fastapi`以及其他依赖项。 ```bash pip install langchain fastapi uvicorn ``` #### 构建简单的LangChain Agent 通过定义特定的任务逻辑,可以利用LangChain框架中的组件轻松组装一个功能性的代理程序。下面是一个基于检索查询的简单代理实现例子[^1]: ```python from langchain import LangChain class SimpleRetrievalAgent(LangChain): def __init__(self, index_path): super().__init__() self.index = self.load_index_from_disk(index_path) def load_index_from_disk(self, path): # 假设这里有一个方法可以从磁盘加载索引数据结构 pass def retrieve_information(self, query): results = self.index.search(query) return results ``` 此代码片段展示了如何继承自`LangChain`类以建立自己的代理对象,并实现了基本的信息检索能力。 #### 集成LangServe服务端点 为了让上述代理能够接收外部请求并通过HTTP接口返回处理后的响应,采用FastAPI作为Web服务器框架是非常合适的解决方案之一。以下是关于怎样设置路由以便调用之前定义好的代理实例的方法[^4]: ```python from fastapi import FastAPI app = FastAPI() agent_instance = SimpleRetrievalAgent('path_to_your_index') @app.post("/query") async def handle_query(request: dict): user_input = request.get("text", "") result = agent_instance.retrieve_information(user_input) return {"response": result} ``` 这段脚本配置了一个POST API `/query`用于接受来自客户端的消息体(JSON格式),其中包含了待解析的文字串;随后它会转发给内部已初始化完毕的`SimpleRetrievalAgent`执行具体的业务操作——即信息查找工作;最后再把得到的结果封装回字典形式传送给前端展示层面上去。 #### 启动应用 完成以上步骤之后,可以通过命令行启动应用程序,在本地环境中测试其可用性: ```bash uvicorn main:app --reload ``` 这里的假设是所有的Python源文件都保存在一个名为`main.py`的文件里。当运行这条指令后,开发人员就可以访问指定地址查看效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder_风逝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值