通义千问
先在阿里云百炼的模型广场开通通义千问
创建API key
LangChain调用通义千问
首先安装python包
pip install -qU langchain dashscope
通过langchain代码调用
import os
os.environ["DASHSCOPE_API_KEY"] = ""
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import HumanMessage
chatLLM = ChatTongyi(streaming=True, )
from langchain_core.messages import HumanMessage, SystemMessage
messages = [
SystemMessage(
content=
"你是一个编程专家"),
HumanMessage(
content=
"给我一个学习langchain的建议"
),
]
res = chatLLM.invoke(messages)
print(res)
解析结果
模型返回的数据是结构化数据,通过StrOutputParser可以解析其中的文本
from langchain_core.output_parsers import StrOutputParser
parser = StrOutputParser()
parser.invoke(res)
提示词模版
使用提示词模版Prompt Templates可以避免每次调用都需要输入提示词
将上面的问题改成提示词模版
from langchain_core.prompts import ChatPromptTemplate
system_template = "你是一个{speciality}专家:"
prompt_template = ChatPromptTemplate.from_messages(
[("system", system_template), ("user", "{text}")]
)
通过管道将提示词,大模型,结果解析器联合起来调用
chain = prompt_template | chatLLM | parser
chain.invoke({"speciality": "编程", "text": "如何学习python"})
REST API
把开发的应用以rest api形式发布
先安装langServe
pip install langserve
使用FastAPI
from fastapi import FastAPI
from langserve import add_routes
app = FastAPI(
title="LangChain Server",
version="1.0",
description="A simple API server using LangChain's Runnable interfaces",
)
add_routes(
app,
chain,
path="/chain",
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
将上述所有代码写入serve.py,执行python serve.py
Client
客户端调用采用RemoteRunnable
from langserve import RemoteRunnable
remote_chain = RemoteRunnable("http://localhost:8000/chain/")
remote_chain.invoke({"speciality": "编程", "text": "C语言"})