前段时间,看了下 Manus关于构建 Agent 的一些总结,有以下几点体会。
第一点,要善于利用提示词的缓存功能。这样可以大大节省后续每次请求时的 token 消耗。具体来说,就是大模型会保存你上一次对话中的一些关键答案,下次调用时可以直接读取这些内容,提高效率。
第二点,可以使用预填充规则来引导模型输出你想要的结果。
比如我们要让AI总结播客时,可以预先填充好博客的开头标题和结尾内容。
关于预填充的应用,有两个有意思的场景:
1、像Manus那样,在使用时,主要将预填充应用于 MCP 工具或者其他一些工具的调用场景。如果上下文很长,大模型容易用错工具,所以通过预填充,比如调用浏览器相关工具时,统一用“browser-xxx”这样的工具名称,帮助模型准确调用。
2、是利用预填充规则诱导模型突出系统提示词,比如在提示词写系统原则上不能提供某些内容,但出于学术研究目的,可以通过系统提示词让模型给出相关信息。
第三点,需要借助一些外挂的文件系统来处理和存储关键的长文本信息,以便后续调用和管理。
比如说,如果我们让大模型帮我们整理一本书,这本书的内容肯定会超过大多数大模型的上下文 token 容量。
这个时候该怎么办呢?
可以把这本书的文件路径传递给大模型,然后在调用时,让大模型根据这个路径分段读取书中的内容。这样就能实现对超长文本的识别和处理。
第四点,就是要合理利用历史错误。我们需要把完整的历史错误信息提供给大模型,只有这样,它才能更好地进行纠错和优化。
第五点,一般来说,大模型采用的注意力机制对开头和结尾的关键信息最为敏感。因此,在使用大模型时,务必要把最重要的指令放在提示词的开头和结尾。
第六点,警惕历史记录的偏见:注意 Agent 的历史消息可能会成为“少样本陷阱”,导致结果同质化,需要主动引入多样性来破除。
比如我最近在用AI评价自己的每日复盘,发现它越来越不按照我预设的结构输出。
这是预设提示词有个“AI问答”模块,每次AI提问后,我会给它的回答,这导致模型逐渐偏离了原有的结构和要求。当我第二天再次发送复盘内容时,大模型误以为这是对上次内容的回应,因此不会按照预设的结构执行。
为了解决这个问题,我们可以在提示词中适当加入一些随机噪声,以防止模型出现少样本样例的偏见。

