前提
安装langserve
执行命令
pip install "langserve[all]"
代码实现
使用python性能最好的fastapi框架
python
import os
from fastapi import FastAPI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langserve import add_routes
# 1. 准备环境
os.environ['OPENAI_API_BASE'] = "https://api.mctools.online/v1"
# 2. 定义模型
model = ChatOpenAI(model="gpt-4o")
# 3. prompt提示词
prompt = ChatPromptTemplate.from_messages([
('system', '请计算以下的结果'),
('user', '{text}')
])
# 4. 解析
parser = StrOutputParser()
# 5. 创建链
chain = prompt | model | parser
# 6. 调用
print(chain.invoke({'text': '当x趋于正无穷,求x分之一的极限'}))
app = FastAPI(title="langchain部署服务",version="V1",description="langchian第一个应用")
add_routes(app,chain,path="/chain/demo01",)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app,host="localhost",port=8000)
执行结果
request: http://localhost:8000/chain/demo01/invoke
method:post
body:
python
{
"input":
{
"text":"当x趋于正无穷,求x分之一的极限"
}
}
代码重构
用client调用
touch client.py
python
from langserve import RemoteRunnable
if __name__ == '__main__':
client = RemoteRunnable('http://127.0.0.1:8000/chain/demo01')
print(client.invoke({'text': '当x趋于正无穷,求x分之一的极限'}))
执行结果
当 \( x \) 趋于正无穷大时,\( \frac{1}{x} \) 的极限是 0。
代码解释
这段代码使用了langserve
库中的RemoteRunnable
类来创建一个客户端实例,用于与运行在本地(127.0.0.1)的服务器通信,该服务器监听8000端口,并且指定路径为/chain/demo01
。这通常意味着有一个后端服务在运行,能够处理来自这个客户端的请求。
当执行client.invoke({'text': '当x趋于正无穷,求x分之一的极限'})
时,客户端会向服务器发送一个包含文本的问题,即"当x趋于正无穷,求x分之一的极限"。