索引构造与信息检索:让 ChatGPT 成为 Selenium 问答助手

这是chatgpt为我生成的3个标题,我选了第3个。

  1. 利用 Langchain 和 GPT 实现 Selenium 机器人自动问答

  2. 向量化存储和检索:如何用相似度搜索匹配 Selenium 知识?

  3. 索引构造与信息检索:让 ChatGPT 成为 Selenium 问答助手

之前有很多同学会问我一些有关selenium的问题,因为精力有限,不能一一回答。最近正好chatgpt为代表的生成式ai非常火爆,那么我们能不能训练一个有selenium知识的 机器人帮我回答问题呢?人的时间有限,但是机器人可以一直在线工作,妥妥的劳模了。

经过一番调研,我发现langchain这个库也许可以祝我一臂之力。

整体思路

整理思路很简单,就是gpt是预先训练好的模型,有自己的先见知识,这也是为什么我们问它问题它会给出答案的原因,因为它的模型里就固化了这些知识。然而gpt3模型用的数据应该是截止到2021年的,也就是2年多之前的数据了。尽管selenium总体迭代速度不快,但这两年也多多少少发生了一些变化,直接用gpt模型的先见知识可能会造成一些回答不准确的情况。

所以我们可以用gpt的两大能力,而不是先见知识。

  • 推断的能力。给出一些上下文,让gpt总结和推断问题的答案

  • 生成内容的能力

所以现在问题就变成了如何给gpt”灌“入最近的selenium知识?

其实我们可以在gpt的prompt里面加上一些实时的准确的上下文,然后让gpt去根据上下文内容实时的生成问题的答案,比如下面这个prompt

你是selenium问答机器人,你的任务是根据我提供的selenium相关信息来回答用户提出的问题。忘掉你之前的学到的知识,只用我提供的信息去回答。如果问题超出了我提供的信息范围,你就回答不知道。==============
selenium的一些最新的介绍
...
...
...
==============
问题:selenium是什么?

这样一来任务就变成了如何根据用户的问题搜索相关的selenium知识? 这里就要用到向量化存储和检索了。

向量化存储和检索

先看看chatgpt的解释吧。

Q: 我是一个5岁的小孩,请给我解释一下什么是向量化存储和检索,要让我能看懂A: 嘿,你好呀!向量化存储和检索是指将文本、图像或其他数据转换成一组数字,并使用这些数字来存储和查找信息。可以把这些数字看成是一个有很多数字的表格,每一个数字代表着这个信息的一个特征。比如说,对于一张图片,可以用数字来表示它的长宽、色彩等等特征。当我们需要查找信息时,可以用相似度来比较数字之间的差距,来找到和我们要查找的信息最相似的那一组数字,从而找到相关的信息。这个技术可以用在很多场合,比如说搜索引擎、推荐系统、图像识别和自然语言处理等等。

其实我们可以简单理解为相似度搜索。

我们要处理的问题是:用户输入问题,然后根据相似度,找到最匹配的一些相关材料,然后返回这些内容。这种工作向量化索引和检索是可以帮我们很好的完成的。

实现流程

这样我们可以把流程梳理清楚了,这里有两个流程,分别是爬一些selenium的数据,向量化之后存到向量化数据库里,可以理解成为是构造索引的过程;以及搜索用户提出的问题,给出相关答案,然后要求gpt生成内容,可以理解为信息检索和生成的过程。

索引构造过程

我随便在selenium的主页拿了3个页面的内容,分别是

  • https://www.selenium.dev/documentation/overview/

  • https://www.selenium.dev/documentation/overview/components/

  • https://www.selenium.dev/documentation/overview/details/

使用下面的js脚本可以直接拿到页面内容

document.querySelector('.td-content').textContent

我把内容保存在了se.txt文件里。下面是流程的简单分析

从se.txt中读取内容 -> 切分内容里的文本 -> 调用openai的向量化接口进行向量化 -> 将向量化过的内容保存在向量数据库中

检索及内容生成的过程

