# Claude XML标签提示词编写方法详解
目录
什么是XML标签提示词
XML标签提示词是一种结构化的提示词编写方式,通过使用类似XML的标签来组织和标记提示词中的不同部分。这种方式让Claude更好地理解指令的结构和意图。
<instruction>
请帮我总结这段文字。
</instruction>
<input>
这是一段需要总结的长文本...
</input>
<format>
使用项目符号列表
</format>
为什么使用XML标签
1. 清晰的语义分隔
XML标签提供了明确的边界,帮助Claude区分不同类型的内容:
- 指令(Instruction)
- 输入数据(Input)
- 期望格式(Format)
- 约束条件(Constraints)
- 示例(Examples)
2. 减少歧义
通过明确的标签,避免不同部分内容的混淆:
<!-- 不好的写法 -->
总结这个:用户说产品不好,还有要退款
<!-- 好的写法 -->
<task>分析用户反馈</task>
<user_feedback>用户说产品不好,还有要退款</user_feedback>
<analysis_type>情感分析 + 问题提取</analysis_type>
3. 便于维护和修改
结构化的提示词更容易修改和维护:
<system_prompt>
你是一位专业的客服代表
</system_prompt>
<rules>
- 使用礼貌用语
- 提供具体解决方案
- 避免承诺无法兑现的事项
</rules>
<!-- 可以独立修改规则部分,不影响其他内容 -->
基础语法
标签结构
XML标签的基本格式:
<tag_name>内容</tag_name>
命名规范
- 使用描述性名称:
<user_input>而非<u> - 使用下划线分隔多词:
<code_example>而非<codeexample> - 保持一致的命名风格
<!-- 推荐 -->
<prompt_content>
<code_block>
<expected_output>
<!-- 不推荐 -->
<pc>
<cb>
<eo>
嵌套标签
XML标签可以嵌套使用:
<response_format>
<introduction>
简短介绍主题
</introduction>
<main_content>
<points>
列出3-5个要点
</points>
<examples>
每个要点配一个例子
</examples>
</main_content>
<conclusion>
总结并给出建议
</conclusion>
</response_format>
常用标签详解
1. <role> / <system_prompt>
定义AI的角色和基本设定:
<role>
你是一位资深的Python工程师,有10年以上的开发经验。
擅长代码审查、性能优化和架构设计。
回答时使用专业但易懂的语言。
</role>
2. <task> / <instruction>
明确指定要完成的任务:
<task>
分析以下代码的性能问题,并提供优化建议。
</task>
3. <input> / <context>
提供任务所需的输入数据或上下文:
<input>
def process_data(items):
result = []
for item in items:
for i in range(len(items)):
result.append(item * i)
return result
</input>
4. <constraints> / <rules>
设置约束条件和规则:
<constraints>
- 代码必须保持原有功能
- 优化后的时间复杂度应低于O(n²)
- 使用Python标准库,不引入第三方依赖
- 添加必要的注释说明
</constraints>
5. <format> / <output_format>
指定输出的格式要求:
<format>
使用markdown格式输出:
1. **问题描述**:指出当前代码的问题
2. **优化方案**:说明优化思路
3. **优化代码**:给出完整的优化后代码
4. **复杂度分析**:分析优化前后的时间/空间复杂度
</format>
6. <example> / <few_shot>
提供示例以帮助理解:
<examples>
<example>
<input>2+2</input>
<output>4</output>
<explanation>基本的加法运算</explanation>
</example>
<example>
<input>5*3</input>
<output>15</output>
<explanation>乘法运算</explanation>
</example>
</examples>
7. <tone> / <style>
控制回复的语气和风格:
<style>
- 使用简洁的语言
- 避免冗余解释
- 采用技术文档风格
- 适当使用代码块和表格
</style>
高级用法
1. 条件标签
使用标签表示可选或条件性的内容:
<if_context>
<context>
用户是初学者,需要详细解释
</context>
</if_context>
<output_options>
<option format="简短版">只给出结论</option>
<option format="详细版">包含推理过程</option>
<option format="教学版">适合初学者的详细教程</option>
</output_options>
2. 元数据标签
添加元信息帮助理解提示词:
<!--
提示词版本: 1.0
创建日期: 2024-01-15
用途: 代码审查
作者: AI助手
-->
<prompt_metadata>
<version>1.0</version>
<category>code_review</category>
<complexity>intermediate</complexity>
</prompt_metadata>
3. 变量替换
使用占位符表示需要替换的内容:
<template>
分析{{LANGUAGE}}代码的{{ISSUE_TYPE}}问题
</template>
<variable_values>
<LANGUAGE name="编程语言">Python</LANGUAGE>
<ISSUE_TYPE name="问题类型">性能</ISSUE_TYPE>
</variable_values>
4. 多语言支持
使用属性标记语言:
<prompt lang="zh-CN">
请用中文回答以下问题
</prompt>
<response_format lang="zh-CN">
使用简体中文,术语可保留英文
</response_format>
最佳实践
1. 标签设计原则
1.1 保持简洁
使用简短但描述性的标签名称:
<!-- 不推荐:过度冗长 -->
<instruction_tag_container>
<instruction_content_wrapper>
请帮我完成这个任务
</instruction_content_wrapper>
</instruction_tag_container>
<!-- 不推荐:过度简略 -->
<t>请帮我完成这个任务</t>
<!-- 推荐:简洁且描述性 -->
<task>
请帮我完成这个任务
</task>
1.2 语义化命名
标签名称应清晰表达内容的用途:
<!-- 推荐:意图明确 -->
<user_input>
<code_to_review>
<error_message>
<expected_output>
<!-- 不推荐:意图模糊 -->
<input1>
<data2>
<text3>
1.3 使用标准化标签组合
对于常见场景,使用一致的标签组合模式:
<!-- 代码审查标准模式 -->
<role>...</role>
<task>...</task>
<input>...</input>
<constraints>...</constraints>
<output_format>...</output_format>
<!-- 文档生成标准模式 -->
<role>...</role>
<topic>...</topic>
<audience>...</audience>
<structure>...</structure>
<style_guide>...</style_guide>
2. 结构组织模式
2.1 外层到内层原则
将更广泛、更抽象的内容放在外层,具体细节放在内层:
<!-- 推荐:从宏观到微观 -->
<workflow>
<phase name="设计阶段">
<sub_task>数据库设计</sub_task>
<details>
表结构:users, orders, products
关系:一对多、多对多
</details>
</phase>
</workflow>
2.2 优先级排序
使用优先级属性帮助Claude理解重要性:
<requirements>
<requirement priority="critical" must_have="true">
用户密码必须使用bcrypt加密
</requirement>
<requirement priority="high">
API响应时间应小于200ms
</requirement>
<requirement priority="medium">
界面应支持暗色模式
</requirement>
<requirement priority="low">
支持多语言切换
</requirement>
</requirements>
2.3 模块化设计
将复杂提示词拆分为可复用的模块:
<!-- 定义可复用模块 -->
<template id="code_review_template">
<role>资深代码审查专家</role>
<check_items>
- 安全漏洞
- 性能问题
- 代码规范
- 可维护性
</check_items>
</template>
<!-- 使用模块 -->
<prompt use_template="code_review_template">
<language>Python</language>
<code>...</code>
</prompt>
3. 一致性规范
3.1 命名风格一致
在整个提示词中保持统一的命名风格:
<!-- 推荐:统一使用下划线分隔 -->
<user_input>
<code_block>
<error_message>
<!-- 不推荐:混用不同风格 -->
<userInput>
<code-block>
<errorMessage>
3.2 标签层级一致
相似类型的内容使用相同的层级结构:
<!-- 推荐:一致的层级 -->
<task>
<sub_task>...</sub_task>
<sub_task>...</sub_task>
</task>
<deliverables>
<deliverable>...</deliverable>
<deliverable>...</deliverable>
</deliverables>
<!-- 不推荐:不一致的层级 -->
<task>
<item>...</item>
<subitem>...</subitem>
</task>
<deliverables>
<deliverable>
<part>...</part>
</deliverable>
</deliverables>
3.3 格式约定
建立标签使用的格式约定:
<!-- 约定:input标签总是包含language属性 -->
<input language="python">
代码内容
</input>
<!-- 约定:priority总是使用critical/high/medium/low -->
<task priority="critical">
必须完成的任务
</task>
<!-- 约定:example总是包含explanation -->
<example>
<input>...</input>
<output>...</output>
<explanation>...</explanation>
</example>
4. 内容优化技巧
4.1 清晰的边界
确保不同标签之间有清晰的内容边界:
<!-- 不推荐:边界模糊 -->
<task>
分析这个用户反馈:用户说产品不好用,想退款,而且客服态度也不好
</task>
<!-- 推荐:边界清晰 -->
<task>
分析用户反馈中的问题类型和情绪倾向
</task>
<feedback_text>
用户说产品不好用,想退款,而且客服态度也不好
</feedback_text>
<analysis_focus>
- 问题分类(产品质量/服务问题)
- 情绪分析(不满程度)
- 紧急程度评估
</analysis_focus>
4.2 属性增强
使用标签属性提供额外的上下文信息:
<!-- 基础用法 -->
<code>
function example() {}
</code>
<!-- 增强用法:添加属性 -->
<code
language="javascript"
framework="react"
purpose="组件示例"
complexity="beginner">
function example() {}
</code>
4.3 条件性内容
使用标签标记可选或条件性内容:
<!-- 场景化配置 -->
<scenarios>
<scenario condition="用户是初学者">
<detail_level>详细</detail_level>
<include_examples>true</include_examples>
<avoid_jargon>true</avoid_jargon>
</scenario>
<scenario condition="用户是专家">
<detail_level>简洁</detail_level>
<include_examples>false</include_examples>
<use_technical_terms>true</use_technical_terms>
</scenario>
</scenarios>
5. 注释和文档
5.1 文件级注释
在每个提示词文件开头添加元信息:
<!--
===========================================
代码审查助手提示词
===========================================
版本: 2.1
创建日期: 2024-01-15
最后修改: 2024-01-20
作者: AI团队
适用范围: Python, JavaScript, Java
输出格式: Markdown报告
===========================================
变更历史:
- v2.1: 添加安全审查检查项
- v2.0: 重构输出格式结构
- v1.0: 初始版本
===========================================
-->
5.2 段落级注释
对复杂段落添加说明:
<!--
==================================================
安全检查部分
==================================================
这部分重点关注OWASP Top 10安全风险
包括SQL注入、XSS、CSRF等常见漏洞
==================================================
-->
<security_checks>
<check category="injection">
检查所有用户输入是否经过参数化处理
</check>
<check category="xss">
验证输出是否进行了适当的转义
</check>
</security_checks>
5.3 行内注释
对特定标签添加快速说明:
<!-- 核心任务:不可修改 -->
<task locked="true">
执行完整的安全审计
</task>
<!-- 可选扩展:根据需要调整 -->
<optional_extensions>
<extension>性能分析</extension>
<extension>代码风格建议</extension>
</optional_extensions>
6. 调试和优化
6.1 渐进式复杂化
从简单开始,逐步增加复杂度:
<!-- 第一版:基础结构 -->
<task>审查代码</task>
<input>...</input>
<!-- 第二版:添加约束 -->
<task>审查代码</task>
<input>...</input>
<constraints>
- 关注安全问题
- 提供修复建议
</constraints>
<!-- 第三版:完善细节 -->
<task>审查代码</task>
<input>...</input>
<constraints>...</constraints>
<output_format>...</output_format>
<examples>...</examples>
6.2 版本对比
保留不同版本进行效果对比:
<!-- 版本A:简洁版 -->
<prompt version="a">
<task>总结文本</task>
</prompt>
<!-- 版本B:详细版 -->
<prompt version="b">
<task>总结文本</task>
<requirements>
- 提取关键信息
- 使用项目符号
- 限制在200字内
</requirements>
</prompt>
6.3 A/B测试标记
标记用于A/B测试的变体:
<prompt_variant>
<variant_id>A</variant_id>
<approach>直接指令</approach>
<content>
<task>请完成以下任务</task>
</content>
</prompt_variant>
<prompt_variant>
<variant_id>B</variant_id>
<approach>引导式提问</approach>
<content>
<question>你应该如何完成这个任务?</question>
</content>
</prompt_variant>
7. 常见陷阱及避免
7.1 标签过度嵌套
<!-- 不推荐:过度嵌套 -->
<level1>
<level2>
<level3>
<level4>
<level5>
实际内容
</level5>
</level4>
</level3>
</level2>
</level1>
<!-- 推荐:合理嵌套(不超过3层) -->
<response_format>
<section>
<content>实际内容</content>
</section>
</response_format>
7.2 标签滥用
<!-- 不推荐:所有内容都用标签包装 -->
<wrapper>
<another_wrapper>
<yet_another_wrapper>
<final_wrapper>
请说"你好"
</final_wrapper>
</yet_another_wrapper>
</another_wrapper>
</wrapper>
<!-- 推荐:只在需要时使用标签 -->
<greeting_language>中文</greeting_language>
<action>打招呼</action>
7.3 信息分散
<!-- 不推荐:相关信息分散在不同位置 -->
<task>分析Python代码</task>
<constraints>使用PEP 8规范</constraints>
<input>代码内容</input>
<style>关注可读性</style>
<!-- 推荐:相关信息集中 -->
<code_review>
<language>Python</language>
<standards>
<format>PEP 8</format>
<focus>可读性</focus>
</standards>
<code>代码内容</code>
</code_review>
7.4 缺少上下文
<!-- 不推荐:缺少必要上下文 -->
<task>优化这个函数</task>
<input>function f() {...}</input>
<!-- 推荐:提供完整上下文 -->
<context>
<application_type>高频交易系统</application_type>
<performance_requirement>每秒处理1000+请求</performance_requirement>
<bottleneck_identified>数据库查询</bottleneck_identified>
</context>
<task>优化这个函数</task>
<input>function f() {...}</input>
8. 可复用性设计
8.1 模板化
创建可复用的提示词模板:
<!-- 模板定义 -->
<template name="code_analysis">
<role>代码分析专家</role>
<analysis_aspects>
<aspect>正确性</aspect>
<aspect>性能</aspect>
<aspect>可读性</aspect>
<aspect>安全性</aspect>
</analysis_aspects>
<output_sections>
<section>问题发现</section>
<section>改进建议</section>
<section>优化代码</section>
</output_sections>
</template>
<!-- 使用模板 -->
<code_analysis_prompt template="code_analysis">
<language>Python</language>
<target_code>...</target_code>
<specific_focus>
<focus>内存使用优化</focus>
<focus>并发处理</focus>
</specific_focus>
</code_analysis_prompt>
8.2 组合模式
通过组合小模块构建复杂提示词:
<!-- 基础模块 -->
<module id="security_check">
<checks>
- SQL注入
- XSS
- CSRF
- 认证绕过
</checks>
</module>
<module id="performance_check">
<checks>
- 查询优化
- 缓存策略
- 算法复杂度
</checks>
</module>
<!-- 组合使用 -->
<comprehensive_review>
<use_module ref="security_check"/>
<use_module ref="performance_check"/>
<custom_checks>
- 代码风格
- 文档完整性
</custom_checks>
</comprehensive_review>
8.3 参数化
使用参数使提示词更灵活:
<!-- 参数化模板 -->
<prompt_template>
<parameter name="language" default="Python"/>
<parameter name="complexity" default="intermediate"/>
<parameter name="output_length" default="detailed"/>
<task>
分析一段{{language}}代码,
复杂度为{{complexity}},
提供{{output_length}}的反馈。
</task>
</prompt_template>
<!-- 实例化 -->
<prompt_instance template="code_analysis">
<parameter name="language" value="JavaScript"/>
<parameter name="complexity" value="advanced"/>
<parameter name="output_length" value="concise"/>
</prompt_instance>
9. 错误处理和边界情况
9.1 输入验证
指定输入要求:
<input_requirements>
<requirement type="format">
代码必须完整且可运行
</requirement>
<requirement type="size">
不超过500行代码
</requirement>
<requirement type="language">
明确指定编程语言
</requirement>
<requirement type="context">
提供功能说明
</requirement>
</input_requirements>
<error_handling>
<error condition="输入不完整">
请提供完整的代码片段
</error>
<error condition="语言不明确">
请指定编程语言
</error>
<error condition="代码过长">
请分段提交或提供关键部分
</error>
</error_handling>
9.2 边界条件
明确边界情况的处理方式:
<edge_cases>
<case condition="空输入">
返回友好的错误提示,说明需要提供的内容
</case>
<case condition="输入过长">
提供摘要并询问是否需要详细分析
</case>
<case condition="格式错误">
指出格式问题并给出正确格式示例
</case>
<case condition="内容不明确">
询问澄清问题以理解需求
</case>
</edge_cases>
9.3 降级策略
定义当完整方案不可行时的降级方案:
<response_strategy>
<primary_strategy>
提供完整的代码重构方案
</primary_strategy>
<fallback_strategy condition="时间限制">
提供关键优化点的建议列表
</fallback_strategy>
<last_resort condition="信息不足">
指出需要补充的信息并提供初步评估
</last_resort>
</response_strategy>
10. 性能优化
10.1 Token效率
优化提示词以减少token使用:
<!-- 不推荐:冗余描述 -->
<instructions>
我要请你帮我做一件事情,这件事情是关于代码的,
我需要你仔细地查看代码,然后告诉我哪里有问题
</instructions>
<!-- 推荐:简洁精确 -->
<task>审查代码问题</task>
10.2 分段处理
对大型任务使用分段策略:
<!-- 大任务分段 -->
<large_task>
<task_name>审查1000行代码库</task_name>
<execution_plan>
<phase scope="files_1_10">第一批文件</phase>
<phase scope="files_11_20">第二批文件</phase>
<phase scope="files_21_30">第三批文件</phase>
</execution_plan>
<summary_approach>
每批完成后提供阶段性总结,
最后提供整体分析报告
</summary_approach>
</large_task>
10.3 缓存友好
设计可缓存的部分:
<cached_components>
<!-- 静态角色定义 -->
<role cacheable="true">
资深技术顾问
</role>
<!-- 可复用的格式定义 -->
<output_format cacheable="true" id="standard_report">
## 概述
## 详细分析
## 建议
</output_format>
<!-- 动态内容 -->
<task cacheable="false">
具体需要处理的任务
</task>
</cached_components>
11. 协作和分享
11.1 团队规范
建立团队共用的标签规范文档:
<!--
团队提示词规范 v1.0
====================
强制标签:
- role: 必须在所有提示词中定义
- task: 明确指定任务
- output_format: 说明输出格式
推荐标签:
- context: 提供背景信息
- constraints: 列出约束条件
- examples: 给出示例
命名约定:
- 使用下划线分隔
- 全小写
- 描述性命名
优先级:
- critical > high > medium > low
-->
11.2 版本控制
为提示词添加版本信息:
<prompt_manifest>
<version>2.1.0</version>
<changelog>
<change version="2.1.0" date="2024-01-20">
- 添加边界条件处理
- 优化输出格式
</change>
<change version="2.0.0" date="2024-01-10">
- 重构标签结构
- 添加模块化支持
</change>
</changelog>
<backward_compatibility>
与2.0.x版本兼容,
不兼容1.x版本
</backward_compatibility>
</prompt_manifest>
11.3 共享模板
创建可共享的模板库:
<!-- 模板库目录 -->
<template_library>
<category name="代码相关">
<template name="code_review" file="review.xml"/>
<template name="code_optimization" file="optimize.xml"/>
<template name="code_generation" file="generate.xml"/>
</category>
<category name="文档相关">
<template name="api_doc" file="api_doc.xml"/>
<template name="tutorial" file="tutorial.xml"/>
<template name="readme" file="readme.xml"/>
</category>
<usage_instruction>
使用 <include template="name"/> 引用模板
</usage_instruction>
</template_library>
实战案例
案例1:代码审查助手
<role>
你是一位资深代码审查专家,有15年软件开发经验。
你擅长发现代码中的潜在问题、性能瓶颈和安全漏洞。
</role>
<task>
审查以下代码,提供全面的反馈意见。
</task>
<input>
<language>Python</language>
<code>
def get_user_data(user_id):
query = f"SELECT * FROM users WHERE id = {user_id}"
result = database.execute(query)
return result
</code>
</input>
<review_criteria>
<criteria priority="critical">
- SQL注入风险
- 身份验证问题
- 敏感数据泄露
</criteria>
<criteria priority="high">
- 性能问题
- 错误处理
- 代码规范
</criteria>
<criteria priority="medium">
- 可读性
- 可维护性
- 测试覆盖
</criteria>
</review_criteria>
<output_format>
## 代码审查报告
### 严重问题(Critical)
- 问题描述
- 风险说明
- 修复建议
### 重要问题(High)
- ...
### 改进建议(Medium)
- ...
### 优化后的代码
```python
# 修复后的代码
总结
总体评分和主要改进点
</output_format>
案例2:技术文档写作助手
<system_prompt>
你是一位技术文档专家,擅长将复杂的技术概念
转化为清晰易懂的文档。
</system_prompt>
<document_requirements>
<audience level="intermediate">
读者有一定编程基础,但对该技术不熟悉
</audience>
<structure>
1. 概述(1-2段)
2. 核心概念(3-5个要点)
3. 代码示例(至少2个)
4. 常见问题(FAQ)
5. 参考资源
</structure>
<style_guide>
- 使用简洁的中文
- 技术术语保留英文
- 代码块使用语法高亮
- 适当使用图表说明
- 每个概念配一个实例
</style_guide>
</document_requirements>
<content_to_documentize>
<topic>异步编程基础</topic>
<key_points>
- 异步vs同步
- 事件循环
- Promise/async-await
- 错误处理
</key_points>
<target_language>JavaScript</target_language>
</content_to_documentize>
<output>
请按照上述要求,写一篇完整的技术文档。
</output>
案例3:数据分析助手
<role>
你是一位数据分析师,精通Python数据分析栈。
</role>
<task>
分析给定的销售数据,提供业务洞察。
</task>
<data_context>
<data_type>销售记录</data_type>
<time_range>2024年Q1</time_range>
<columns>
产品ID、销售日期、销售数量、单价、客户类型、地区
</columns>
</data_context>
<analysis_requests>
<request priority="1">
- 总销售额趋势(按周)
- 各产品类别销售占比
- 不同客户群体的购买行为
</request>
<request priority="2">
- 地区销售对比
- 价格敏感度分析
</request>
<request priority="3">
- 异常销售记录识别
- 库存优化建议
</request>
</analysis_requests>
<output_format>
## 数据分析报告
### 1. 数据概览
- 数据规模、时间范围等基本信息
### 2. 核心发现
使用可视化图表展示关键洞察
### 3. 详细分析
按优先级展示各项分析结果
### 4. 业务建议
基于数据的具体建议
### 5. 附录
分析代码(使用Python)
</output_format>
<visualization>
使用Python的matplotlib/plotly生成图表
图表类型:折线图、柱状图、饼图、热力图
</visualization>
案例4:对话式任务分解
<task_decomposition>
<main_goal>开发一个用户认证系统</main_goal>
<context>
<tech_stack>
- 后端:Node.js + Express
- 数据库:PostgreSQL
- 前端:React
</tech_stack>
<requirements>
- 用户注册/登录
- 密码加密存储
- JWT token认证
- 密码重置功能
- 会话管理
</requirements>
</context>
<decomposition_strategy>
<phase order="1">
<phase_name>设计阶段</phase_name>
<tasks>
- 设计数据库schema
- 设计API接口规范
- 设计认证流程图
</tasks>
<deliverables>设计文档</deliverables>
</phase>
<phase order="2">
<phase_name>后端开发</phase_name>
<tasks>
- 实现用户注册API
- 实现登录API
- 实现JWT中间件
- 实现密码重置流程
</tasks>
<deliverables>后端API + 单元测试</deliverables>
</phase>
<phase order="3">
<phase_name>前端开发</phase_name>
<tasks>
- 创建登录/注册页面
- 实现表单验证
- 集成API调用
- 实现路由守卫
</tasks>
<deliverables>前端页面 + 集成测试</deliverables>
</phase>
<phase order="4">
<phase_name>测试与部署</phase_name>
<tasks>
- 集成测试
- 安全测试
- 性能优化
- 部署配置
</tasks>
<deliverables>测试报告 + 部署文档</deliverables>
</phase>
</decomposition_strategy>
<output>
请详细说明每个阶段的具体步骤、
预计工时、潜在风险和依赖关系。
</output>
</task_decomposition>
更多推荐


所有评论(0)