页眉—正文—页脚提示模式
采用可扩展到复杂多任务提示的一致提示结构
页眉—正文—页脚提示模式 是 CoddyKit 上的免费 AI Prompt Engineering 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Prompt Engineering 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Prompt Engineering 课程共包含 4 节课。
将提示词视为文档
长篇文档——报告、文章、电子邮件——采用标头/正文/页脚结构,因为这种结构便于认知和导航。读者知道每个区域应包含什么内容。
同样的原则也适用于提示词。当提示词超过几句话时,标头/正文/页脚结构可以让提示词更易浏览、更易维护,也更一致。
这种模式适用于不同模型,并且可以从简单提示词扩展到高度复杂的提示词。
标头部分
标头回答两个问题:您是谁?以及任务是什么?
它设定模型的身份(角色或职责),并说明提示词的主要目标。其他所有内容都建立在这个基础之上。
优秀的标头应当简洁——通常为2到4句话。其中不包含示例、约束或输出规则。
header = '''
<header>
You are an expert technical writer specializing in API documentation.
Your task is to write clear, developer-friendly documentation
for the API endpoint described in the body of this prompt.
</header>
'''
print(header)正文部分
正文包含模型完成任务所需的内容或上下文。这是主要的数据区域:
- 要处理的源文档
- 对话历史
- 结构化数据(JSON、CSV 片段)
- 参考材料
- 用户的实际输入
正文是最大的部分,而且最常在运行时动态注入。
def build_body(endpoint_spec):
return f'''
<body>
<endpoint_specification>
{endpoint_spec}
</endpoint_specification>
</body>
'''
spec = 'POST /api/v2/users\nRequest body: {email: string, role: admin|user}\nReturns: {id: string, created_at: ISO8601}'
print(build_body(spec))页脚部分
页脚包含格式指令和输出模式。它之所以放在最后,是因为:
- 模型从上到下阅读,并将格式规则应用于刚刚处理的内容
- 靠近末尾的格式指令不太容易被忽略
- 对于输出类型相同的提示词,页脚通常可以重复使用
页脚应当明确:返回一个包含这些字段的 JSON 对象,而不是格式美观。
footer = '''
<footer>
Format your response as a JSON object with these fields:
{
"endpoint": "string",
"summary": "string (one sentence)",
"parameters": [{"name": "string", "type": "string", "required": true|false, "description": "string"}],
"response_example": "string (JSON)",
"error_codes": [{"code": "number", "meaning": "string"}]
}
Do not include any text outside the JSON object.
</footer>
'''
print(footer)组合完整模式
将标头、正文和页脚组合成完整且可复用的提示词函数:
def build_api_doc_prompt(endpoint_spec):
header = '<header>\nYou are an expert technical writer. Document the API endpoint in the body.\n</header>'
body = f'<body>\n<endpoint>\n{endpoint_spec}\n</endpoint>\n</body>'
footer = '<footer>\nReturn JSON: {"summary": str, "parameters": [...], "response_example": str}\nNo text outside JSON.\n</footer>'
return '\n\n'.join([header, body, footer])
spec = 'GET /api/products/:id\nReturns product details by ID'
print(build_api_doc_prompt(spec))这种顺序为何有效
标头/正文/页脚的顺序反映了模型处理上下文的方式:
- 首先是标头 — 建立身份和目标,为模型理解后续内容做好准备
- 其次是正文 — 模型现在会通过已确定的角色和任务来处理内容
- 最后是页脚 — 格式指令紧接在模型生成响应之前,从而最大限度地影响输出结构
将格式指令放在标头中(最前面),会导致模型在写出响应时已经部分遗忘这些指令。
扩展到复杂提示词
当提示词变得复杂时,页眉/正文/页脚模式可以自然扩展:
def build_complex_prompt(persona, task, context_docs, constraints, output_schema):
header = f'<header>\n{persona}\nTask: {task}\n</header>'
docs = '\n'.join(f'<document id="{i+1}">\n{d}\n</document>' for i, d in enumerate(context_docs))
body = f'<body>\n{docs}\n</body>'
constraint_list = '\n'.join(f'- {c}' for c in constraints)
footer = f'<footer>\n<constraints>\n{constraint_list}\n</constraints>\n<output_schema>\n{output_schema}\n</output_schema>\n</footer>'
return '\n\n'.join([header, body, footer])复用页脚模板
由于页脚定义了输出结构,它是最容易复用的部分。常见的页脚模板包括:
FOOTER_JSON = '<footer>\nReturn a valid JSON object. No text outside JSON. No markdown code fences.\n</footer>'
FOOTER_MARKDOWN = '<footer>\nFormat your response as markdown.\nUse ## for section headers.\nUse bullet points for lists.\nMaximum 500 words.\n</footer>'
FOOTER_STRUCTURED = '<footer>\nRespond using this exact structure:\n1. Summary (1 sentence)\n2. Key Findings (bullet list)\n3. Recommendation (1 paragraph)\n</footer>'
print('Footer templates ready for reuse.')在正文中注入动态内容
正文通常是在运行时动态构建的部分。动态注入正文的最佳实践:
- 始终将注入的内容包裹在带名称的 XML 标签中
- 在注入前清理用户输入,以防止提示词注入
- 截断过长的文档,并在正文中注明已截断
- 清晰标记每一段注入的内容(文档_1、用户查询、聊天历史)
def safe_inject(user_content, max_chars=3000):
safe = user_content.replace('<', '<').replace('>', '>')
if len(safe) > max_chars:
safe = safe[:max_chars] + '... [TRUNCATED]'
return f'<user_input>\n{safe}\n</user_input>'
raw = 'User provided text here. Could be very long.'
print(safe_inject(raw))在整个代码库中保持一致的结构
当您的整个应用程序始终一致地使用同一模式时,页眉/正文/页脚模式才能真正发挥作用。优点包括:
- 新团队成员可以立即理解任何提示词
- 在代码审查中更容易审查提示词——审查者确切知道应该查看哪里
- 自动化测试可以分别验证每个部分
- 在不同模型之间迁移提示词非常直接——只需更改内容,而不必更改结构
页眉/正文/页脚中的常见错误
会破坏该模式有效性的常见错误:
- 将格式说明放在页眉中——距离生成响应太远;模型会部分忽略它们
- 将任务描述埋在正文中——模型可能会把它当作要处理的数据,而不是指令
- 将约束拆分到不同部分——难以审查,并会导致矛盾
- 没有页脚——随着提示词复杂度提高,输出结构会变得不可预测
快速检查
在页眉/正文/页脚模式中,输出格式说明应放在哪里?为什么?
页眉/正文/页脚——要点回顾
页眉/正文/页脚模式将文档结构规范带入了提示词工程:
- 页眉:您是谁以及任务是什么——为后续所有内容设定框架
- 正文:内容和上下文——动态注入,并包裹在具有语义的 XML 标签中
- 页脚:格式说明和输出模式——放在最后,以最大程度影响输出结构
- 该模式可以自然地从简单提示词扩展到高度复杂的提示词
- 对于输出类型相同的提示词,页脚模板可以复用
- 在整个代码库中保持一致性,可以让提示词更易于审查、测试和维护
常见问题解答
「页眉—正文—页脚提示模式」课时是免费的吗?
是的 — 「页眉—正文—页脚提示模式」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Prompt Engineering 课程的其余内容,请升级到 CoddyKit PRO。 AI Prompt Engineering 课程共包含 4 节课。
「页眉—正文—页脚提示模式」这节课中我会学到什么?
采用可扩展到复杂多任务提示的一致提示结构 你通过在浏览器中直接运行的动手代码来练习 AI Prompt Engineering,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Prompt Engineering 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Prompt Engineering 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「页眉—正文—页脚提示模式」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Prompt Engineering 课中编写并运行代码吗?
能。每节 AI Prompt Engineering 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 XML 标签作为分隔符
- 模块化提示部分
- 页眉—正文—页脚提示模式
- 提示组织最佳实践