课程章节介绍
好,我们来看这一页讲的是什么。这里提到两个很有用的块:after_reasoning 和 before_reasoning。咱们先别被名字吓到,其实它们就是帮我们在智能体运行的不同阶段插一脚,做一些额外处理的小工具。
先说 after_reasoning。这个块在子代理完成它的推理、准备给出最后回复之前执行。你可以把它想象成“收尾工作”。比如,我们可以在 after_reasoning 里根据事情的紧急程度,自动调整预约时长——紧急的任务多预留点时间,不急的就短一点。这样,最终给用户或下一步系统的输出就更合理了。
但有个小注意点:如果子代理在运行中,因为某种原因被切换到了另一个子代理,那原来那个子代理的 after_reasoning 就不会执行了。因为流程都换了嘛,原来的收尾工作自然就不做了。另外,如果你在 after_reasoning 里想要主动把任务转给别的代理,记得直接用“transfer to”这个动作关键词,不要用“@utils.transfer to”这种代码写法。Agent Script 更认前者,用起来也更直接。
那 before_reasoning 呢?它和 after_reasoning 刚好反过来,是在子代理开始推理之前执行。你相当于在它动手之前先塞进去一段逻辑,比如先判断一下这个请求合不合理,或者提前准备一些信息。其实它的效果,就和你把这段逻辑直接写到子代理指令的最前面一样。那为什么还要单独弄个 before_reasoning 块呢?因为这样结构更清晰,方便管理,也更容易复用。
总结一下:after_reasoning 做收尾,before_reasoning 做预处理,功能一样,语法也相似。记住切换代理时别用代码写法,以及跨子代理切换后原 after_reasoning 会失效就行。这样我们就能更灵活地控制智能体的行为了。
好了,这一页就讲到这儿。有什么疑问随时提出来。