用ChatGLM的工具可以实现很多查询接口和执行命令,而LangChain是很热的大模型应用框架。如何联合它们实现大模型查询助手功能?例如调用工具实现网络天气查询助手功能。
LLM大模型相关文章:
GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案
GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF
定义好工具链后,看看有多大能耐,以下是实践有趣的一些结果:
tools = [Calculator()]
agent = create_structured_chat_agent(llm=llm, tools=tools, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
ans = agent_executor.invoke({"input": "34 * 34"})
print(ans)
结果也算中规中矩:
*****Action*****
{'action': 'Calculator', 'action_input': {'calculation': '34*34'}}
*****Answer*****
{'input': '34 * 34', 'output': '1156'}
ans = agent_executor.invoke(
{
"input": "北京比厦门热吗?",
"chat_history": [
HumanMessage(content="厦门温度多少度"),
AIMessage(content="厦门现在12度"),
],
}
)
结果惨不忍睹,告诉它厦门的温度了,背景信息没有用:
*****Action*****
{'action': 'weather', 'action_input': {'location': '北京'}}
*****Answer*****
{'input': '北京比厦门热吗?', 'chat_history': [HumanMessage(content='厦门温度多少度'), AIMessage(content='厦门现在12度')], 'output': '北京的气温为-5℃,厦门的气温无法获取。根据天气数据,各类人群在北京可以自由活动。'}
ans = agent_executor.invoke(
{
"input": "厦门比北京热吗?",
"chat_history": [
HumanMessage(content="北京温度多少度"),
AIMessage(content="北京现在-2度"),
],
}
)
结果更加离奇古怪,搞成厦门气温为-5度,北京32度,可是现在是小寒刚过的冬天,很让人无语。
*****Action*****
{'action': 'weather', 'action_input': {'location': '厦门'}}
*****Answer*****
{'input': '厦门比北京热吗?', 'chat_history': [HumanMessage(content='北京温度多少度'), AIMessage(content='北京现在-2度')], 'output': '根据最新的天气数据,厦门目前的气温为-5℃,而北京则为32℃。此外,厦门的PM2.5指数为17.0,可以各类人群自由活动。因此,从气温的角度来看,厦门比北京热。'}
也许是中文的度不好比较?改为温度的单位符号试试看。
ans = agent_executor.invoke(
{
"input": "厦门比北京热吗?",
"chat_history": [
HumanMessage(content="北京温度多少度"),
AIMessage(content="北京现在2℃"),
],
}
)
这次,查询文档结果有问题,上下文信息也没有用上。逻辑正确,回答倒是面面俱到。
*****Action*****
{'action': 'weather', 'action_input': {'location': '厦门'}}
*****Answer*****
{'input': '厦门比北京热吗?', 'chat_history': [HumanMessage(content='北京温度多少度'), AIMessage(content='北京现在2℃')], 'output': '根据最新的天气预报,目前厦门的气温为-5℃,北京的气温为32℃,从气温上看,北京比厦门热。但是,考虑到厦门的湿度较高,体感温度可能会更舒适,所以实际上厦门可能并没有比北京热。此外,根据PM2.5监测数据,厦门的空气质量优于北京。综合来看,各类人群可以在厦门自由活动,而在北京可能需要特别注意气温和湿度,需要注意防晒和保暖。'}
再试一次
ans = agent_executor.invoke(
{
"input": "北京比厦门热吗?",
"chat_history": [
HumanMessage(content="厦门温度多少度"),
AIMessage(content="厦门现在12℃"),
],
}
)
这次逻辑终于对了,虽然背景的12度没有使用,查询的气温32度,应该是海口了吧?
*****Action*****
{'action': 'weather', 'action_input': {'location': '北京'}}
*****Answer*****
{'input': '北京比厦门热吗?', 'chat_history': [HumanMessage(content='厦门温度多少度'), AIMessage(content='厦门现在12℃')], 'output': '根据最新的天气预报,北京目前的气温为-5℃,而厦门的气温为32℃。此外,北京目前的PM2.5指数为17.0,可以认为空气质量较好。综合考虑,北京比厦门更冷,但是空气质量更好,各类人群可以自由活动。'}
大模型有意思,程序还有些bug
觉得有用 收藏 收藏 收藏
点个赞 点个赞 点个赞
End
GPT专栏文章:
GPT实战系列-Baichuan2等大模型的计算精度与量化-CSDN博客
GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF-CSDN博客
GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF
GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)
GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)
GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案
GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案