草庐IT

我让 ChatGPT 化身为全知全能的文档小助理,啥姿势她都会......

云原生实验室 2023-03-28 原文

ChatGPT 虽然只是一个对话型人工智能,但已经震惊了全世界,有人甚至认为人工智能的奇点已经到来。未来一定会有很多人失业,从工业革命开始,每出现一次重大的技术变革,就必然会有一批人失业,我们要直面现实,承认自己的工作会被 AI 代替,你逃避也罢,无视也罢,都没有用,改变不了事实。

虽然目前网上基于 ChatGPT 的产品已经琳琅满目,但很多人还是觉得 ChatGPT 对自己的生活并没有产生多大的影响。但是你忽略了一个事实,ChatGPT 才问世几个月而已,基于 ChatGPT 的应用场景目前还在探索中,很多场景还是把 ChatGPT 当成一个玩具,所以对大家的工作和生活并没有产生重大的影响。

现在我们来想象一个场景,假设有这样一个机器人,它对某个开源项目文档的内容了如指掌,就像一个全知全能的神,你对这个产品的使用有任何疑问,都可以直接问它,它会立刻给你一个准确的答案,这会不会彻底改变你的项目文档使用体验?

现在开源项目的标配都有微信群和 Slack 群或者 Discord 群,你把这个全知全能的神接入这些社群,任何人的任何问题都可以得到及时有效的回复,这该有多爽?

你再想想我们之前都是怎么使用项目文档的,有的文档会提供一个搜索框,你可以直接通过关键词进行搜索,它会给你呈现一大堆跟你的关键词相关的内容,但是究竟这些内容是不是你想要的,你需要自己一个一个点开链接去看一看,找一找,这个筛选和判断过程非常浪费时间和精力。

还有的项目文档更惨,连搜索功能都没有,你需要自己根据目录去判断哪个章节可能有你想要的内容,体验更糟。。。

现在我告诉你还真有这样一个机器人,它大大简化了在项目文档中寻找信息的过程。由于它集成了强大的 ChatGPT,开发人员可以轻松地提出文档涉及的相关项目的问题,并及时得到准确的答案,让你告别耗时的手动搜索。它就是 DocsGPT!!

项目地址:https://github.com/arc53/DocsGPT

我 Fork 了该项目,并将 Web 界面语言改成了中文,英文不太给力的同学可以直接使用我的项目? https://github.com/yangchuansheng/DocsGPT

使用起来非常简单,首先在浏览器中输入访问地址 https://docsgpt.icloudnative.io/ 打开 Web 界面,然后输入自己的 OpenAI API Key:

你可以选择特定的文档来进行提问,比如我这里选择了 Pandas:

默认只支持部分文档,包含 pandas、langchain、python 等。

但是我们可以通过训练其他文档来使它支持任意文档。以我的中文版 DocsGPT 为例,我就拿它训练了一个让前端能够搞全栈的神奇的工具 laf

有搞云开发的,有可能知道 Unicloud。laf 就是类似 Unicloud 的东西,也是一个一体化的开发平台。

说简单点,让前端搞后端,那么需要几几样东西,首先就是存放东西的数据库,还有就是用来存放图片文件的文件存储,最后就是前端要去调用后端服务的接口。

这三件套,laf 平台都集成了,大大降低了门槛,只要你懂 js,就可以去写后端的业务了,其他都不用你操心。

这是 laf 的官方文档:https://www.lafyun.com/

文档的 GitHub 链接在这里:https://github.com/labring/laf/tree/main/docs

我要做的事情很简单,先把 DocsGPT 和 laf 项目 clone 到本地,然后进入 DocsGPT 项目的 scripts 目录,新建目录 inputs,再将 laf 项目中的 docs 目录复制到 inputs 目录下。

接下来需要在 scripts 目录下创建一个文件 .env,输入以下内容:

OPENAI_API_KEY=<your-api-key>

请将 <your-api-key> 替换成你的 OpenAI API Key。

最终执行以下命令就会开始训练:

$ python ingest.py ingest

训练完成后,会生成两个文件:index.faissindex.pkl。将这两个文件移动到 application 目录即可完工。

最后按照正常的步骤启动 DocsGPT 即可。

为了方便大家快速部署,我还构建了 Docker 镜像,可以直接通过以下命令部署:

$ docker run -d --name docsgpt ghcr.io/yangchuansheng/docsgpt:zh-cn

