提示词模板与对话策略进阶
High Contrast
Dark Mode
Light Mode
Sepia
Forest
2 min read483 words

提示词模板与对话策略进阶

好的提示词不是"说得更多"——而是告诉 Claude 你是谁、要什么、格式是什么,让 AI 一次到位。

提示词结构模型

graph TD PROMPT[高效提示词] --> ROLE[角色设定\nYou are...] PROMPT --> CONTEXT[上下文\n背景+目标] PROMPT --> TASK[任务描述\n具体要求] PROMPT --> FORMAT[输出格式\n结构+长度] PROMPT --> CONSTRAINT[约束条件\n禁忌+边界] ROLE --> R1[专业背景] ROLE --> R2[目标受众视角] FORMAT --> F1[Markdown表格] FORMAT --> F2[分步骤列表] FORMAT --> F3[JSON结构] FORMAT --> F4[代码块] style PROMPT fill:#e3f2fd,stroke:#1565c0,stroke-width:2px style FORMAT fill:#c8e6c9,stroke:#388e3c,stroke-width:2px

提示词模板系统

"""
可复用提示词模板管理系统
"""
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"
迭代精炼 初稿不满意 "保留第一段,重写第二段,更简洁有力"

行动清单

下一章03-Claude-Code本地开发提效/01-安装配置与CLI核心工作流 — 进入终端,用 Claude Code 重塑本地开发体验。