大师:Agent Loop 怎么写?
我:很简单。
while (true) {
const result = await llm(messages)
if (result.toolCall) {
const output = await executeTool(result.toolCall)
messages.push(output)
continue
}
return result
}
大师:什么时候停?
我:模型觉得任务完成的时候。
大师:它要是一直觉得差一点呢?
我:……
大师:跑了 50 轮,烧了 100 万 Token,Tool 没报错,模型也没报错,就是一直在干活呢?
我:那得加 maxTurns。
大师:所以谁拥有最终终止权?
我:Runtime。
大师:对。
模型可以提出:
Done。
但 Runtime 还得验证:
Really Done?
写代码就跑 Tests。
生成数据就过 Schema。
执行工作流就检查最终 State。
Model completion ≠ Task completion。
我:如果模型一直不说 Done 呢?
大师:Runtime 还有:
maxTurns、Timeout、Budget、Cancellation、Policy。
任何一条触发,都可以:
Must Stop。
我:不需要模型同意?
大师:你关服务器的时候,还准备先征求模型意见?
我:……
所以 while (true) 本身没问题?
大师:当然。
真正的问题不是循环。
而是:
模型可以提出结束。
Runtime 验证是不是真的结束。
Runtime 还必须拥有强制结束的权力。
我:哪怕模型觉得再来一轮就好了?
大师看了我一眼。
尤其是这种时候。
我:为什么?
大师:
因为所有失控的 Agent,在最后一轮之前,都觉得自己再来一轮就好了。
顯示更多