调用openapi接口向量化用户问题 -> 在向量数据库中搜索相关答案 -> 将问题和答案合成为prompt发送给gpt3.5 -> 展示gpt返回的内容

代码实现

from langchain.chains import RetrievalQA
from langchain.llms import OpenAIfrom langchain.document_loaders import TextLoader
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma
import sysdef create_index():loader = TextLoader('./se.txt', encoding='utf8')documents = loader.load()text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)docs = text_splitter.split_documents(documents)embeddings = OpenAIEmbeddings()vectordb = Chroma.from_documents(documents=docs, embedding=embeddings, persist_directory='.')vectordb.persist()vectordb = Nonedef query(question: str):# Load from existing index# Now we can load the persisted database from disk, and use it as normal. embeddings = OpenAIEmbeddings()vectordb = Chroma(persist_directory='.', embedding_function=embeddings)retriever = vectordb.as_retriever(search_kwargs={"k": 1})qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=retriever)res = qa.run(question)print("=" * 20)print(res)if __name__ == "__main__":cmd = "q"if len(sys.argv) > 1:cmd = sys.argv[-1]if cmd in ['c', 'create']:create_index()
elif cmd in ['q', 'query']:query("how selenium control the browsers")
else:print(f"unsupport cmd {cmd}")

下面是chatgpt对上面这段代码的解释

这是一段 Python 代码,其目的是建立一个问答系统,可以对输入的自然语言问题进行回答。具体地,代码中使用了以下库和模块:

  • langchain.chains:其中包含了一个叫做 RetrievalQA 的类,该类封装了一个检索模型和一个答案提取模型,用于回答问题。

  • langchain.llms:其中包含了一个叫做 OpenAI 的类,用于连接 OpenAI API 并执行自然语言任务。

  • langchain.document_loaders:其中包含了一个叫做 TextLoader 的类,用于从本地文件系统中加载文档。

  • langchain.embeddings:其中包含了一个叫做 OpenAIEmbeddings 的类,用于计算文本的向量表示。

  • langchain.text_splitter:其中包含了一个叫做 CharacterTextSplitter 的类,用于将长文本切分为小段落。

  • langchain.vectorstores:其中包含了一个叫做 Chroma 的类,用于构建向量数据库,并提供了向量检索的功能。

代码中的 create_index 函数用于创建向量数据库,具体地,它首先使用 TextLoader 加载一个名为 se.txt 的文本文件,并使用 CharacterTextSplitter 将该文本文件分成多个小段落。然后,它使用 OpenAIEmbeddings 计算每个小段落的向量表示,并使用 Chroma 构建向量数据库,并将其持久化到本地文件系统中。

代码中的 query 函数用于回答问题,具体地,它首先加载之前创建的向量数据库,并使用 Chroma 将输入的自然语言问题转化为向量表示,并在向量数据库中进行检索,找到最相关的文本段落。然后,它使用 RetrievalQA 类的实例对文本段落进行答案提取,并将结果打印输出到控制台。

在 __main__ 函数中,代码首先解析命令行参数,如果没有参数或者参数为 q 或 query,则调用 query 函数回答问题;如果参数为 c 或 create,则调用 create_index 函数创建向量数据库;否则,打印错误信息。

只能说解释的比我好。另外RetrievalQA这个类实际上是一问一答,并没有多轮对话的能力。

效果

Q: How selenium control the browsersUsing embedded DuckDB with persistence: data will be stored in: .
====================Selenium controls web browsers by remotely controlling browser instances and emulating a user's interaction with the browser. It allows users to simulate common activities such as entering text into fields, selecting drop-down values, checking boxes, and clicking links in documents. Additionally, it provides many other controls such as mouse movement, arbitrary JavaScript execution, and more.

如果不自己灌数据的话,这个问题的答案是这样的

