共计 2027 个字符,预计需要花费 6 分钟才能阅读完成。
问题场景
最近在用 Claude API 做项目时,发现提示词 (prompt) 设计直接关系到最终输出质量。以下是几个常见翻车现场:

- 多轮对话失忆症:当对话轮次超过 5 轮后,模型开始忘记最初的设定条件
- 长文本截断:处理超过 2000 字的文档时,关键信息经常被拦腰斩断
- 指令漂移:复杂任务中,模型执行到第三步就开始偏离原始要求
更头疼的是,同样的提示词在不同 temperature 参数下表现差异巨大。有次把温度系数调到 0.7,原本严谨的技术文档突然变成了散文诗 …
架构设计
提示词模板进化论
经过大量测试,总结出三种实用的结构化提示模板:
-
XML 标签法:用标签明确划分指令和内容
<system> 你是一个资深 Python 工程师,需要严格遵守 PEP8 规范 </system> <user> 请重构以下代码: -
多示例示范法(few-shot):适合格式固定的输出
示例 1: 输入: 翻译 'Hello world' 到法语 输出: Bonjour le monde 现在请翻译:Good morning -
思维链(CoT):让模型展示推理过程
请分步骤解决:1. 理解题目要求 2. 提取关键信息 3. 分阶段计算
性能对比
| 方法 | 平均响应时间 | 准确率 | Token 消耗 |
|---|---|---|---|
| 零样本 | 1.2s | 68% | 120 |
| Few-shot | 1.8s | 85% | 210 |
| 思维链 | 2.5s | 92% | 350 |
代码实现
import anthropic
from tenacity import retry, stop_after_attempt
@retry(stop=stop_after_attempt(3))
async def query_claude(
prompt: str,
model: str = "claude-2.1",
max_tokens: int = 1000,
temperature: float = 0.3
) -> str:
"""
带重试机制的异步请求
:param prompt: 结构化提示词
:param model: 模型版本
:param max_tokens: 最大输出长度
:param temperature: 温度系数(0~1)
"""
client = anthropic.AsyncAnthropic(api_key=YOUR_KEY)
try:
response = await client.completions.create(
prompt=prompt,
model=model,
max_tokens_to_sample=max_tokens,
temperature=temperature
)
return response.completion
except Exception as e:
print(f"API 调用失败: {str(e)}")
raise
生产实践
敏感信息过滤
在医疗领域使用时,用正则表达式过滤 PHI 信息:
import re
phi_patterns = [r"\d{3}-\d{2}-\d{4}", # SSN
r"\b[A-Za-z]{4}\d{8}\b" # 病历号
]
def sanitize_text(text: str) -> str:
for pattern in phi_patterns:
text = re.sub(pattern, "[REDACTED]", text)
return text
对话历史压缩
采用滑动窗口算法管理对话 Token:
from transformers import GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
class DialogueCompressor:
def __init__(self, max_tokens=1500):
self.max_tokens = max_tokens
def trim_history(self, messages: list) -> list:
total = sum(len(tokenizer.encode(msg)) for msg in messages)
while total > self.max_tokens and len(messages) > 1:
removed = messages.pop(0)
total -= len(tokenizer.encode(removed))
return messages
延伸思考
成本优化公式
Claude 的计费公式可以简化为:
总成本 ≈ (输入 Token + 输出 Token) × 单价
通过实验发现:
– 当 max_tokens 设置为平均输出长度的 1.2 倍时性价比最高
– 温度系数每增加 0.1,响应多样性提升但准确率下降约 5%
挑战任务
现有提示词:
帮我写个 Python 爬虫
优化目标:
1. 增加异常处理要求
2. 指定使用 requests 库
3. 要求输出代码注释
试着用今天学到的结构化方法改造它吧!
写在最后
提示词工程很像在和 AI 玩文字解谜游戏,需要不断调整表达方式。经过三个月的实战,我的心得是:
– 像对待新员工一样明确交代任务
– 重要的指令说三遍(真的有效)
– 复杂任务要拆分成 checklist
希望这些经验能帮你少走弯路。如果有更好的实践方案,欢迎在评论区交流~
正文完
发表至: 未分类
近一天内
