LangChain 22 LangServe用于一键部署LangChain应用程序
LangChain系列文章
- LangChain 实现给动物取名字,
- LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
- LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
- LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
- LangChain 5易速鲜花内部问答系统
- LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
- LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
- LangChain 8 模型Model I/O:输入提示、调用模型、解析输出
- LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
- LangChain 10思维链Chain of Thought一步一步的思考 think step by step
- LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain
- LangChain 12调用模型HuggingFace中的Llama2和Google Flan t5
- LangChain 13输出解析Output Parsers 自动修复解析器
- LangChain 14 SequencialChain链接不同的组件
- LangChain 15根据问题自动路由Router Chain确定用户的意图
- LangChain 16 通过Memory记住历史对话的内容
- LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理
- LangChain 18 LangSmith监控评估Agent并创建对应的数据库
- LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷
- LangChain 20 Agents调用google搜索API搜索市场价格 Reason Action:在语言模型中协同推理和行动
- LangChain 21 Agents自问自答与搜索 Self-ask with search
1. 概述
LangServe帮助开发人员将LangChain可运行程序和Chains部署为REST API。
该库集成了FastAPI,并使用pydantic进行数据验证。
此外,它提供了一个客户端,可用于调用部署在服务器上的可运行程序。 LangChainJS中提供了一个JavaScript客户端。
2. Features特点
- 从您的LangChain对象自动推断输入和输出模式,并在每次API调用中执行,并提供丰富的错误消息
- API文档页面包含JSONSchema和Swagger(插入示例链接)
- 高效的
/invoke/
,/batch/
和/stream/
端点,支持单个服务器上的许多并发请求 /stream_log/
端点,用于流式传输链/代理的所有(或部分)中间步骤- 在
/playground/
上的游乐场页面,具有流式输出和中间步骤 - 内置(可选)跟踪到LangSmith,只需添加您的API密钥(请参见说明)
- 所有都是使用经过实战考验的开源Python库构建,如FastAPI,Pydantic,uvloop和asyncio。
- 使用客户端SDK调用LangServe服务器,就像它是在本地运行的Runnable一样(或直接调用HTTP API)
- LangServe Hub
3. 限制
- 目前还不支持在服务器上发生的事件的客户端回调
- 当使用Pydantic V2时,将不会生成OpenAPI文档。Fast API不支持混合使用pydantic v1和v2命名空间。有关更多详细信息,请参见下文。
4. 托管版的LangServ
我们将发布托管版的LangServe,用于一键部署LangChain应用程序。在这里注册以加入等待名单。
5. 安全漏洞
版本0.0.13 - 0.0.15存在安全漏洞——游乐场端点允许访问服务器上的任意文件。在版本0.0.16中已解决。
6. 安装
对于客户端和服务器:
pip install "langserve[all]"
或者使用pip install "langserve[client]"
安装客户端代码,使用pip install "langserve[server]"
安装服务器端代码。
7. LangChain CLI 🛠️
使用LangChain CLI快速引导LangServe项目。
要使用langchain CLI,请确保已安装最新版本的langchain-cli。您可以使用pip install -U langchain-cli
进行安装。
langchain app new ../path/to/directory
8. LangChain模板
LangChain模板是构建生产就绪的LLM应用程序的最简单和最快速的方法。这些模板作为各种流行的LLM用例的参考架构集。它们都采用标准格式,使得使用LangServe部署它们变得很容易。
🚩 我们将发布LangServe的托管版本,以一键式部署LangChain应用程序。在此处注册以加入等待列表。
9. 快速开始
要使用,首先安装LangChain命令行界面。
pip install -U langchain-cli
接下来,创建一个新的LangChain项目:
langchain app new my-app
这将创建一个名为my-app的新目录,其中包含两个文件夹:
- app:这是LangServe代码的存放位置
- packages:这是您的链或代理的存放位置
要将现有模板作为包引入,首先需要进入您的新项目:
cd my-app
你可以把一个模板添加为一个项目。在这个入门指南中,我们将添加一个简单的海盗语言项目。这个项目的作用是将用户输入转换成海盗语言。
langchain app add pirate-speak
这将在packages/pirate-speak
中引入指定的模板
然后会提示您是否要安装它。这相当于运行pip install -e packages/pirate-speak
。通常应该接受这一点(或者之后运行相同的命令)。我们使用-e安装它,这样如果您修改模板(您很可能会这样做),更改将会更新。
之后,它会问您是否要为此项目生成路由代码。这是您需要添加到您的应用程序中以开始使用此链的代码。如果我们接受,我们将看到生成以下代码:
from pirate_speak.chain import chain as pirate_speak_chain
add_routes(app, pirate_speak_chain, path="/pirate-speak")
你现在可以编辑你拉下来的模板。你可以更改package/pirate-speak
的代码文件,以使用不同的模型、不同的提示、不同的逻辑。请注意,上面的代码片段始终期望最终链可导入为from pirate_speak.chain import chain
,因此您应该保持包的结构足够相似,以尊重该要求,或准备更新该代码片段。
一旦你想做的都做完了,为了让LangServe使用这个项目,你需要修改app/server.py
。具体来说,你应该将上面的代码片段添加到app/server.py
中,以便该文件看起来像:
from fastapi import FastAPI
from langserve import add_routes
from pirate_speak.chain import chain as pirate_speak_chain
app = FastAPI()
add_routes(app, pirate_speak_chain, path="/pirate-speak")
(可选)现在让我们配置 LangSmith。LangSmith 将帮助我们跟踪、监视和调试 LangChain 应用程序。LangSmith 目前处于私人测试阶段,您可以在这里注册。如果您无法访问,可以跳过此部分。
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project> # if not specified, defaults to "default"
对于这个特定的应用程序,我们将使用OpenAI作为LLM,所以我们需要导出我们的OpenAI API密钥:
export OPENAI_API_KEY=sk-...
您可以通过运行以下命令,启动生产就绪的端点以及一个playground:
langchain serve
这现在提供了一个完全部署的LangServe应用程序。例如,您可以访问
http://127.0.0.1:8000/pirate-speak/playground/
Access API documentation at http://127.0.0.1:8000/docs
使用LangServe的Python或js SDK与API进行交互,就好像它是一个常规的Runnable。
from langserve import RemoteRunnable
api = RemoteRunnable("http://127.0.0.1:8000/pirate-speak")
api.invoke({"text": "hi"})
快速入门就到这里!您已成功下载了第一个模板,并使用LangServe部署了它。
代码
https://github.com/zgpeace/pets-name-langchain/tree/develop
参考
- https://python.langchain.com/docs/langserve
- https://github.com/langchain-ai/langchain/blob/master/templates/README.md