LangChain 基于 ChatGPT 整合 Google 搜索 强化问答应用

文章介绍了如何使用LangChain的Agents功能结合ChatGPT和谷歌搜索API,以提升对特定问题的回答质量。当ChatGPT无法提供满意答案时,Agents能代理谷歌搜索,依据搜索结果生成回答,提供了一种低成本的知识扩展方案。
摘要由CSDN通过智能技术生成

一、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 基于 ChatGPT 构建本地知识库问答应用

但如果知识内容是可以通过搜索引擎查询到的话,此时使用LangChain 中的 Agents 代理某个搜索引擎(比如谷歌搜索),根据搜索的结果总结回答内容,无疑是一个低成本的方案。

下面开始实践下 LangChainChatGPT 和 谷歌搜索 整合到一起后的效果。

二、谷歌搜索 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 小毕超

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小毕超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值