Selenium is an open-source testing tool that can control the browsers and automate web-based applications. Selenium uses the WebDriver protocol to control different browsers such as Chrome, Firefox, Safari, Internet Explorer, Edge, and Opera.When a test script interacts with Selenium's API commands such as findElement(), click(), sendKeys(), etc., it creates a request using the WebDriver protocol. The request is then sent to a browser-specific driver (such as chromedriver.exe for Google Chrome), which interprets the command and sends instructions to the browser through its own API.The browser executes those instructions and returns results back to the driver. The driver then processes these results and sends them back to Selenium along with any relevant information about errors or exceptions encountered during execution.In summary, Selenium controls browsers by communicating directly with their respective drivers using protocols specific to those drivers in order to manipulate webpage elements programmatically.

看上去更好一点,但使用的是先见知识,不一定能保证正确性和实时性。不过对于这个问题,chatgpt生成的回答已经是非常完美了。

总结

让chatgpt给我写个总结。

这篇文章提出了使用生成式AI ChatGPT和LangChain库训练一个Selenium知识问答机器人的想法。机器人需要灌入最新的Selenium知识并使用向量化存储和检索来搜索相关材料以回答用户的问题。文章介绍了实现流程,包括爬取Selenium数据、向量化存储和检索、信息检索和生成内容。

这项技术非常适合构建专有领域的知识库,比如法律咨询,医疗咨询等。另外配合一些代码切片的库还可以实现代码生成功能。

总之AI技术可以让我们用非常低的成本实现一些之前很难去搞定的工作,确实挺有意思的。

最后: 为了回馈铁杆粉丝们,下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

全套资料获取方式:

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专利检索常用的网站有哪些?

科研文献浩如烟海,如何才能找到对自己有重要参考意义的文献,是每个科研工作者都必须要面对的课题,而从其中快速地、准确地获取最有用的信息,更是重中之重。 专利检索可以帮助看到你想要保护的发明创造是否已经有人在你之前申请、并…

专利检索大法,倾囊相受!

1.电脑端 中国及多国专利审查信息查询(单击跳转) 这是官方的一个查专利的网站。可以查询中国国家知识产权局、欧洲专利局、日本特许厅、韩国特许厅、美国专利商标局受理的发明专利审查信息。 第一次使用需要注册,按照引导即可。 可以搜索自…

专利说明书检索与PDF文件下载方法

