Agent 的一轮:先想,再决定要不要调用工具
这里的 Agent 不是一个更会写段落的模型。它要能把任务拆开,记住已经做过的事,并在自己没有的信息上调用工具。一次对话、一次执行、一次推理,是三件不同的事。
规划把任务拆小,并要求模型写出下一步为什么这样做。ReAct 把理由和动作放在同一次回复里。做完以后要能看见结果:错了就改下一步,而不是把同一动作再执行一遍。Reflexion 更进一步,把过去的失败留在记忆里,用来改后面的策略。
记忆分两层。短期记忆就是这次上下文里还看得到的内容,窗口满了就没了。长期记忆放在外部存储,下次要主动查回来。没有查这一步,存储等于没写。
工具补的是模型自己没有的能力:搜索、计算、执行代码、查数据库、查知识库。顺序是固定的:思考,行动,观察,再思考。
以「写一份攻略并保存」为例。第一轮的提示里有身份、目标、全部工具的说明,以及用户的原话。模型可以先选择自己生成正文,行动记为「思考」,参数就是这份正文。程序发现这不是外部工具,把正文写入记忆。第二轮的提示带上这段记忆。模型这时才有依据选择「保存」,参数是文件名和正文。程序解析参数、调用函数、把返回值再写入记忆。循环停在步数上限,或者目标已经完成。
少编造靠的是改交给模型的信息,不是换一个模型。目标里写明:内容里如果有事实,先搜索再写;草稿出来后,地点、时间和价格再核对一次。搜索工具的说明要写清楚它用来取新信息和核对,而不是一个可有可无的函数。系统提示里要求思考过程出现验证这一步,否则模型会把「我知道」当成「已经查过」。
一次就能做完的问答不必走这个循环。要自己决定下一步调用哪个工具时,才需要把记忆带进下一轮。