抓住机遇,迎接 Agent 时代的风口,设计一个合格的 Agent 框架,我们需要做哪些准备(1)
今天在群里看见 LLM 给 Agent 提供了基础推理能力
引言
现在几乎将自己所有的业余时间都投入到 Agent 框架上,有时候也知道自己在做一件看不清 future 的事,当然因此也会迷茫、失落甚至怀疑。这些都是源于我们对这件事的期望。有些时候做事不能想太多,想得多也就做不成事,毕竟我自己认知很浅薄。
我觉做事首先,也是最重要的就是你喜欢做,这是前提,是拿到结果必要前提,其他都是次要的。至少这是我的观点,你做事的动力又是什么呢?
为了能够自己写出一个像模像样的 Agent 框架,的确下了不少功夫,翻译论文,看其他框架的源码,不断研究和总结,大概半年的时间过去了,终于对 Agent 框架有了一个大概的构思。今天拿出来跟大家分享。
希望我的分享对于想要了解 agent 或者正在寻找 LLM 落地正确方式的人给予帮助。由于是科技文章,难免枯燥乏味,这里虽然自己也在努力提升自己的表达,但是由于自己的能力有限,还有就是个人认为对于科学和科技还是要一丝不苟,严肃认真。
目标
LLM 局限性
- 实时性
- 真实性(幻觉)
- 工具使用: 融合外界环境信息,提升可靠信号反馈
- 反问机制: 主动询问以,通过自我反省来修复问题
- 扩展性(自主性)
- 缺乏逻辑性
今天推出 tinyChain,logo 可能是下面一个可爱的小章鱼,为什么用小章鱼做 logo 呢,首先章鱼是足够聪明的动物,而且可以做一些多线程的事,还有就是... 这个认识我的人很容易猜到。
今天不会谈过多 Agent 框架设计的细节,会在随后分享内容逐渐细化。自己知识也是不断迭代,更新,所以今天内容可能在明天就 out of date,请大家关注我,实时获取最新的关于 Agent 的内容
langChain 的问题
- 虽然 langChain 带来许多新的概念,这些概念都是围绕如何快速地开发一个基于 LLM 的应用,但是想要消化这些概念也是带来一些学习成本
- 条条框框让简单变得反而复杂,繁琐,感觉是什么都想要
当然 langChain 作为 Agent 框架的先行者,已经做的很好,因为很多方面还是探索,并且大模型也在不断迭代,一遍探索一遍还要跟上大模型的发展的脚步。
tinyChain
tinyChain 的特点
- langChain 存在一些问题,这样便有了我的 tinyChain 空间,关于 langChain 问题下面
- tinyChain 更了解国内应用的场景
- tinyChain 是顺势而行,不带来额外的学习成本,不会引入新的概念
- tinyChain 是一个由实践来驱动开发框架
之前提及到 aZent,tinyChain、promptChain 都是为了他进行铺垫
Agent 开发流程
- 将需求进行划分若干个任务,调整这些任务,初步判断任务的合理性
- 将分解好任务用 LLM 去尝试完成一个一个任务,在看是否可以通过 LLM 实现任务同时调整出一个合适的 prompt
- 基于 langChain 和 langGraph 来实现一个 Agent 来将整个流程串起来,实现自动化
- 对于个人开发者、小企业存在生存的空间,也为 Agent 设计针对特定框架
- 解决方案已经初步浮出水面,并且逐步完善,还是有待实践去检验
那些事是 Agent 擅长做的
- 探索性
- 繁琐的、可程序化,流程化的
- 模拟场景
- 分析
tinyChain 最佳的实践
- 编程辅助,因为大语言模型训练数据不小一部分来自于 github 所以 Agent 具有一定编程能力,或看似的逻辑能力
- 数据分析类,市场分析,商业分析和学术研究
- 生成类,生成数据集,写博客
- 多轮对话机器人,是长短期记忆的实现
- 问答类,教育等咨询、智能客服
- 翻译类
- 推荐类: 这里把推荐
- 社交聊天
不过还是要看到在很多需要可解释性,准确性的领域,由于大语言模型本身的问题还是无法涉足的。
Agent 框架的现况
- Agent 百花齐放, AutoGen、metaGPT、crewAi、
- 主流的基于 LLM 的 Agent 框架: langchain、llamaindex, Haystack
框架的选择
Agent 面临挑战
- 稳定性和可靠性问题,这个多半是源于大语言模型结构,暂时来看很难有效根治这个问题
- 如何节省成本、token 成本和时间的成本
- 如何更有效扩展 context 的容量,突破因 context 带来限制
- 也就是群体智能,记忆管理、实现高效和可扩展的群体协同(A(gent)Net)
- 应该如何低成本有效地进行迭代和进化也是值得思考的问题
- Agent 如何培养空间感,从语言理解层面脱离,可以感知空间从而成为具身智能的底座
- Agent 在解决多步问题复杂任务应该
- Agent 的能力,语言理解的能力(LLM)、如何有效使用工具的能力(Tool Usage)
- Multi Agent 协同,在 Agent 之间交互形式,如何有效地传递信息
解决方案
- Agent 应该有回溯能力
- Agent 结构化,如何通过横向和纵向的切分来划分 Agent,这里引入 layer 概念,layer 是从横向角度来切分 Agent,好那么 layer 之间划分的依据是什么,
- 希望将图这样数据结构引入到 Agent 框架,来描述 Agent 的组织形式。
- 拓扑结构: 拓扑结构,有向图
- 路径搜索能力
- 行为路由
Agent 类型
- 任务完成型
- 社会模拟型
主要模块
- 规划模块(planning)
- 路由模块(route)
- 指令模块(prompt)
- 工具模块(tool)
- 记忆模块(memory)
- 知识模块(knowledge)
随后分享我们会围绕 Agent 组成主要模块的定义、用途以及如何实现来展开,请大家关注、点赞。
转载自:https://juejin.cn/post/7395389351641645068