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

news2024/11/17 7:35:10

一、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 小毕超

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/707419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ISO26262】汽车功能安全第4部分:系统层面

第4部分:产品开发:系统层面 GB/T34590的本部分规定了车辆在系统层面产品开发的要求,包括: ———启动系统层面产品开发; ———技术安全要求的定义; ———技术安全概念; ———系统设计; ———相关项集成和测试; ———安全确认; ———功能安全评估;及 ———生产发布。

程序运行期间加载动态库

note 相关系统调用接口&#xff1a;dlopen\dlclose\dlerror\dlsym code math.c int add(int x, int y) {return (xy); }int sub(int x, int y) {return (x-y); } main.c #include <stdio.h> #include <stdlib.h> #include <dlfcn.h>int main(int argc, …

VMware网络模式大揭秘:打造高效稳定的虚拟机通讯网络

文章目录 一 VMWare网络连接1.1 查看VM网络模式1.2 VMWare三种网络模式1.2.1 桥接模式&#xff08;Bridged Mode&#xff09;1.2.2 主机模式&#xff08;Host-Only Mode&#xff09;1.2.3 NAT模式&#xff08;Network Address Translation Mode&#xff09; 1.3 补充知识&#…

linux基础命令总结

目录标题 目录操作1.绝对路径和相对路径2.目录的基本操作3.chomd、chown、chgrp4.cd命令 文件操作1.touch2.more4.cat5.grep6.rm7.cp8.mv9.find 磁盘操作1.df2.du date、passwd1.date2.passwd su、clear、man、who1.su2.man3.clear4.who unameuptimefreepsps与grep、kill1.与gr…

【Leetcode】动态规划 刷题训练(八)

文章目录 413. 等差数列划分状态转移方程完整代码 978. 最长湍流子数组题目解析状态转移方程f[i]状态转移方程g[i]状态转移方程 完整代码 139. 单词拆分状态转移方程初始化完整代码 413. 等差数列划分 点击查看&#xff1a;等差数列划分 如果一个数列 至少有三个元素 &#x…

【操作系统】键盘敲入字母时,操作系统期间发生了什么?

【操作系统】键盘敲入字母时&#xff0c;操作系统期间发生了什么&#xff1f; 参考资料&#xff1a; 键盘敲入 A 字母时&#xff0c;操作系统期间发生了什么&#xff1f; 【操作系统】浅谈 Linux 中的中断机制 文章目录 【操作系统】键盘敲入字母时&#xff0c;操作系统期间发…

小驰私房菜_26_YUV数据存在数据对齐,工具打开花图时如何处理?

【问题背景】 在Qcom Camx框架下&#xff0c;dump的yuv,yuv数据有时会存在数据对齐&#xff0c;也就是app端下发的size和我们dump出来的size是不一致的。 这个时候&#xff0c;我们用yuv工具查看yuv数据的时候&#xff0c;宽高如果直接设置的app端下发的size&#xff0c;这个时…

案例解析 | 虚拟数智人“岭梅香”——民间博物馆文化探寻者

TA 是湾区民间文化探寻者 还是广东民间博物馆宣传大使 万里归来颜愈少 笑时犹带“岭梅香” 虚拟数智人 是文博行业走进“元宇宙”的“探路者” 为了践行国家文化数字化战略&#xff0c;按照文化和旅游部“上云用数赋智”的要求&#xff0c;南方都市报、N视频联合广州虚拟…

MATLAB Onramp

目录 任务 音频频率 以表的形式导入数据 循环 恒星运动 知识点摘要 任务 您可以按键盘上的向上箭头键重新调用以前的命令。请注意&#xff0c;要执行此操作&#xff0c;命令行窗口必须为活动窗口。 按向上箭头键以回到命令 m3*5&#xff0c;然后将该命令编辑为 m3*k cle…

【209. 长度最小的子数组】

目录 一、题目解析二、算法原理三、代码实现 一、题目解析 二、算法原理 注意点&#xff1a; 三、代码实现 我自己写的代码(我的评价是很挫) class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int left 0, right -1, ret INT_MAX…

【算法与数据结构】28、LeetCode找出字符串中第一个匹配项的下标

文章目录 一、题目二、暴力穷解法三、KMP算法四、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、暴力穷解法 思路分析&#xff1a;首先判断字符串是否合法&#xff0c;然后利用for循环&#xff0c;取出子字符串…

Flutter卡片分享功能实现:将你的内容分享给世界

前言 在app中&#xff0c;在实现分享功能的时候&#xff0c;通常会有一种以卡片形式展示和分享内容的分享方式。这种功能可以将信息以整洁、易读的方式呈现给用户&#xff0c;使他们能够快速了解内容的关键信息&#xff0c;并将其分享给其他人。那么在这篇文章中&#xff0c;就…

【1004.最大连续1的个数Ⅲ】

目录 一、题目解析二、算法思路三、代码实现 一、题目解析 二、算法思路 三、代码实现 class Solution { public:int longestOnes(vector<int>& nums, int k) {int ret0,count0;int left0,right0;for (; right < nums.size();right ){if (nums[right] 0){count;…

C++——string容器常用操作汇总

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.string容器基本概念二.string容器常用操作✅前言及函数参数的说明一.构造和析构二.string特性操作三.字符操作四.赋值操作五.拼接操作六.交换…

Ubuntu安装gcc和g++图文教程

文章目录 一、gcc 和 g介绍二、ubuntu安装gcc和g三、gcc和g的选项总结 一、gcc 和 g介绍 GCC&#xff08;GNU Compiler Collection&#xff09;是由GNU项目开发的一套广泛使用的开源编译器集合。它支持多种编程语言&#xff0c;包括C、C、Objective-C、Fortran、Ada和其他语言…

基于python深度学习的水果或其他物体识别小程序

效果图如下&#xff1a; 代码演示和demo仓库看b站视频003期&#xff1a; 到此一游7758258的个人空间_哔哩哔哩_bilibili 代码展示&#xff1a; 数据集图片放置在data文件夹下&#xff0c;大家可以根据自己需要比如识别其他物体&#xff0c;只需要模仿data文件夹下的文件命名放…

浅谈基于分项计量的校园能源监管平台解决方案设计

张心志 关注acrelzxz 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;伴随着我国经济的飞速发展&#xff0c;国家机关办公建筑和大型公共建筑高耗能的问题日益突出&#xff0c;如何解决建筑能耗己成为一个国家总能耗的重要组成部分。学校是肩负着教育、科研和社会服…

Oracle中的连接方式

Oracle中的连接方式 对于数据库中表与表之间的连接&#xff08;内连接、外连接&#xff09;都可以看成集合之间的运算操作。 内连接 select * from a_table a inner join b_table b on a.id b.id; 相当于求两个集合中满足条件的结果&#xff0c;即交集。 外连接 左/外连接&a…

计算机性能

计算机性能 计算机性能描述 计算机性能测试程序 计算机性能速度指标 计算机性能计算 设1号计算机执行任务耗时3s,2号计算机执行任务耗时2s&#xff0c;则有 P11/3 P21/2 则相对性能比为 P1/P22/3 &#xff08;p1的性能为p2性能的2/3&#xff09;&#xff0c;因为P1/P2 < …

软考A计划-系统集成项目管理工程师-项目范围管理(一)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…