在本节中,我们将从三个关键方向深入探讨 LLM 智能体的高级设计:

  1. 如何将提示设计模块化(函数式提示);
  2. 如何利用失败样本进行反事实训练;
  3. 如何系统性评估与优化智能体表现。

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 使用变化趋势。
Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