提示词模板与对话策略进阶
好的提示词不是"说得更多"——而是告诉 Claude 你是谁、要什么、格式是什么,让 AI 一次到位。
提示词结构模型
提示词模板系统
"""
可复用提示词模板管理系统
"""
from dataclasses import dataclass, field
from string import Template
@dataclass
class PromptTemplate:
"""提示词模板"""
name: str
category: str
template: str # 使用 $variable 占位
variables: list[str]
example_values: dict[str, str]
expected_quality: str
tips: list[str] = field(default_factory=list)
def render(self, **kwargs) -> str:
"""渲染模板"""
t = Template(self.template)
return t.safe_substitute(kwargs)
def demo(self) -> str:
return self.render(**self.example_values)
class PromptLibrary:
"""提示词库"""
TEMPLATES: list[PromptTemplate] = [
# ── 写作类 ──────────────────────────────────
PromptTemplate(
name="专业邮件起草",
category="写作",
template="""你是一位沟通专家,擅长撰写$tone风格的专业邮件。
背景:$context
请帮我写一封邮件:
- 收件人:$recipient($recipient_role)
- 目的:$purpose
- 关键要点:$key_points
- 语气:$tone
- 长度:$length
输出格式:
主题行:[邮件主题]
---
[邮件正文]""",
variables=["tone", "context", "recipient", "recipient_role", "purpose", "key_points", "length"],
example_values={
"tone": "专业友好",
"context": "我们的 SaaS 产品试用期即将结束,用户还没付款",
"recipient": "张总",
"recipient_role": "目标客户的采购负责人",
"purpose": "温和提醒续费,了解他们的决策进度",
"key_points": "提供 30 天延期试用,提供定制化演示机会",
"length": "200字以内",
},
expected_quality="可直接发送的邮件,不需要二次编辑",
tips=["越详细的上下文,邮件越精准", "对高价值客户加'高管视角'变量"],
),
PromptTemplate(
name="会议纪要整理",
category="写作",
template="""你是一位专业的会议记录整理助手。
会议原始记录(可能是录音转文字,有口误和重复):
$raw_notes
请按以下结构整理会议纪要:
## 会议基本信息
- 日期:$date
- 参会人:$attendees
- 主题:$topic
## 核心决策
(只列真正做出的决定,用 ✅ 标注)
## 行动项
| 负责人 | 任务 | 截止日期 |
|--------|------|----------|
## 讨论摘要
(按议题分段,每段不超过 3 句)
## 下次会议
待确认议题:""",
variables=["raw_notes", "date", "attendees", "topic"],
example_values={
"raw_notes": "嗯,我们今天主要讨论了Q4的预算,张总说要压缩20%,李总觉得研发不能动...",
"date": "2026-03-23",
"attendees": "张总、李总、运营团队",
"topic": "Q4 预算规划",
},
expected_quality="结构清晰的会议纪要,行动项有明确责任人",
tips=["输入越完整的原始记录,整理越准确", "加上录音时长帮助 Claude 判断内容密度"],
),
# ── 分析类 ──────────────────────────────────
PromptTemplate(
name="竞品分析框架",
category="分析",
template="""你是一位产品策略顾问,请对以下竞品进行分析。
我的产品:$my_product
分析竞品:$competitor
我方核心优势:$my_strengths
目标市场:$target_market
请用以下框架分析:
## 功能对比矩阵
(表格:功能 | 我方 | 竞方 | 优劣势)
## 用户评价分析
(基于你的知识,列出用户常见夸赞和投诉)
## 差异化机会
(3 个我方可以建立优势的具体方向)
## 威胁评估
(竞品最可能在哪个方向对我方造成威胁)
数据截止:$knowledge_date,请注明任何可能已过时的信息。""",
variables=["my_product", "competitor", "my_strengths", "target_market", "knowledge_date"],
example_values={
"my_product": "Notion 替代品,专注团队项目管理",
"competitor": "Linear",
"my_strengths": "价格更低,支持中文,本地化更好",
"target_market": "中国 SaaS 团队(10-50 人)",
"knowledge_date": "2026年初",
},
expected_quality="可直接用于产品会议的竞品分析报告",
tips=["告知你的商业模式让分析更有针对性", "加上'我方月活数据'让对比更真实"],
),
# ── 代码类 ──────────────────────────────────
PromptTemplate(
name="代码审查",
category="代码",
template="""你是一位$language专家,有丰富的$domain领域经验。
请审查以下代码:
```$language
$code
审查维度: 1. Bug 风险:可能导致运行时错误的问题(高优先级) 2. 性能问题:明显的性能瓶颈或内存浪费 3. 安全隐患:SQL 注入、XSS、未验证输入等 4. 代码质量:可读性、命名、重复代码 5. 改进建议:最值得重构的 1-2 处,附修改后代码
格式:用表格列出问题(行号 | 类型 | 描述 | 建议),再单独写改进代码。""", variables=["language", "domain", "code"], example_values={ "language": "Python", "domain": "Web API", "code": "def get_user(id):\n conn = db.connect()\n result = conn.execute(f'SELECT * FROM users WHERE id={id}')\n return result.fetchone()", }, expected_quality="发现 SQL 注入漏洞,提供参数化查询修复方案", tips=["告知代码的运行环境和 Python 版本", "说明是生产代码还是脚本以校准严格程度"], ), ]
@classmethod
def get(cls, name: str) -> PromptTemplate | None:
return next((t for t in cls.TEMPLATES if t.name == name), None)
@classmethod
def by_category(cls, category: str) -> list[PromptTemplate]:
return [t for t in cls.TEMPLATES if t.category == category]
@classmethod
def demo_all(cls):
for t in cls.TEMPLATES:
print(f"\n{'='*50}")
print(f"模板: [{t.category}] {t.name}")
print(f"期望质量: {t.expected_quality}")
print(f"\n渲染示例 (前300字):\n{t.demo()[:300]}...")
lib = PromptLibrary() lib.demo_all() ```
多轮对话策略
| 策略 | 使用时机 | 示例 |
|---|---|---|
| 分步拆解 | 复杂任务 | "先给大纲" → "扩写第2节" → "润色全文" |
| 角色扮演 | 需要特定视角 | "扮演我们的目标用户,评价这个功能" |
| 对立验证 | 防止 AI 附和 | "现在用批评者视角找这个方案的缺陷" |
| 格式约束 | 结构化输出 | "只用 JSON 输出,字段为 name/score/reason" |
| 迭代精炼 | 初稿不满意 | "保留第一段,重写第二段,更简洁有力" |
行动清单
- [ ] 从模板库选 2 个最常用场景(邮件/代码审查/会议纪要),保存为 Project Knowledge
- [ ] 建立个人"提示词黑名单":收集那些让 Claude 给出废话回答的提问方式,避免重复踩坑
- [ ] 练习"角色 + 任务 + 格式"三段式结构,每次写提示词前先想清楚这三个要素
- [ ] 对话不满意时用"迭代精炼"而非重来:告诉 Claude 哪里好、哪里要改,比全部重写更高效
- [ ] 对重要任务用"对立验证":让 Claude 先给方案,再扮演批评者找漏洞
- [ ] 每月回顾一次用过的提示词,把效果好的整理进模板库,把效果差的分析原因
下一章:03-Claude-Code本地开发提效/01-安装配置与CLI核心工作流 — 进入终端,用 Claude Code 重塑本地开发体验。