开启左侧

AI Agent 的上下文工程:构建 Manus 的阅历与教训

[复制链接]
本作家:Yichao 'Peak' Ji

正在 Manus 名目伊初,尔战尔的团队面对一个枢纽挑选:是该当使用启源根底模子去锻炼一个端到真个 Agent 模子,仍是使用前沿年夜模子的高低文进修(in-context learning)才气去建立咱们的 Agent?



正在尔投身天然语言处置(NLP)范围的第一个十年里,咱们并无如许的朴实挑选。正在遥远的(https://arxiv.org/abs/1810.04805) 时期(是的,已经已往七年了),模子必需颠末微调(fine-tuned)战评介,才气迁徙到新的任务上。那个历程屡屡迭代凡是需要数周时间,即使当时的模子取来日诰日的狂言语模子(LLM)比拟小患上可怜。关于快速迭代的使用,特别是正在产物取商场还没有匹配(pre-PMF)的阶段,云云迟缓的反应轮回是致命的。那是尔从上一个守业名目中获得的凄惨经验,其时尔为盛开疑息抽与(open information extraction)战语义搜刮从整开端锻炼模子。可是,(https://arxiv.org/abs/2005.14165) 战(https://arxiv.org/abs/2210.11416) 横空出生避世,尔自研的模子一晚上之间变患上毫无代价。挖苦的是,也恰是那些模子启开了高低文进修的时期——和一条崭新的前进门路。

那段去之不容易的经历让咱们的挑选变患上非常明了:Manus 将赌注押正在高低文工程(context engineering)上。那使咱们能将产物改良的周期从数周耽误到多少小时,并让咱们的产物取下层模子的开展连结邪接干系。咱们对于此有一个活泼的比方:假设模子的进步是上涨的潮流,咱们期望 Manus 成为火里上的船,而没有是被牢固正在海床上的石柱。

可是,高低文工程的实践近非鲜花易谢。它是一门尝试科学——咱们已经沉构了四次咱们的 Agent 框架,每次皆是因为咱们发明了塑制高低文的更劣办法。咱们密切天将这类脚动截至架构搜刮、调试提醒词汇(prompt)战鉴于经历推测的历程称为“随机钻研死降落(Stochastic Graduate Descent)”(译者注:此处是作家的一个单闭打趣,借用了机械进修中的“随机梯度降落 Stochastic Gradient Descent”,意指那个历程依靠于钻研死们大批的脚动尝试战调解,而非文雅的主动化算法)。那个历程固然没有文雅,但是确实有用。

原文将分享咱们颠末自己的“SGD”历程所到达的部门最劣解。假设您在建立自己的 AI Agent,尔期望那些绳尺能辅佐您更快天支敛。




01环绕 KV 慢存截至设想

假设只可挑选一个目标,尔觉得 KV 慢存掷中率是权衡消耗级 AI Agent 最主要的简单目标。它间接作用提早战本钱。要理解此中启事,让咱们先瞅瞅一个典范的 Agent 是怎样运做的:

正在支到用户输出后,Agent 会颠末一系列的东西使用去完毕任务。正在屡屡迭代中,模子会按照目前高低文,从一个预约义的举措空间(action space)当选择一个举措(action)。那个举措随即正在情况(environment)(比方 Manus 的假造机沙箱)中被施行,并发生一个察看(observation)。那个举措战察看会被逃减到高低文中,组成下一次迭代的输出。那个轮回会不竭连续,曲到任务完毕。

能够念睹,高低文正在每步城市增加,而输出——一般为一个构造化的函数挪用——则绝对较短。那招致 Agent 的预添补(prefilling)战 解码(decoding)之间的比率取谈天机械人比拟严峻得衡。以 Manus 为例,均匀的输出取输出 token 比率约为 100:1。

幸运的是,具有差异前缀的高低文能够使用 KV 慢存(KV-cache),那能极地面低落**尾个 token 天生时间(Time-To-First-Token, TTFT)**战拉理本钱——不管您是使用自托管模子仍是挪用拉理 API。咱们谈论的没有是微不足道的节流:以 Claude Sonnet 为例,慢存过的输出 token本钱 为 $0.30/MTok(每一百万 token),而已慢存的则为 $3/MTok——整整 10 倍的差异 1。

从高低文工程的角度去瞅,进步 KV 慢存掷中率涉及多少个枢纽实践:

    连结提醒词汇前缀的颠簸性。因为 LLM 的自返回(autoregressive)特征,哪怕是单个 token 的差别也可以招致从该 token 开端的后绝慢存局部生效。一个罕见的毛病是正在体系提醒词汇的收尾包罗时间戳——特别是精确到秒的时间戳。它确实能让模子报告您目前时间,但是也会抹杀您的慢存掷中率。

    让高低文只删没有加(append-only)。制止改正以前的举措或者察看。保证您的序列化历程是肯定性的。很多编程语言战库正在序列化 JSON 工具时其实不包管键(key)的挨次颠簸,那会悄无声气天破坏慢存。

    正在需要时大白标识表记标帜慢存断面。一点儿模子供给商或者拉理框架没有撑持主动的删质前缀慢存,而是需要脚动正在高低文中拔出 慢存断面。正在树立那些断面时,要思考到慢存可以过时的情况,并最少保证断面包罗体系提醒词汇的开端部门。

别的,假设您在使用像 vLLM 如许的框架自托管模子,请保证前缀/提醒词汇慢存(prefix/prompt caching)功用已经启动,而且您在使用会话 ID(session IDs)等手艺去保证恳求正在散布式事情节面间被不合天路由。



02掩码而非移除

跟着您的 Agent 装载的功用愈来愈多,其举措空间天然会变患上越发庞大——简朴来讲,即是东西的数目会爆炸式增加。短期流行的 MCP(模子高低文和谈)更是推波助澜。假设您许可用户设置东西,相信尔:总会有人将数百个偶奇特怪的东西塞退您经心筹谋的举措空间里。成果是,模子更易挑选毛病的举措或者走上高效的路子。简而行之,您局部武拆的 Agent 反而变愚了。

一个天然的反响是设想一个静态的举措空间——或许使用类似(https://en.wikipedia.org/wiki/Retrieval-augmented_generation) 的方法按需减载东西。咱们正在 Manus 中也测验考试过这类办法。但是咱们的尝试患上出了一个大白的划定规矩:除非绝对须要,不然制止正在迭代半途静态增加或者移除东西。此次要有二个启事:

    正在年夜大都 LLM 中,东西界说正在序列化后位于高低文的前部,凡是正在体系提醒词汇以前或者以后。因而,所有窜改城市招致统统后绝举措战察看的 KV 慢存生效。

    当以前的举措战察看仍然引用着目前高低文中已经没有存留的东西时,模子会感应猜疑。假设不束缚解码(constrained decoding),那凡是会招致情势背规(schema violations)或者幻觉出没有存留的举措。

为了正在处置那个成就的共时仍能改进举措挑选,Manus 使用了一个感知高低文的形状机(state machine)去办理东西的可用性。它并不是移除东西,而是正在解码过程当中掩码(mask)token 的 logits,进而按照目前高低文去阻遏(或者自愿)挑选某些举措。

正在实践中,年夜大都模子供给商战拉理框架皆撑持某种方法的照应预添补(response prefill),那许可您正在没有改正东西界说的情况下束缚举措空间。函数挪用凡是有三种情势(咱们以 NousResearch 的 Hermes 格局为例):

    主动(Auto) — 模子能够挑选挪用函数,也能够没有挪用。颠末仅预添补复兴前缀去完毕:<|im_start|>assistant

    必须(Required) — 模子必需挪用一个函数,但是具体挪用哪一个没有受限定。颠末预添补至东西挪用 token 去完毕:<|im_start|>assistant<tool_call>

    指定(Specified) — 模子必需挪用一定子集合的一个函数。颠末预添补至函数名的收尾去完毕:<|im_start|>assistant<tool_call>{"name": "browser_

使用那一面,咱们颠末间接掩码 token logits 去束缚举措挑选。比方,当用户供给新的输出时,Manus必需 立即复兴而没有是施行某个举措。咱们借特地设想了具备不合前缀的举措称呼——比方,统统取浏览器相干的东西皆以 browser_ 收尾,而号令止东西则以 shell_ 收尾。那使咱们能够轻快天自愿 Agent 正在给定形状下只可从某个东西组中截至挑选,而无需使用无形态的 logits处置 器。

那些设想有帮于保证 Manus Agent 的轮回即使正在模子启动的架构下也能连结颠簸。



03将文献体系用做高低文

现代前沿的 LLM 现在供给 128K token 以至更少的高低文窗心。但是正在真正的 Agent 场景中,那一般为不敷的,偶然以至是一种承担。有三个罕见的痛面:

    察看成果可以十分弘大,特别是当 Agent 取网页或者 PDF 等非构造化数据接互时,很简单便超越高低文少度限定。

    模子功用正在超越必然高低文少度后常常会降落,即使其窗心正在手艺上撑持更少的输出。

    少输出十分高贵,即使有前缀慢存。您仍然需要为传输战预添补每一个 token 付费。

为了处置那个成就,很多 Agent零碎 接纳了高低文截断或者收缩战略。但是过于保守的收缩不成制止天会招致疑息丧失。那是一个底子性的成就:Agent 的素质决定了它必需鉴于统统先前的形状去猜测下一个举措——而您没法可靠天猜测哪一个察看成果可以会正在十步以后变患上相当主要。从逻辑上道,所有不成顺的收缩皆陪伴着危急。

那即是为何咱们正在 Manus 中将文献体系望为终极的高低文:它正在巨细上是无限的,素质上是耐久的,而且能由 Agent自己 间接操纵。模子教会了按需读写文献——不但仅是将文献体系用做保存,而是将其动作构造化的、内部化的影象。

咱们的收缩战略老是被设想为可规复的(restorable)。比方,只要保存了网页的 URL,其实质就能够从高低文中抛弃;只要文档的路子正在沙箱中仍然可用,其实质就能够被简略。那使患上 Manus 能够正在没有永久丧失疑息的情况下紧缩高低文少度。

正在开辟那个功用时,尔发明自己开端设想,要让形状空间模子(State Space Model, SSM)正在 Agent 场景中有用事情需要甚么。取 Transformer 差别,SSM 缺少完整的留神力体制,而且易以处置少距离的背后依靠。但是假设它们能够把握鉴于文献的影象——将持久形状内部化,而没有是保留正在高低文中——那末它们的速率战服从大概能启开一类崭新的 Agent。Agent 化的 SSM可以 是(https://arxiv.org/abs/1410.5401)的真实承袭者)。




04颠末“复述”操控留神力

假设您使用过 Manus,您可以已经留神到了一个幽默的征象:正在处置庞大任务时,它偏向于创立一个 todo.md 文献,并跟着任务的平息逐步革新它,勾选失落已经完毕的名目。

那不但仅是一种亲爱的举动——它是一种颠末经心设想的操控留神力的体制。

正在 Manus 中,一个典范任务均匀需要约莫 50 次东西挪用1。那是一个很少的轮回——因为 Manus 依靠 LLM中止 决议计划,它很简单正在少高低文或者庞大任务中偏偏离中心或者忘记晚期的目标。

颠末不竭沉写待处事项列表,Manus 在将其目标“复述”到高低文的开端。那将全部方案拉进模子的短期留神力范畴内乱,制止了“丢失正在中心(lost-in-the-middle)”的成就,并削减了目标偏偏离。理论上,它是正在使用天然语言去指导自己的留神力偏向任务目标——而无需特别的架构变动。



05保存失利记载

Agent 会出错。那没有是一个 bug,而是一个幻想。语言模子会发生幻觉,情况会前去毛病,内部东西会举动非常,预想没有到的边沿情况老是会呈现。正在多步调任务中,失利没有是破例,而是轮回的一部门。

可是,一种罕见的激动是躲藏那些毛病:清理施行轨迹,沉试举措,大概沉置模子形状,而后寄期望于奇异的“温度(temperature)”参数。那觉得更宁静、更可控。但是它是有价格的:抹来失利便移除凭证。不凭证,模子便没法适应战进修。

按照咱们的经历,改良 Agent 举动最有用的办法之一简朴患上使人意外:将走错的路留正在高低文中。当模子瞅到一个失利的举措——和由此发生的察看或者仓库追踪(stack trace)——它会坦率天革新其内部决意。那会将其对于类似举措的先验几率截至调解,进而低落重复异常毛病的可以性。

幻想上,咱们相信毛病规复(error recovery)是真实 Agent 举动最明了的目标之一。可是,正在年夜大都教术事情战公然基准尝试中,那一面仍然被严峻高估,那些事情常常只存眷幻想前提下的任务胜利率。



06制止陷入“少样原”骗局

少样原提醒(Few-shot prompting)是改良 LLM输出 的经常使用手艺。但是正在 Agent零碎 中,它可以会以一种奇妙的方法拔苗助长。

语言模子是超卓的模仿者;它们会模仿高低文中的举动情势。假设您的高低文中布满了类似的过从“举措-察看”对于,模子便会偏向于依照这类情势,即使这类情势已经再也不是最好挑选。

那正在涉及重复性决议计划或者举措的任务中可以很危急。比方,当使用 Manus 辅佐核阅一批 20 份简用时,Agent经常 会陷入一种节奏——只是因为它正在高低文中瞅到了这类情势,便开端重复类似的举措。那会招致目标漂移、过分泛化,偶然以至是幻觉。

处置办法是增加百般性。Manus 正在举措战察看中引进了多量构造化的变体——使用差别的序列化模板、变更说话、正在挨次或者格局上引进弘大的噪声。这类受控的随机性有帮于突破情势,并调解模子的留神力。

换句话道,没有要用少样原提醒把自己困正在通例里。您的高低文越分歧,您的 Agent 便会变患上越懦弱。




07论断

高低文工程仍然是一门新兴的科学——但是关于 Agent零碎 而行,它未然相当主要。模子可以会变患上更强、更快、更自制,但是所有本初才气的提拔皆没法代替对于影象、情况战反应的需要。您怎样塑制高低文,终极界说了您的 Agent 怎样举动:它运行很多快,规复很多佳,和能扩大到多近。

正在 Manus,咱们颠末重复的沉构、走过的逝世胡共和正在数百万用户身上的实在天下尝试教到了那些经验。咱们正在此分享的统统并不是普适真谛——但是那些是于咱们而行卓有成效的情势。假设它们能辅佐您哪怕制止一次疾苦的迭代,那末那篇文章便完毕了它的任务。

Agent 的未来将由一个个高低文建立而成。请经心设想它们。

您需要登录后才可以回帖 登录 | 立即注册 qq_login

本版积分规则

发布主题
阅读排行更多+
用专业创造成效
400-778-7781
周一至周五 9:00-18:00
意见反馈:server@mailiao.group
紧急联系:181-67184787
ftqrcode

扫一扫关注我们

Powered by 职贝云数A新零售门户 X3.5© 2004-2025 职贝云数 Inc.( 蜀ICP备2024104722号 )