同时我还提供了一个 Demo 页面,想直接体验的同学可以访问 Demo 页面:https://docsgpt.icloudnative.io/

注意:如果出现异常(比如机器人没有回应),可以清空页面缓存重试。

一个全知全能的 laf 小助理就这样诞生了,爽不爽?

未来我们会尝试将其接入微信群和 Discord 群组,对 laf 感兴趣的同学欢迎加入我们的微信群或者 Discord 群组静静等待:

  • Discord 群组链接:https://discord.gg/pSVfU7u5
  • wx 群:添加我的个人 wx:cloud-native-yang,然后给我发送暗号:laf

有关我让 ChatGPT 化身为全知全能的文档小助理,啥姿势她都会......的更多相关文章

  1. 亚特兰蒂斯的回声(中文版): chatGPT 的杰作 - 2

    英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古

  2. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  3. Ruby 等同于 Sphinx 文档生成器? - 2

    Ruby有一些不错的文档生成器,例如Yard、rDoc,甚至Glyph。问题是Sphinx可以做网站、PDF、epub、LaTex等。它在重组文本中完成所有这些事情。在Ruby世界中有替​​代方案吗?也许是程序的组合?如果我也能使用Markdown就更好了。 最佳答案 自1.0版以来,Sphinx有了“域”的概念,它是从Python和/或C以外的语言标记代码实体(如方法调用、对象、函数等)的方法。有一个rubydomain,所以你可以只使用Sphinx本身。您唯一会缺少的(我认为)是Sphinx使用autodoc从源代码自动创建文档

  4. ruby-on-rails - 在 irb 中阅读文档 - 2

    我怀念ipython的一件事是它有一个?为特定功能挖掘文档的运算符。我知道ruby​​有一个类似的命令行工具,但是我在irb中调用它非常不方便。ruby/irb有类似的东西吗? 最佳答案 Pry是IPython的Ruby版本,它支持?命令来查找有关方法的文档,但语法略有不同:pry(main)>?File.dirnameFrom:file.cinRubyCore(CMethod):Numberoflines:6visibility:publicsignature:dirname()Returnsallcomponentsofthef

  5. ruby - 使用 Nokogiri 和 Ruby 从 html 文档获取链接和 href 文本? - 2

    我正在尝试使用nokogirigem提取页面上的所有url及其链接文本,并将链接文本和url存储在散列中。FooBar我想回去{"Foo"=>"#foo","Bar"=>"#bar"} 最佳答案 这是一个单行:Hash[doc.xpath('//a[@href]').map{|link|[link.text.strip,link["href"]]}]#=>{"Foo"=>"#foo","Bar"=>"#bar"}拆分一点可以说更具可读性:h={}doc.xpath('//a[@href]').eachdo|link|h[link.t

  6. ruby - 如何让 Nokogiri 解析并返回 XML 文档? - 2

    这是一些奇怪的例子:#!/usr/bin/rubyrequire'rubygems'require'open-uri'require'nokogiri'print"withoutread:",Nokogiri(open('http://weblog.rubyonrails.org/')).class,"\n"print"withread:",Nokogiri(open('http://weblog.rubyonrails.org/').read).class,"\n"运行此返回:withoutread:Nokogiri::XML::Documentwithread:Nokogiri::

  7. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式

  8. 智能客服 | 浅谈人工智能聊天机器人ChatGPT - 2

    2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动

  9. 【ChatGPT】ChatGPT 的 N 种用法 - 2

    目录ChatGPT简介技术原理应用未来发展ChatGPT的10 种用法ChatGPT简介ChatGPT是一种基于深度学习的大型语言模型,由OpenAI公司开发。技术原理GPT是GenerativePre-trainedTransformer的缩写,意为生成式预训练变压器。它的技术原理是使用了一个基于注意力机制的变压器(Trans

  10. Ruby YAML 多文档 - 2

    这是我的YAML文件“test.yml”:---alpha:100.0beta:200.0gama:300.0---3...第一个文档是一个散列。第二个文档是一个整数。我正在尝试将它们作为散列和整数加载到Ruby程序中。这是我目前的尝试:require'yaml'variables=YAML.load_file('test.yml')putsvariables.inspect 最佳答案 要访问单个文件中的多个YAML文档,请使用load_stream方法(正如“matt”在对其他答案之一的评论中提到的):YAML.load_stre

随机推荐