服务端代码:
import os
from fastapi import FastAPI
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langserve import add_routes
# 科学上网
os.environ['http_proxy'] = '127.0.0.1:7890'
os.environ['https_proxy'] = '127.0.0.1:7890'
# 使用 langsmith
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "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"
# 调用LLM
# 1.创建模型
model = ChatOpenAI(model='gpt-4-turbo')
# 2.准备Prompt
msg = [
SystemMessage(content='请将以下的内容翻译成意大利语'),
HumanMessage(content='你好,请问你要去哪里?')
]
# 3. 创建返回的数据解析器
parser = StrOutputParser()
prompt_template = ChatPromptTemplate.from_template([
('system','请将下面的内容翻译成{language}'),
('user','{text}')
])
# 4.得到链
chain = prompt_template | model | parser
# 5. 直接使用chain来调用 最终直接调用链,不用每个可执行的单独调用
print(chain.invoke({'language':'English','text':'我下午还有一节课,不能去打球了。'}))
# 部署以上写的程序到服务器 langServe 执行安装langServe命令: pip install "langserve[all]"
# 创建fastAPI的应用
app = FastAPI(title='我的Langchain服务',version='V1.0',description='使用Langchain翻译任何语句的服务。')
add_routes(
app,
chain,
path="/chainDemo",
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app,host="localhost",port=8000)
# POST 请求服务地址 http://127.0.0.1:8000/chainDemo/invoke 用json格式请求 入参如下
# {
# "input":{
# "language": "English",
# "text":"我要去上课了,不能和你聊天了。"
# }
# {
客户端代码:
import os
from langserve import RemoteRunnable
if __name__ == '__main__':
client = RemoteRunnable("http://127.0.0.1:8000/chainDemo/")
print(client.invoke({"language": "italia", "text": "你好!"}))