我们可以通过fastapi为我们的langchain应用向外暴露endpoint,操作如下:

安装依赖
# 安装 LangServe
pip install langserve[all]

# 也可以只安装一端
pip install "langserve[client]"
pip install "langserve[server]"

pip install uvicorn
pip install fastapi

fastapi 入门可以参考: https://www.runoob.com/fastapi/fastapi-tutorial.html

官网: https://fastapi.tiangolo.com/

接口开发和调试

以下是一个简单的例子

from fastapi import FastAPI
from langchain_openai import ChatOpenAI
from langserve import add_routes
from pydantic import BaseModel
import uvicorn
from langchain.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser

app = FastAPI()


@app.get("/")
def read_root():
    return {"message": "Hello, World!"}


class Data(BaseModel):
    output: str


def llm_chain():
    prompt = PromptTemplate.from_template("写一关于{subject}首诗,30字以内")
    llm = ChatOpenAI(model="gpt-4o-mini")
    chain = prompt | llm | StrOutputParser()
    return chain


# Add routes immediately when the module is imported
add_routes(
    app,
    llm_chain(),
    path="/llm_chain",
    # 注意:如果要允许其他程序通过接口调用,则这个参数需要加;启用enabled_endpoints等n个端点(可以自定义名称,playground,stream_log是调试必须要的)
    enabled_endpoints=("invoke", "batch", "config_hashes", "playground", "stream_log"),
)


if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

执行main方法启动
在这里插入图片描述
浏览器访问:http://localhost:8000/llm_chain/playground/ 可进入api调试界面

在这里插入图片描述


点击start,调用接口调试

在这里插入图片描述

接口调用

参考如下代码

import requests

response = requests.post(
# 这里的请求路径需要在上面的enabled_endpoints白名单里
    "http://localhost:8000/llm_chain/invoke", json={"input": {"subject": "夏天"}}
)
print(response.json())

返回值如下:
在这里插入图片描述

over~~

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