一、LangChain Agents
LangChain
中的 Agents
是什么呢,对于官方的描述是:某些应用程序不仅需要预先确定的对 LLM
/其他工具的调用链,还可能需要依赖于用户输入的未知链。在这些类型的链中,有一个 Agents
可以访问一套工具。根据用户输入,代理可以决定调用这些工具中的哪一个(如果有的话)。因此代理可以理解为是一个函数之上的抽象,通过该函数可以调用不同的模块,类似于 huggingface
中的 AutoModel
。
那基于 Agents
可以做什么呢?
例如:在原生的 ChatGPT
中对于某些领域的问题回答是有些吃力的,比如让 ChatGPT
介绍下什么是 LangChain
:
from langchain.llms import OpenAI
import os
openai_api_key=os.environ["OPENAI_API_KEY"]
llm = OpenAI(model_name="gpt-3.5-turbo", openai_api_key=openai_api_key)
my_text = "介绍下 langChain "
print(llm(my_text))
可以看出回答不是我们想要的内容,对于这种情况下,我们可以选择通过构建本地知识库去丰富问答,例如下面这篇文章:
但如果知识内容是可以通过搜索引擎查询到的话,此时使用LangChain
中的 Agents
代理某个搜索引擎(比如谷歌搜索),根据搜索的结果总结回答内容,无疑是一个低成本的方案。
下面开始实践下 LangChain
将 ChatGPT
和 谷歌搜索 整合到一起后的效果。
二、谷歌搜索 API Key 申请
首先访问 https://serpapi.com/ 注册账号,可以选择 GitHub
登录和 Google
登录,如果有的话直接登录:
然后来到 https://serpapi.com/manage-api-key 中,生成 API Key
:
由于我先前已经生成过 API Key
所以这里显示的是 Regenerate API Key
如果第一次生成Api Key
,需要选择一个套餐,这里可以选择免费套餐,每个月可以免费调用 100
次:
选择前需要验证邮箱和手机号,验证后就可以继续了。
三、langChain 使用 Google 搜索 Agents
安装 Google
搜索依赖:
pip install google-search-results
整合:
from langchain.agents import load_tools, AgentType
from langchain.agents import initialize_agent
from langchain.chat_models import ChatOpenAI
from langchain import PromptTemplate
import os
# llm
openai_api_key = os.environ["OPENAI_API_KEY"]
llm = ChatOpenAI(temperature=0.5, openai_api_key=openai_api_key, model_name="gpt-3.5-turbo")
# 谷歌搜索 key
serpapi_api_key = os.environ["SERPAPI_API_KEY"]
toolkit = load_tools(["serpapi"], llm=llm, serpapi_api_key=serpapi_api_key)
agent = initialize_agent(
tools=toolkit,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
template = "{value},请使用中文回答"
prompt = PromptTemplate(
input_variables=["value"],
template=template,
)
while True:
questions = input("请输入问题: \n")
if not questions or questions == '':
print('输入问题为空,无法做出回答!')
continue
if questions == "0":
break
print("回答结果: \n")
res = agent.run(prompt.format(value=questions))
print(res)
效果测试:
问题:介绍下什么是 langchain?
问题:介绍下 CSDN 小毕超