通过langchain框架实现模型联网搜索

介绍

这几天快过年了,所以玩点其他东西放松一下。
langchain框架时目前比较流行的一个大模型框架,该框架提供了大量组件,这些组件可以实现不同的功能。其中有agent组件,通过该组件可以实现调用大模型接口联网搜索。

思路

langchain框架提供了agent组件,因此实现该功能只需要调用相关函数即可。
具体来说就是通过将实例化的api模型和搜索接口作为参数传入agent中,输入问题即可。
这里使用的是千帆接口,首先需要实例化大模型。首先需要做的是将接口的appkey和secretkey添加到环境变量中,接着实例化大模型

os.environ['QIANFAN_AK']='yourak'
os.environ['QIANFAN_SK']='yoursk'
# 实例化大模型
llm = QianfanChatEndpoint()

加载工具

这里的工具主要是联网搜索工具,为了便于使用。使用的是ddg搜索接口(主要是免费),其次还有一些相关的工具。例如在联网搜索时通常会有些需要计算的问题,因此同时加载一个计算工具。将这两个工具传入agent组件,同时将实例化的大模型也传入agent组件中,

tools = load_tools(["ddg-search", "llm-math"], llm=llm)
agent=initialize_agent(tools,llm,agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,verbose=True)

这里选择的类型是zeroshot,简单来说zeroshot就是无示例。oneshot就是对于一个问题会给出一个回答的例子。
参数verbose是展示大模型的思考过程

实现对话

最后需要做的就是通过agent组件进行对话

from langchain import PromptTemplate
prompt_template = "世界人口是多少"
prompt = PromptTemplate.from_template(prompt_template)
print('prompt-->', prompt)
#代理Agent工作
agent.run(prompt)

结果(结果不一定准确,准确程度由大模型智能程度和搜索接口信息实时性决定):通过langchain框架实现模型联网搜索_第1张图片

你可能感兴趣的:(langchain,笔记)