跳转到内容

系统提示工程 — 多模板策略与模型适配

学习目标

  • 理解 Browser Use 的多模板文件策略
  • 掌握模板选择的五维决策逻辑
  • 了解 Browser Use 自研模型的优化提示

前置知识

下文假设你已理解系统提示工程的通用原理,直接聚焦 Browser Use 的具体实现。


项目实践

多模板文件

Browser Use 在 browser_use/agent/system_prompts/ 目录中维护 7 套独立的 Markdown 模板:

模板文件适用场景特点
system_prompt.md默认:带思维链完整指令,包含 thinking/evaluation/memory/next_goal 格式
system_prompt_no_thinking.mduse_thinking=False移除 thinking 字段
system_prompt_flash.md非 Anthropic 的低能力模型精简版,移除冗长解释
system_prompt_flash_anthropic.mdAnthropic 模型 + flashAnthropic 适配版精简
system_prompt_anthropic_flash.mdClaude Opus/Haiku 4.5满足 4096+ token 的 Prompt Caching 要求
system_prompt_browser_use.mdBrowser Use 自研模型简化指令(模型已 fine-tuned)
system_prompt_browser_use_flash.mdBrowser Use 模型 + flash极简版
system_prompt_browser_use_no_thinking.mdBrowser Use 模型 + 无思维链无 thinking 字段

模板选择逻辑

SystemPrompt 类的 _load_prompt_template() 方法根据五个维度选择模板:

模板内容结构

默认模板(system_prompt.md)包含以下核心部分:

  1. 角色定义:“You are an AI agent that can interact with a web browser…”
  2. 输出格式:JSON schema 描述 thinking/evaluation/memory/next_goal/action
  3. 动作指令:可用动作的描述(由 max_actions_per_step 参数控制)
  4. 最佳实践:如何评估、如何规划、如何处理错误

自定义系统提示

Browser Use 支持两种自定义方式:

  • override_system_message:完全替换默认提示
  • extend_system_message:在默认提示后追加自定义内容
agent = Agent(
task="...",
llm=llm,
extend_system_message="Always save extracted data to a file before calling done.",
)

Prompt Caching 优化

所有系统提示都标记为 cache=True

self.system_message = SystemMessage(content=prompt, cache=True)

对于 Anthropic 4.5 模型,使用更长的 system_prompt_anthropic_flash.md 以确保 prompt 超过 4096 token,这是 Claude Opus/Haiku 4.5 的 prompt caching 激活阈值。


问题与规避

模板维护成本

问题:7 套模板需要同步更新(如添加新动作指令时,所有 7 套都要改)。

对策

  • 模板选择是确定性的,可以用单元测试验证每个组合
  • 大部分变更只影响 1-2 套模板(如 flash 模式变更不影响正常模式)
  • Browser Use 自研模板明显更短,减少维护量

自定义提示与自动模板选择的冲突

问题:用户设置 override_system_message 后,模板选择逻辑被跳过。

对策

  • override 设计就是完全替换,这是预期行为
  • 如果需要保留自动优化,使用 extend 而非 override

设计取舍

模板文件 vs 模板引擎

方案优势代价
独立模板文件可独立审查、测试、diff组合爆炸(2^N 个文件)
模板引擎(Jinja2)灵活组合、无重复渲染后调试困难

Browser Use 选择独立文件是因为:

  • 模板数量可控(只维护最常用的 7 种组合)
  • 每个模板可以独立 diff 和 review
  • 不需要运行时渲染的性能开销

参考来源