专利说明书检索与PDF文件下载方法 专利检索说明书下载 专利检索 到国知网的专利检索与分析页面(https://pss-system.cponline.cnipa.gov.cn/conventionalSearch),注册登录之后,输入关键词进行检索。 检索得到的专利,…

干货 | 专利怎么检索?手把手教授指南来了

Hello, 这里是壹脑云科技圈,我是TingZhang~ 专利研究和申请切不能存有侥幸心理,据不完全统计,各国因未查阅专利文献、使研究课题失去价值,每年造成的损失数以十亿计,间接损失就更多了,我国在"七五&qu…

ChatGPT专业应用:自动生成课程简介

正文共 704 字,阅读大约需要 4 分钟 课程编辑/产品运营必备技巧,您将在4分钟后获得以下超能力: 1、自动生成课程简介 2、快速优化格式并附有丰富的emoji Beezy评级 :A级 *经过寻找和一段时间的学习,一部分人能掌握。…

产品经理之SOW、SOP怎么做?绘制流程推荐软件

在这里推荐一个叫“人鱼”,英文叫“Mermaid”的软件,它可以自动渲染流程图。 另外在Chatgpt里面也可以解析写的代码,对应的sop是什么,比较方便。 两者结合,进可攻退可守。另外再附录执行代码案例。 flowchart TDE…

GPT-4 的 6 个最佳使用场景

https://www.howtogeek.com/884077/best-uses-for-chatgpt-4/ 作者:SYDNEY BUTLER 无论是在 ChatGPT 中还是通过 API,对 OpenAI 的 GPT-4 模型的访问比 GPT-3.5 限制更多。这意味着你需要慎重考虑在何种情况下使用 GPT-4,并选择性地将最适合…

ChatGPT-4 救了我的狗命

上一篇:当 ChatGPT 被职场 PUA ,笑麻了! 这两天,一篇关于“GPT-4救了我狗的命”的帖子属实有点火: 短短一两天就有数千人转发,上万人点赞,网友在评论区讨论得热火朝天。 △ 是真狗命&#xff0c…

从学校到职场:在阿里的这7年

简介: 本文不仅希望能给一些初入职场的同学一些思考,也是通过自己阿里7年的总结,对自己未来的一种期望,也希望自己未来再遇到槽糕的处境迷茫的时候,可以回看下自己的心路历程,并做出更理性的选择。 引言&a…

老店迎新客:向量数据库选型与押注中,没人告诉你的那些事

‍ ‍原创:谭婧‍ ‍ (一)关键词:老店“迎”新客 某家云计算厂商员工告诉我,拜访客户,刚坐下,客户说的第一句话就是: “你先给我推荐一个向量数据库吧。” 大模型火了,把…

AI教父变成“吹哨人” 他到底在警觉什么?

“我现在对自己过去的工作感到后悔,我找借口来安慰自己:就算我没做,别人也会做的。”有AI“教父”之称的杰弗里辛顿 (Geoffrey Hinton)在接受媒体采访时透露出悔意。 作为AI深度学习领域的代表性人物,辛顿一生都在该领域深耕&…

可能是最有前途的国产大模型:讯飞星火认知大模型

大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加:keeepdance,备注:chatgpt,拉你进群。 昨天下午,科大讯飞发布了自己的大模型——星火认知大模型。在上周他们还在…

数学天才陶哲轩主持白宫生成式AI工作组,李飞飞、Hassabis发表演讲

夕小瑶科技说 分享 来源 | 新智元 最近,「数学天才」陶哲轩表示,自己将领导白宫生成式人工智能工作组,就当前AI评估并收集意见。在陶哲轩看来,加入工作流的ChatGPT在数学专业领域中,并没有太多增值。 近来&#xff0c…

陶哲轩宣布主持白宫生成式AI工作组!李飞飞、Hassabis发表演讲

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【Transformer】微信技术交流群 转载自:新智元 | 编辑:编辑部 【导读】最近,「数学天才」陶哲轩表示,自己将领导白宫生成式人工…

2023 年 06 月编程语言排行榜,Python 还会保持第一吗?

(永久免费,扫码加入) TIOBE 2023 年 06 月份的编程语言排行榜已经公布,官方的标题是:Python 还会保持第一吗?(Will Python remain number 1?) 在过去的 5 年里,Python …

2022年AI顶级论文 —生成模型之年(中)

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 过去十年来,人工智能技术在持续提高和飞速发展,并不断冲击着人类的认知。 2012年,在ImageNet图像识别挑战赛中,一种神经网络模型(AlexNet&…

大模型battle?LLM排行榜出炉,清华竟位列第五!

【CSDN 编者按】自GPT爆火之后,当下流行的开源大型语言模型越来越多,LMSYS 组织(UC伯克利博士Lianmin Zheng牵头举办)建立了 Chatbot Arena 基准平台通过匿名随机竞争来评估他们,随后发布 Elo 等级排行榜,排…

手把手教你写个扫雷(插旗,及展开图解与实现)

学习了二维数组以后,不仅可以写个三子棋,我们也可以更近一步,来写个扫雷玩玩? 编写程序的时候,一定要先做好构思与大体思路步骤,扫雷的基本运行逻辑其实并不算非常复杂,我们只需要把每一步捋顺…

四步手把手教你实现扫雷游戏(c语言)

七步手把手教你实现扫雷游戏 c语言实现扫雷游戏一. 整体思路二. 设计棋盘以及初始化三. 埋雷四. 扫雷 c语言实现扫雷游戏 一. 整体思路 和上一篇文章的三子棋一样 第一步咱们创建三个工程文件 game.c 文件 用来实现游戏的函数定义 game.h 文件 用来声明函数以及需要的头文件 …

C/【扫雷】

**本文是用C语言写的扫雷小游戏———一个C语言前期寓教于乐的小游戏。 🌱博客主页:大寄一场. 🌱系列专栏:C语言学习笔记 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 一.游戏菜单的创建 二.游戏实现…