<iframe title="再见,GPTs" src="https://www.youtube.com/embed/mHXavIq5t6I?feature=oembed" height="113" width="200" allowfullscreen="" allow="fullscreen" style="aspect-ratio: 1.76991 / 1; width: 100%; height: 100%;"></iframe>
#GPTs #OpenGPTs #LangChain #本地部署 #知识库 #AI应用
## Key Takeaway
- OpenGPTs是LangChain推出的开源项目,旨在替代OpenAI的GPTs,提供更彻底的自定义能力。
- OpenGPTs支持更多模型(开源、闭源、云端、本地),可完全本地化运行,数据更安全,隐私性更强,费用更低。
- OpenGPTs高度定制化,代码开放,可随意修改,并能生成公开链接供团队共用。
- OpenGPTs功能模块包括Chatbot(模型选择、指令设置)、RAG(检索增强生成,支持文档检索)和Application(Chatbot+RAG+工具)。
- OpenGPTs提供了多种工具,如通用搜索和垂直搜索工具,弥补了ChatGPT工具的不足。
- OpenGPTs的真正潜力在于自定义和二次开发,为用户提供了极高的自由度。
## Full Content
看完这期视频,你就不再需要ChatGPT了。因为你完全可以用OpenGPTs替代,而且能做得更好。
OpenGPTs是LangChain前段时间推出的开源项目。看起来跟OpenAI的GPTs一样,支持一定程度的自定义,比如可以上传文档作为知识库,可以添加文生图、联机搜索等工具。不过说实话,要让AI成为真正的智能助理,这种程度还远远不够。
OpenGPTs在自定义方面做得更彻底:
- 支持更多模型,不只是OpenAI的。开源的、闭源的,云端的、本地的,都可以。
- 可以完全本地化运行。不只是大模型跑在本地,知识库中的文档也是放在本地,所以数据更安全、隐私性更强,费用也更低。
- 高度定制化。代码完全开放,可以随意修改。可玩性非常高。我去年之所以做newtype项目,就是对ChatGPT不满意,想要更高的自由度。
- 全部改装完了,还可以生成公开链接。比如给到团队共用,这一点非常棒!
OpenGPTs的安装有点麻烦。想先体验再做决定的话,官方有现成的demo,我拿这个跟大家具体介绍一下。
OpenGPTs的功能模块就三个:Chatbot、Rag,以及Application。你别看只有三个,但它们仨涵盖了所有类型的GPT应用。
Chatbot很简单,就两个设定:
第一、选择大模型。
官方在demo里把当前主流的大模型都列上了:三巨头GPT、Claude、Gemini,以及来自欧洲的Mixtral。
如果你想用别的大模型,比如通过Ollama跑开源大模型,找到backend文件夹里的app文件夹,对llms.py做一点点修改就行。
第二、下达指令,也就是大家很熟悉的Prompt。通过这个设置,AI就会按照你要求的角色、人格和做事方式去运行。
比如,我们可以创建一个专门翻译科技文章的bot。
首先定义角色和任务:
你是一位精通简体中文的专业翻译,尤其擅长将专业学术论文翻译成浅显易懂的科普文章。我希望你能帮我将以下英文论文段落翻译成中文,风格与科普杂志的中文版相似。
然后定义规则:
- 翻译时要准确传达原文的事实和背景。
- 即使上意译也要保留原始段落格式,以及保留术语,例如 FLAC,JPEG 等。保留公司缩写,例如 Microsoft, Amazon 等。
- 同时要保留引用的论文,例如 \[20] 这样的引用。
- 对于 Figure 和 Table,翻译的同时保留原有格式,例如:“Figure 1: ”翻译为“图 1: ”,“Table 1: ”翻译为:“表 1: ”。
- 全角括号换成半角括号,并在左括号前面加半角空格,右括号后面加半角空格。
- 输入格式为 Markdown 格式,输出格式也必须保留原始 Markdown 格式
- 以下是常见的 AI 相关术语词汇对应表:
- Transformer -> Transformer
- Token -> Token
- LLM/Large Language Model -> 大语言模型
- Generative AI -> 生成式 AI
最后定义策略:
分成两次翻译:
1. 根据英文内容直译,保持原有格式,不要遗漏任何信息
2. 根据第一次直译的结果重新意译,遵守原意的前提下让内容更通俗易懂、符合中文表达习惯,但要保留原有格式不变
我从论文里复制了两段话贴进去。翻译机器人把直译和意译的结果分两次给到,效果挺不错的。
这个就是最常见的用法。难点在于,你要站在AI的角度去理解任务,然后拆解任务。比如那个翻译机器人,你如果让它直接翻译,而不是先直译再意译,那产出肯定不会太好。在AI时代,这种思维非常重要,大家一定要有。
Chatbot只是调用了大模型的通用知识,如果想让AI还具备领域知识,就需要用到第二个功能——RAG。
RAG指的是检索增强生成。它和微调一样,都属于给大模型“开小灶”——微调是让大模型再去上个补习班,去强化某些科目;RAG是给大模型买了一大堆学习资料,要用的时候随时去翻。
LangChain团队在开发RAG功能的时候写死了,AI在每次回答的时候,都会去检索文档,所以如果你就是想基于某个文档展开对话的,选这个功能最直接。
我给大家演示一下。上传AutoGen的论文,然后提问:What is autogen?
可以看到,AI启动了Retrieval Function,根据问题,在文档中找到了好几个相关片段。最后参考这些片断给出回答。
大家千万别以为RAG就这么简单。我之前开发newtype的时候就发现,真要实现比较高的检索精确度的话,需要用上更多技术、做各种调试。
比如multi-query retrieval。它的原理是:根据用户的问题,先用大模型生成若干个意思差不多、但是表达不同的问题,然后把这些问题全都拿去检索。这样检索到的片段才足够全面。
OpenGPTs里的检索只用了比较初级的方法。如果你对检索的效果不满意,可以到ingest这个文档里做调整。因为检索的效果取决于数据类型。所以这部分真的需要大家根据自己的情况去做二次开发。
OK,刚才介绍了Chatbot和RAG,第三个功能Application,你可以简单理解为是前两者的合集——可以设定Prompt,可以选择大模型,可以添加文档。除此之外,它还增加了工具功能。
ChatGPT里提供的现成工具很少,更多需要依靠Function Call去实现,因为OpenAI的目标是持续提升AI的通用能力。而在OpenGPTs这边,光是搜索就提供了好几种工具:
- 通用搜索的工具有DuckDuckGO,以及专门为大模型优化过的引擎Tavily。
- 垂直搜索的工具有搜论文的、搜SEC报表的、搜维基百科的、搜新闻稿的,等等。
我平时用得最多的是论文搜索。要用好大模型相关的技术,一定要理解背后的原理。读论文是必须的,再难也得硬着头皮啃下去。
比如想了解Chain of Thought,OpenGPTs会到arxiv上把最相关的论文找到,包括标题、作者,以及一段summary。如果直接去arxiv上搜关键词的话,给到的结果挺多的,还得人工再去筛一遍——这一步让AI完成就挺好。
Chatbot、RAG和Application的基本用法就这些。真正的潜力在自定义或者说二次开发上。
OpenGPTs就像一个壳:在后端,它提供了接口,可以把各种大模型和各种工具都接进来;在前端提供了一个简单的交互界面。LangChain团队帮我们把基础工作都做完了。
趁着春节假期,我会把项目文档仔细研究一遍,并且尝试组装一个工具,然后接入。成功的话,我会再出一期视频。