不务正业地蹭个热点。

笔者现在在维护Unity脚本库PuerTS。许多同学都知道,维护开源库有一个十分常见的苦楚:你的运用者压根不看你辛苦写的文档。

不只是开源库,哪怕像小程序这样的闭源库、或是愈加接近用户的一些产品,也都会呈现这样的困扰 —— 关于一个切当的疑问,直接提问无疑比在文档里漫无目的的搜寻更符合人的直觉。

ChatGPT出来之后,普洱TS社区立刻也有人尝试去ChatGPT上问普洱相关的问题,可是得到的都是这样的答案:

【GPT】写了技术文档别人不看?用GPT+llama_index解决!

答案明显是错的,普洱TS分明是在Unity和Unreal里执行Javascript的环境!

呈现这个原因是因为ChatGPT内部的数据,仅截止2021(无论是gpt-3.5 API或是浏览器ChatGPT都是

【GPT】写了技术文档别人不看?用GPT+llama_index解决!

当然,它内部的数据里没有,就有人想到了给他喂数据。给ChatGPT相关提示之后,他就能得出正确的定论:

【GPT】写了技术文档别人不看?用GPT+llama_index解决!

可是,喂数据的方法,也并没有那么好用。首要你的技术/产品文档会有许多页许多字,你不行能在浏览器端完结这个作业。假如用API的话,OpenAI的API是按token数(约等于字数)来收费的,假如用户每次问问题,都将整个文档给它的话,你的本钱将会十分惊人。

更何况,GPT3.5是约束一次只能给4096token的(GPT4能够到32K,可是GPT4要贵几十倍,你的本钱愈加惊人)

【GPT】写了技术文档别人不看?用GPT+llama_index解决!

处理ChatGPT数据来历问题的思路

为了处理GPT的这两个问题:

  1. 内部数据源旧

  2. 外部输入数据长度受限、且与本钱正相关

openai官方cookbook其实有供给思路。思路比较长,笔者直接总结:用查找引擎的思路将相关材料汇总、裁剪后,喂给GPT。

这就是new Bing所做的事,这也是为什么new Bing看起来会比GPT3.5棒。关于查找引擎能查找到的内容,他的答复就准确了许多,并且会把出处告诉你。

【GPT】写了技术文档别人不看?用GPT+llama_index解决!

可是,假如SEO做的差些,页面藏得深一些,甚至比如说你的文档不是外网可见的,就不能用这个方法了。

【GPT】写了技术文档别人不看?用GPT+llama_index解决!

并且new Bing的脾气大的不行。

llama_Index

(这段是new Bing写的)llama_index库是一个项目,它供给了一个中心接口,能够将您的语言模型(LLM)与外部数据连接起来[2]。它供给了一组数据结构,可认为各种LLM任务索引很多数据,并消除了关于提示巨细约束和数据摄入的问题[1]。它还支持与LangChain和LlamaHub等其他东西或库的集成[2] [3] [4]。

有了llama_index之后,我们就能够将自己的文档库经过llama_index生成一份index文件。当用户提问时,llama_index经过的index文件能索引到相关的材料,将他们一起喂给GPT。这样,最终能得到更准确的答案。llama_index的运用也十分简单,只要你有一台能够拜访GPT3.5 API的机器,有OPENAPI_KEY,分分钟就能搞定:

# make_index.py   生成index文件
import os
os.environ["OPENAI_API_KEY"] = ''
from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader
# doc是你文档所存放的方位,recursive代表递归获取里面所有文档
documents = SimpleDirectoryReader(input_dir='doc',recursive=True).load_data();
index = GPTSimpleVectorIndex(documents);
index.save_to_disk('index.json');
# query_index.py   从index文件里取得相关材料并向GPT提问
import os
import sys
os.environ["OPENAI_API_KEY"] = ''
from llama_index import GPTSimpleVectorIndex
index = GPTSimpleVectorIndex.load_from_disk(os.path.dirname(__file__) + '/index.json')
print(index.query('你有什么问题'))

作用展示

笔者做了个discord机器人来测验。对puerts有了解的朋友能够直接上普洱的discord用/gpt 指令来询问。

【GPT】写了技术文档别人不看?用GPT+llama_index解决!

比照一下上面我问new Bing关于扩展函数的问题的作用,明显好了太多。当然没有供给参阅链接略微有点麻烦。

上面这个问题在普洱里的文档在 https://puerts.github.io/docs/puerts/unity/wrapper/extension 。能够看到GPT3.5对md的处理似乎还不够好。

别的,假如文档里本来就比较长篇大论,没有给到重点,llama_index+GPT3.5的作用就略显一般:

【GPT】写了技术文档别人不看?用GPT+llama_index解决!

上述完全是错的,原文在: https://puerts.github.io/docs/puerts/unity/other/debugging

当然,我能够经过人为的手法修正我的文档,将它改得对GPT更友爱一些。总之用来处理大部分不看文档的人是没问题了。

【GPT】写了技术文档别人不看?用GPT+llama_index解决!

上面这是一个语料比较好的问题,它就答得不错。

定论

  1. 假如要让GPT作为检索型应用,像llama_index这样的辅佐数据索引库会十分有用。有了它的协助,做开源库、闭源库、其他带文档的产品的朋友,能够轻松削减用户的教育本钱。
  2. 尽管现在不确定GPT-4作用。但从本钱方向考虑,以后的文字内容,也许会像查找引擎时代有SEO一样,要考虑AIO。即写文字的时分要考虑AI能否总结出正确的内容。