Anthropic的PromptEngineering指南!
Anthropic的PromptEngineering指南!
月伴飞鱼Anthropic 发布了全新 Prompt Engineering 指南,包含:元提示、模板、系统角色、XML 标签等关键技术。
Prompt通常包含以下两种类型的内容:
固定内容: 在多次交互中保持不变的静态指令或上下文。
变量内容: 随每个请求或对话而变化的动态元素,例如:
- 用户输入。
- 用于检索增强生成(RAG)的检索内容。
- 对话上下文,如用户账户历史。
- 系统生成的数据,如来自其他调用的工具使用结果。
Prompt模板:
将这些固定和变量部分结合在一起,为动态内容使用占位符
{{}}
表示。
优化Prompt技巧
添加示例
示例用
<example>
标签包装(如果有多个,则嵌套在<examples>
标签中)以保持结构。
1 | 我们的客服团队被非结构化反馈淹没了。你的任务是为我们的产品和工程团队分析反馈并对问题进行分类。使用这些类别:UI/UX、性能、功能请求、集成、定价和其他。同时评估情感(积极/中性/消极)和优先级(高/中/低)。这里有一个示例: |
添加思维链CoT
基本思维链提示:
在提示中添加
逐步思考
这类关键词。
1 | 起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。 |
引导式提示:
在思考过程中要遵循具体的步骤。
1 |
|
结构化提示:
使用像
<thinking>
和<answer>
这样的 XML 标签来分离推理和最终答案。
1 | 起草个性化邮件,向捐赠者请求为今年的关爱儿童计划捐款。 |
XML标签
在思维链提示当中,可以看到结构化提示中使用
<thinking>
这种Xml标签,能帮助大模型进行思考。
预填充
预填充的作用是,跳过前言,强制使用特定格式如 JSON 或 XML,甚至帮助大模型在角色扮演场景中保持角色一致性。
1 | 从此产品描述中提取名称、尺寸、价格和颜色,并将其作为 JSON 对象: |
在提示词结尾,添加
{
符号,这就是预填充的表现,直接强制大模型跳过前言,并直接输出 以{
开头的JSON 对象的内容。这样更简洁、更清晰,也更容易被程序解析而无需额外处理。