在 Claude 模型的提示工程中,使用 XML-like 标签结构是一种高效方法,能将模糊指令转化为结构化 “API”,从而实现可靠的响应解析、工具调用分发以及分层推理,尤其适用于多步代理工作流,避免幻觉问题。
XML 标签在 Claude 中的核心优势
Claude 模型经过大量 XML-like 数据训练,对标签结构有天然亲和力,使用<instructions>、<context>、<input>等标签能清晰分离指令、上下文和输入,提高解析可靠性。相比使用###或---等分隔符,XML 标签让模型更严格遵守边界,减少格式漂移和幻觉。根据 Anthropic 官方文档,这种结构化提示能显著提升输出一致性。
基本模板示例:
<prompt>
<role>你是专家软件架构师和工具调度器。</role>
<instructions>
- 仔细阅读<input/>。
- 在<reasoning>中逐步思考。
- 在<tool_plan>中决定工具调用。
- 仅在<final_answer>中输出用户可见答案。
</instructions>
<tools>
<tool name="search_knowledge_base">用于查询领域事实。</tool>
</tools>
<input>用户查询内容。</input>
<output_format>
<reasoning>内部思考。</reasoning>
<tool_plan>工具计划。</tool_plan>
<final_answer>最终答案。</final_answer>
</output_format>
</prompt>
这个模板将思考、工具决策与最终输出隔离,便于后端解析。
嵌套标签实现工具分发与层次推理
嵌套标签是 XML 提示的关键,能模拟树状任务结构,支持工具分发。例如,在 <tool_plan> 中使用嵌套定义多个工具调用:
<tool_plan>
<tool_call index="1">
<tool_name>search_knowledge_base</tool_name>
<arguments>
<query>具体查询。</query>
</arguments>
</tool_call>
</tool_plan>
属性如index便于排序解析。Claude 官方提示最佳实践推荐这种嵌套,确保模型输出匹配实际工具 API,减少映射代码。
对于层次推理,设计 <agent_system>:
<agent_system>
<agents>
<agent id="planner">
<responsibility>任务分解。</responsibility>
</agent>
<agent id="researcher">
<responsibility>工具事实收集。</responsibility>
</agent>
</agents>
<workflow>
<phase index="1" owner="planner">
<output_tag>plan</output_tag>
</phase>
</workflow>
</agent_system>
单次调用中 Claude 可模拟多角色,或多轮交互注入中间结果,实现分层代理。
多步代理工作流工程化
典型流程:规划→工具执行→合成答案。第一步提示要求 <tool_plan> 和初步 < answer_outline>,后端执行工具后反馈 < tool_results>:
<tool_results>
<tool_result index="1" tool_name="search_knowledge_base">
工具返回结果。
</tool_result>
</tool_results>
指令强调 “仅使用 < tool_results>,不明说‘未知’”。这种两阶段结构严格限制幻觉依赖工具数据。
减少幻觉的参数与约束
添加专用块:“无工具结果不编造;置信度低时标记。” 输出中引入标签:
<answer_metadata>
<confidence>medium</confidence>
<needs_more_info>true</needs_more_info>
</answer_metadata>
后端检查 confidence>high 才接受,或触发重试。
可落地参数与清单
标签选择参数:
- 核心标签:
<role>、<instructions>、<constraints>、<input>、<reasoning>、<tool_plan>、<final_answer>(必用,7 个上限)。 - 嵌套深度:≤3 层,避免解析复杂;属性用
id、index、name。 - 标签语义:描述性英文短词,跨提示一致。
解析与监控清单:
- 预校验:生成前验证 XML well-formed(用 lxml 或正则)。
- 后解析:XPath 提取
<final_answer>;若缺失,重提示 “严格遵守 < output_format>”。 - 阈值:嵌套 tool_call≤5;confidence 阈值:high (0.8+)、medium (0.5-0.8) 路由工具。
- 回滚策略:解析失败率 > 10%,简化至单层标签;监控 token 消耗,≤2000 tokens。
- 测试清单:
测试项 预期 失败重试 标签闭合 100% well-formed 自动修复 工具分发准确 95% 匹配 API 增 few-shot 无幻觉 <final_answer> 仅工具数据 加约束 代理完整 全阶段输出 多轮 fallback
部署参数:
- Claude 模型:Sonnet 3.5 优先(XML 亲和高)。
- 温度:0.1-0.3(结构化输出)。
- Max tokens:4096(含嵌套)。
- 超时:30s / 调用,重连 3 次。
这些参数经社区验证(如 Reddit ClaudeAI 讨论),在生产代理中将错误率降至 < 5%。
总结与扩展
XML 标签让 Claude 提示从 “艺术” 转为 “工程”,嵌套设计支撑复杂工作流。通过上述清单,即可快速落地多模型代理。未来可结合 JSON schema 验证,进一步自动化。
资料来源: