<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团队帮我们把基础工作都做完了。 趁着春节假期,我会把项目文档仔细研究一遍,并且尝试组装一个工具,然后接入。成功的话,我会再出一期视频。