微信扫码
添加专属顾问
今天我们发布了 General Agent v0.2.0版本,推出全新特性Self Call 和 Stack Memory,让Agent自动解决复杂任务。
我们提出了一种结构简单,运行效率高的可以自动完成复杂任务的单Agent框架: General Agent.
General Agent 融合了 LLM 的 Text Namepspace 和 Code Interpreter 的 Code Namespace,让Agent工作在Code Namespace上,并将 agent 嵌入到 Code Namespace 中,让 agent 可以自我调用,并通过 Stack Memory,让每次 LLM 运行在一个比较理想的上下文上。
不用多Agent架构、没有显式的planer和executor设计、不用复杂的SOP流程控制,以这样简单的架构,让 Agent 可以自助规划、自助实施、自主修正,最终以最短路径、高精度完成各种复杂任务。
而且这是一种通用的架构,能处理各种类别和不同难度的任务,无需单独为其进行编码。
另外也可以通过增加函数或者修改prompt,提升Agent的能力和控制Agent在特定任务上的鲁棒性。
我们在数据处理、长篇图文小说生成、函数搜索和使用等任务上进行了实验,实验结果表明它可以很好的全自助完成各类复杂任务。
我们的项目可以在 https://github.com/CosmosShadow/GeneralAgent 找到。
基于 Transformer 的 LLM(Large Language Model),我们可以通过prompt( or named messages、memory)来控制 LLM 的输出。
对于一项复杂的任务,可以从不同的层级或者模块来进行拆分完成,因此需要多种提示来让 LLM 进行不同的输出和控制。
为了利用LLM自动完成复杂的任务,业界AutoGPT、MetaGPT、AutoGen、Camel、XAgent等框架发明了很多方法,也取得了显著的成果。
但可能存在一些问题:
多Agent架构,增加了Agent框架本身的复杂度和使用难度;
多Agent架构,消息在Agent之间可能传播不充分,导致生成内容质量降低;
显式定义的计划模块和执行模块,而不是让Agent主动规划和执行;
运行流程复杂,不是最短完成路径,计算开销大;
不使用Mul-Agent、显式Plan模块、基于SOP流程等技术方式,我们提出了一个结构简单、运行效率高的单Agent框架,通过简单的自我调用和堆栈内存,Agent可以自行完成各种复杂的任务。
通过统一LLM的 Text Namespace 和 code interpreter 的 Code Namespace,Agent可以自我调用,控制自己未来的行为,来完成复杂任务。
在自我调用的过程中,我们对 LLM 的 messages 进行堆栈操作。 在准备运行python代码时,messages开始进入堆栈,并在python代码运行完成后,弹出堆栈。这个堆栈结构是可以递归的。
这样的架构不需要对Agent进行显式复杂的流程和状态逻辑进行设计,或者增加计划模块。相反,通过 Self-Call和Stack Memory,Agent可以自主规划并自动完成复杂的通用任务,无需预先编码和人工干预。
Code Interperter
通过对 LLM 输出内容中的代码进行解析并自动运行,并将运行输出结果再反馈给 LLM,形成一个循环,这样就赋予了 LLM 利用代码来解决一些 LLM 不擅长的任务,比如数学计算、数据分析、文件操作等工作。
并且当 LLM 输出的代码有语法错误或运行错误,LLM 在接收到Code Interpreter运行后的错误信息,会自动纠正并再次输出代码,形成一个自我纠正的循环。
以下是一个 LLM 和 代码解释器 配合使用的典型流程示例
实际运行效果如下:
LLM 内部是基于prompt进行下一个token的输出,都是text,我们称为 Text Namespace.
Code Interperter 中,包含各种类型的变量、函数、类、模块等,我们称为 Code Namespace.
LLM的输入输出都是text,Code Interperter 的输入是代码文本,将输出也转换成text,LLM 和 Code Interperter 连接起来,形成一个可以迭代运行的循环。
Function Call
在Code Interperter中,我们可以注册一些函数,并在 LLM 的输入 messages 中,告知 LLM 可以在代码中使用哪些预制的函数描述(一般是函数的signature)。这样 LLM 就可以自行根据用户需求,使用预制函数来进行代码编写,Code Interperter 也能正确运行,并将结果反馈给LLM。
这样我们就通过 Code Interpreter 来让 LLM 能进行函数调用,如下面的一个典型示例。
这样的 Function Call 相对于 LLM 输出 json 来实现的 Function call 会更加灵活和自然,比如一次性可以使用多个工具、进行流程控制、function使用出错时可以自我纠正等。
比如下面的函数运行报错时Agent自我纠正:
详细内容参考: https://github.com/CosmosShadow/GeneralAgent/tree/main/docs/cases/alice_vision_novel
Self-Call
支持 Function Call 的 Code Interpreter 架构,已经可以解决部分复杂任务,但是对于一些任务还是不够。
比如下面这个问题:
"Please introduce Chengdu, Beijing, Tianjin, Shenzhen, Shanghai, Guangzhou, and Hong Kong in detail respectively. Write all the introductions into a markdown file and give it to me."
由于 LLM 会倾向于一次性生成适中长度的内容,不能一次性输出质量较好的长篇文本。
一个比较自然的想法是,让LLM每次写一个城市的介绍,然后把所有城市介绍组合起来,保存成markdown文档。
我们可以将上面的任务种类进行拆分,分别是:
任务种类A: 写一个城市的详细介绍。任务的输入是”Introduce {city}",任务的输出是城市的详细介绍字符串。
任务种类B: 把城市介绍组合起来,保存成markdown文档。任务的输入是各个城市介绍的详细内容字符串,输出是markdown文档的保存地址。
任务种类A是 LLM 擅长的事情,任务种类B是代码擅长的事情,即理想情况下,任务A需要在 text namespace 完成,任务B在 code namespace 中完成。
现在的问题是,如何将这两个 namespace 融合起来,以一种自然的逻辑来组装好任务A和任务B?
一个比较自然的逻辑是将 LLM 进行任务 A 的结果保存到 code namespace 的字符串变量中,然后再进行任务B。
即在 code namespace 中,让 LLM 的输出保存到字符串变量中。
在 LLM 和 Code Interpreter 组合而成的 Agent 系统中,LLM 是控制中枢,Code Interperter 是 LLM 执行代码的外围配套工具。
但 code namespace 如何实现对 LLM namespace 的控制?
我们可以将 LLM 预制到 Code Namespace 中,这样 code 就可以控制 LLM 进行任务,并将输出保存到变量中。
但这里有一个问题,就是 LLM 本身是无状态的,不知道任务的上下文情况。
所以我们将 LLM 和Code Interperter组合成的 agent 预制到 code namespace 中,code 控制 Agent 进行任务 A,并将输出保存到变量中。
架构和流程如下:
这样 Agent 可以通过输出包含agent调用的代码,实现自我调用,完成复杂任务。
通过将 LLM 和 Code Interperter 组合成 agent 后,其输出为任意类型,即Code Namespace中的类型,这样,我们将LLM的Text Namespace融入到Code Namespace。
在处理复杂任务过程中,如果我们将和LLM交互过程中所产生的对话,按时间顺序组合成数组,作为下一次LLM运行的messages,会造成以下问题:
同一个名称,在不同的上下文中,其意义不一样,全量输入会降低输出内容的质量;
和最近任务无关的信息引入,导致messages过长,增加计算开销;
在上面的 Self-Call 的 General Agent 架构中,每次运行python代码就是完成一件整体的事情,其内部所有执行agent.run所产生的 LLM 对话消息相关度很高。当python运行完成后,新的 LLM 对话可以不用关心代码运行时所产生的 LLM 对话细节,只需关心python运行后的代码输出结果。
所以我们可以构建一种堆栈结构的messages,我们称为 Stack Memory。它在运行python代码的时候,压入堆栈,后续产生的消息都在新堆栈中,而在python运行结束后,弹出堆栈,并将python的运行结果附加到压入堆栈时的消息后面。
整体结构如下:
在当Agent运行在图示中的"Current Position"时,message3 with code 下面的所有细节 messages ,都被忽略掉了。
这样的Stack Memory,可以提升整体任务的完成质量、减少计算量,而且是全自动的,无需额外的计算。
General Agent在多个领域的复杂任务上都展现了卓越的性能。无论是详细介绍城市、制作图文小说、还是编写长篇小说、函数搜索后进行AI画画和声音合成等,General Agent都能够准确、高效地完成。
输入
Google search the population of Guangzhou, Shenzhen, Chengdu, If the population of these cities is greater than 15 million, introduce the city in detail and write the introduction of all cities to me in a markdown file.
结果
详细内容见: https://github.com/CosmosShadow/GeneralAgent/tree/main/docs/cases/introduce_with_condition
输入
Help me make a visual novel with images about Alice in Wonderland, and give me the markdown file.
结果
详细内容见: https://github.com/CosmosShadow/GeneralAgent/tree/main/docs/cases/alice_vision_novel
中文版本小说见: https://mp.weixin.qq.com/s/JjjqVbxkd86xfm9_lCr-Lg
输入
I want to write a short story.
The theme of the novel is artificial intelligence.
The titles of the novels are "Code Awakening" and "Code Awakening."
The chapter information of the story is as follows:
....
结果
详细内容见: https://github.com/CosmosShadow/GeneralAgent/tree/main/docs/cases/write_novel/
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-06-30
LangAlpha是如何在架构上实现Harness 和 Loop Engineering
2026-06-30
Codex 权限 Profile:sandbox 不再一刀切
2026-06-30
Google 悄悄开闸:Gemini API 免费放量 1M TPM,OpenAI 和 Anthropic 开发者坐不住了
2026-06-30
我的Mac潜伏了一个月木马:AI Agent时代,真正危险的不是“手滑”
2026-06-30
AgentOps:用户快速地调教好你的Agent的关键功能。
2026-06-30
AI 应用产品评测体系完整指南
2026-06-30
AI写代码越快,程序员越危险?Codex负责人摊牌:真正难的是"删代码"
2026-06-29
17 岁高中生做了个假 AI,上线一个月获 2.8 亿次访问
2026-04-15
2026-04-07
2026-04-07
2026-04-24
2026-04-17
2026-04-05
2026-04-02
2026-04-05
2026-04-14
2026-04-24
2026-06-27
2026-06-26
2026-06-25
2026-06-18
2026-06-18
2026-06-10
2026-06-10
2026-06-07
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。