Prompt实战之构建基于 LLM 的 BabyAI 智能体系统 4)函数式提示设计、反事实训练与系统优化策略
在本节中,我们将从三个关键方向深入探讨 LLM 智能体的高级设计:将提示(prompt)设计为一个 参数化的函数,输入状态、目标、历史,输出标准格式的文本。这样做的好处是:可进一步扩展为多语言、多风格、多模型版本:技巧提示版本管理:为每个 prompt 函数加版本号,如 ;条件控制:通过参数动态控制是否提供地图、上一步动作等内容;提示压缩:在历史过长时,使用摘要函数缩短 obs_history。4
·
在本节中,我们将从三个关键方向深入探讨 LLM 智能体的高级设计:
- 如何将提示设计模块化(函数式提示);
- 如何利用失败样本进行反事实训练;
- 如何系统性评估与优化智能体表现。
文章目录
4.1 函数式提示设计:Prompt as Program
核心思想
将提示(prompt)设计为一个 参数化的函数,输入状态、目标、历史,输出标准格式的文本。这样做的好处是:
- 保持提示风格一致;
- 易于版本控制与自动优化;
- 可根据上下文动态生成 prompt;
- 便于未来与 fine-tuning 数据联动。
示例:构建统一提示函数
def build_plan_prompt(obs: str, goal: str) -> str:
return f"""You are a robot in a grid world.
Your goal is: {goal}
Here is your current observation:
{obs}
Please generate a plan of actions in JSON format like this:
{{"plan": ["action1", "action2", "action3"]}}"""
可进一步扩展为多语言、多风格、多模型版本:
def build_prompt(strategy: str, obs: str, goal: str, history=None) -> str:
if strategy == "plan":
return build_plan_prompt(obs, goal)
elif strategy == "step":
return build_step_prompt(obs, goal, history)
# 可加入更多策略
技巧提示
- 版本管理:为每个 prompt 函数加版本号,如
build_plan_prompt_v2(); - 条件控制:通过参数动态控制是否提供地图、上一步动作等内容;
- 提示压缩:在历史过长时,使用摘要函数缩短 obs_history。
4.2 反事实训练:从失败中学习
LLM Agent 不是完美的,常常会执行错误或低效动作。我们可以利用这些失败样本构造反事实学习数据,从而提升下一轮表现。
步骤一:记录失败轨迹
{
"goal": "pick up the red ball",
"trace": [
{"obs": "you are in a room...", "action": "go right"},
{"obs": "...", "action": "go forward"},
...
],
"result": "FAIL"
}
步骤二:生成反事实训练数据
利用语言模型辅助生成新样本:
prompt = f"""The following agent trace failed to achieve the goal.
Goal: pick up the red ball
Trace:
Turn 0: go right
Turn 1: go forward
...
Please suggest a corrected plan that would likely succeed.
Return JSON: {{"corrected_plan": ["go forward", "pick up"]}}"""
可用此类数据训练未来的模型或微调 GPT 的代理模型。
技巧提示
- 可引入 回放 + 自监督 模式,agent 自己评估轨迹并重构计划;
- 可采用 reward model 对不同 plan 评分;
- 失败样本比成功样本更具学习价值,应系统性收集与管理。
4.3 系统优化策略
系统优化包括智能体的性能、稳定性和成本控制。
优化策略一:控制 Token 长度
- 使用
.render("ansi")简洁版本代替.render("rgb_array"); - 使用摘要模型压缩历史信息;
- 对 plan 长度设置上限,防止不必要冗长。
优化策略二:缓存与复用
- 对相同的 obs + goal 提示结果可缓存,避免重复调用 GPT;
- 对 plan 模式生成结果,允许在多个相似环境中复用。
优化策略三:行为评估与指标追踪
为每个任务配置如下指标:
| 指标 | 说明 |
|---|---|
| 成功率 | 成功完成任务的比例 |
| 平均步数 | 完成任务所需的平均步数 |
| 平均 token 使用量 | 每轮对话的 token 总数 |
| 无效动作比例 | 模型产生的非法动作占比 |
使用这些指标,你可以评估不同模型、提示风格、控制策略的性能差异。
练习建议
- 练习 13:将你所有的提示构建为函数化模块,并加入版本控制;
- 练习 14:从失败的 agent 执行记录中构建反事实训练数据,尝试使用它 fine-tune 一个轻量 LLM(如 Mistral);
- 练习 15:使用缓存机制减少重复调用 GPT,统计加速效果;
- 练习 16:实现一套自动评估框架,记录并绘制每次实验的成功率与 token 使用变化趋势。
更多推荐


所有评论(0)