无状态函数要跑多步任务,靠三个机制粘起来:控制循环定节奏,工具调用打通外部世界,提示词把自由文本压成程序能吃的指令。线上八成故障也出在这三层——循环不收敛、参数不合法、提示词一改行为漂移。共同原则是用结构驯服不确定性:状态机、JSON 约束、分层提示,都是把关键决策提到代码里。
最简循环是观察、思考、行动、反思。思考步调模型,没有工具调用就收工;有调用就执行,把结果当下一轮观察。生产里至少四道刹车:步数上限、累计词预算、连续错误次数、滑动窗口里的动作去重。去重不能只看「连续相同」——模型常在两个工具间横跳。参数要做规范化哈希,顺序不同但语义相同的调用算同一次。每次状态转移都该是可审计事件:一条追踪、一个指标、一行结构化日志。没有显式状态机,排障就只能对着整段提示词猜。
模型从不真正执行工具。它只是在合适时机吐出约定格式的对象,运行时解析、校验、执行,再把结果塞回对话。约束写进 schema 的依从性,比写进提示词高一个数量级:正则管格式,枚举管离散值,默认值划清必选可选。工具描述是给模型看的接口文档,要写清何时调用、返回什么、不支持什么。超过大约三十个工具,注意力开始明显下降;上百个就要先检索再把完整定义交给主模型。非幂等动作必须带幂等键,由运行时注入,避免重试创两单、发两封信。
面向人的对话提示和面向程序的智能体提示不是一类东西。后者的消费者是解析器和执行器,失败模式是死循环和安全漏洞,必须版本化、能灰度、能在分钟级回滚。组装时系统约束和当前用户输入不可裁,超预算先压历史。安全规则一旦被挤掉,行为不可控。错误不要直接抛死整个循环:语义错误翻译成模型能读的观察,瞬时错误由运行时静默重试,系统级和安全类立即终止并告警。
落地清单
- 算成本按「步数乘二」:决定调用是一轮,看结果再回答又是一轮。
- 十轮任务的输入词可能是一轮的五十多倍,不是十倍。系统提示每轮重发,写短就是省钱。
- 提示词缓存要前缀稳定,动态内容放到末尾,否则整段缓存作废。
- 循环检测看窗口频次,不要只判连续重复。
运行时是上层记忆、规划、协作的操作系统。项目看起来差在模型和提示词,刨开常常是循环、契约和版本没管住。
本文侧重智能体生命周期与技能边界。若你要动手验证,优先用 Playground 做小任务压测;权限与托管再单独规划,避免「先装一堆再治理」。 相关:Playground · 创建智能体 · 学习中心
常见问题 FAQ
智能体运行时到底在管哪三件核心的事?
简单来说,运行时主要管理三件事。第一是“控制循环”,决定智能体什么时候该停下来,比如设置步数上限或错误计数。第二是“工具调用契约”,通过严格的JSON Schema(一种数据格式规范)来约束模型输出参数,确保它调用工具时格式正确、参数合法。第三是“提示词接口”,把自由文本的用户请求或系统约束,转换成程序能精确解析和执行的指令。这三者共同把不确定的模型行为,用结构化的方式固定下来。
智能体线上最常见的故障有哪些,怎么提前预防?
文章指出,大约八成的线上故障都出在循环、工具契约和提示词这三个层面。主要表现为:控制循环不收敛,一直运行不停;模型生成的工具调用参数格式不合法,导致执行失败;以及提示词稍作修改就引起模型行为大幅“漂移”。预防的关键在于把决策提到代码里:用状态机管理循环,用严格的Schema校验工具参数,提示词要版本化、分层设计,并确保核心安全规则不会因为对话过长而被挤压丢失。
运行一个十步的智能体任务,为什么实际输入词会是预期的五十多倍?
这是一个关键的成本计算点。因为智能体的每一轮“思考-行动”循环,都需要把假设一个任务需要10轮循环,第1轮可能只发送但从第2轮开始,每一轮都要重复发送因此总输入词数是急剧增长的,而非简单的线性关系。优化方法是写短
当工具数量很多时,智能体的架构该怎么选?
这取决于工具的数量。文章提到一个经验阈值:超过大约30个工具,模型的注意力就会明显下降,可能选错或漏掉合适的工具。当工具数量达到上百个时,就不能让模型直接“看”所有工具的定义了。这时需要设计一个两阶段的架构:首先用一个检索模型,根据当前任务快速从工具库中筛选出最相关的几个候选工具;然后,再把这少数几个候选工具的完整Schema定义交给主模型,由它来决定调用哪个、如何构造参数。
给智能体写的提示词,和写给人看的有什么不同?
根本性的不同在于消费者和失败模式。给智能体写的提示词,首要消费者是解析器和执行器,而不是人。因此,它必须是高度结构化、版本化和可回滚的,就像管理代码一样。它的失败模式是死循环、安全漏洞或行为不可控,后果严重。所以,它必须能灰度发布,并在分钟级内实现回滚。而给人看的提示词,更多是解释性和引导性的,可以更灵活。智能体提示词中,系统约束和安全规则绝对不能被裁剪。
智能体在调用工具时遇到错误,运行时应该如何处理?
处理策略要分类型,不能简单地让整个循环崩溃。首先,要区分错误性质:如果是语义错误(比如参数值不符合业务逻辑),应该将错误信息转换成模型能理解的“观察”,反馈给模型让它调整;如果是瞬时错误(如网络超时),运行时可以静默重试几次;但如果是系统级错误或安全规则触发,就必须立即终止循环并发出警报。此外,对于创建订单这类操作,必须由运行时注入幂等键,防止模型重试导致重复执行。