读完《情境感知》之后,我产生了这样一个想法:如果人工智能真的距离通用人工智能只有几年的时间,那么或许它已经足够接近创造出我一直想要的人工智能助手了。
当然,你可能会说通用人工智能(AGI)离三年之内实现还很遥远,这没问题。我的目的是想问,目前的人工智能技术是否足以真正创造出个人助理。
我的意思是,我们其实也有类似的功能。比如,我可以对着手机或手表说“下周二下午一点提醒我去看牙医”,它们就会准时执行。但这并不是真正的人工智能,只是把语音识别信息输入到应用程序中而已。
我想要的
我想要一个可以和我对话的人工智能(打字也可以,语音就更好了),它可以做到以下几点:
- 管理待办事项清单、约会、笔记和项目
- 永远不要忘记我告诉它的任何事
- 实现 ChatGPT 能够完成的所有任务,例如回答 gen-AI 类型的问题(“给我写一个 Python 函数”、“谁射杀了亚伯拉罕·林肯”等等)。
- 与网络互动
- 能够按计划完成任务
- 注意隐私(由此也意味着确保安全)。
- 有个性
ChatGPT能做到吗?
答案是否定的。ChatGPT 无法做到 #2(永远不要忘记),只能部分做到 #4(它可以从网络读取数据,但不能 POST),#5(没有 cron),或者 #6(它与 Teams 有一定的私有性)。
我有点天真地尝试了 ChatGPT。我有一个开启了内存功能的私人 Teams 帐户,所以我就开始和它对话了。
- 我赋予她一个名叫雪莉的、爱抽烟的、刻薄的20世纪50年代秘书的性格,并加入了一些性格暗示。
- 我告诉了它我接下来五天的旅行计划
- 我让它创建多个待办事项清单
- 我教它玩 《铁誓:星铸》。
然后我打开一个新的会话,结果所有内容都消失了。
好的,第二次尝试是给它添加了一堆“记住……”的指令。这招奏效了。但效果有限。
实际上,大约可以存储 5000 字的精简信息。超过这个量,就超出“记忆”的容量了。当然,我没指望能记住 20TB 的数据,但我估计肯定远不止 5000 字。
使用 OpenAI 的自定义 GPT,你可以创建拥有更多信息的机器人。但这需要在机器人开始运行之前完成所有设置。换句话说,这些信息都存储在只读存储器 (ROM) 中,你获得的“磁盘空间”只有 5000 个单词。实际上,我甚至不确定自定义 GPT 是否真的拥有内存。
说实话,在我把内存填满之前,那段时光真是太棒了。我们讨论了项目,重新整理了待办事项,还列了清单。那次旅行计划真的很有趣,因为我会很自然地跟雪莉说:“好,我现在在这里,如果我开车8个小时,我会经过哪些城市?周边有什么?如果我走另一条路呢?”等等,就像雪莉是个旅行社代理一样。
那是一次短暂而转瞬即逝的数字天堂之旅。
我可以自己做吗?
我确实可以使用两块显卡:一块在我的 M1 Max 笔记本电脑上,另一块在我的游戏电脑里是 4080。
你无法下载 ChatGPT,但可以下载 llama-3 和其他各种模型。搭建你自己的自托管 AI 的简易方法如下:
- 请访问 ollama.com 并下载软件包
- 如果你使用的是 Windows 系统,请设置 WSL。
- 安装 ollama
- 使用 ollama 命令可以下载不同的模型,你可以在 ollama.com 上搜索这些模型。这些命令类似于 Docker 命令。你可能会喜欢 llama3、codegemma 或 mistal 模型,但还有很多其他模型可供选择。
- 然后执行“ollama run <型号>”,就会出现提示符。
- 如果你想要更炫酷的界面,可以启动 Docker 并运行 open-webui。它会提供一个类似 ChatGPT 的美观界面。
NetworkChuck 做过一个很棒的视频讲解这个。我喜欢 NetworkChuck。
这样就很简单了,你就拥有了一个本地人工智能。它不如 ChatGPT(ChatGPT 是用数万亿个词元训练的——大多数这类模型的规模都在 70 亿到 700 亿之间)。不过, llama-3 (由 Meta 训练的最先进的免费模型之一)已经相当不错了。
还有一种叫做检索自动生成(RAG)的技术,它连接一个向量数据库,并填充任意数量的数据。然后,当你与人工智能对话时,如果你询问数据库中已有的信息(例如“迈克表弟的地址是什么?”或“去年九月我们在俄亥俄州卖出了多少罐苹果酱?”),它就会查询数据库。
所以我们……差不多快要达成一致了,对吧?让我们根据我的需求(我稍微修改了一下格式)来比较一下 ChatGPT 和自托管系统:
| ChatGPT | 自托管 | |
| 管理待办事项清单、约会、笔记和项目 | ✅ | ✅ |
| 永远不要忘记我告诉它的任何事 | ❌ | ❓ |
| 拥有丰富的个人信息知识库 | ✅ | 🟡 |
| 普通的GenAI相关内容 | ✅ | ✅ |
| 与网络互动 | 🟡 | 🟡 |
| 能够按计划完成任务 | ❌ | ❓ |
| 有个性 | ✅ | ✅ |
| 能够随时随地访问 | ✅ | ✅ |
| 可通过语音联系 | ✅ | ❓ |
| 私人的 | 🟡 | ✅ |
一些说明:
- 我说“管理待办事项、预约等等”,意思是说我可以像跟我的秘书一样跟它对话。它理解这些概念。实际上,它可以“扮演”秘书的角色(但我不会在虚拟办公桌上追着它跑。虽然也有 llama3-uncensored 的版本……)。
- ChatGPT 可以读取网页内容,但不能发送 POST 请求。大概是为了防止它统治世界吧。开玩笑的……或者说,我没开玩笑?
- 可以通过 ChatGPT 的 API 按计划运行 ChatGPT,但 ChatGPT 本身无法发起任何操作。
- ChatGPT 算是私有的。你可以在 Teams 上设置私有工作区,OpenAI 也表示它不会使用这些数据进行训练,但无论如何,你的数据仍然存储在云端,而这个平台每天都可能遭受大规模攻击。
- 理想情况下,“随时随地访问”是指既能在笔记本电脑上打字,也能在手机上与人工智能对话。如果能实现其他9项功能,我会花时间学习如何编写iOS应用程序。在此之前,能够通过SSH或网页应用程序与它交互就已经非常棒了。
所以我想说,现在我能在家搭建出我理想中个人助理的50%,而且用相对普通的硬件就能运行,这感觉真的很棒。要知道,我当初可是从一块Timex Sinclair 1000手表起家的。
比较容易的那些
“与网络交互”可能是最简单的。我不太清楚具体细节,但就是把某种网页界面连接到人工智能上。Llama3 默认会认为自己可以向 URL 发送 POST 请求,但实际上什么也不做,就像在角色扮演一样。我觉得这应该是一个应用程序的功能。
同样,“语音控制”也是应用程序的功能。我不了解开源语音识别的现状,但 macOS 和 iOS 肯定有不错的库。
日程安排某种程度上违背了对话/响应模式。学习记忆模型(LLM)并非只是被动地思考,它们会转换文本。或许可以通过自动化来解决这个问题。告诉人工智能“你需要记住这些内容”,然后设置一个任务,每分钟询问它是否有待处理的任务等等。再次强调,对话/响应模式本身存在局限性。它不会主动询问“嘿,有待处理的任务吗?”,所以你必须主动询问。
那些真正难的题目
我们现在只剩下“知识库”和“完美记忆”这两个要素了。
知识库问题其实是有解决办法的。你可以连接一个 RAG,但据我所知,开源软件在这方面的解决方案相当薄弱……或多或少就像一个功能更强大的 grep 命令。
当我将电子表格加载到 ChatGPT 上的自定义 GPT 中时,它能够汇总、制表等方式处理这些表格中的信息,所以这是可行的,但我不确定目前是否有开源软件解决方案。
理论上,人工智能应该能够将信息反馈给 RAG(红绿灯系统)。这才是最终目标:一个可以不断增长的记忆存储系统。
然而,事实证明,这里是前沿阵地。
我的待办事项清单:
- 调查 RAG 技术的现状
- 探索更多面料
- 创建测试用例,从简单到我最终想要的复杂程度,并根据LLM和技术解决方案处理这些用例的能力进行评分。跟踪迈向辉煌数字未来的进展。
我正在PikaPods上托管的 Jupyter notebook 中跟踪所有内容。