跳到主要内容

提示词优化

提示词(Prompt)是与大语言模型交互的关键,优化提示词可以显著提升输出质量、减少 token 消耗、获得更精准的结果。

基础原则

1. 清晰明确

模糊的提示:

帮我写点东西

清晰的提示:

请写一篇关于人工智能在医疗领域应用的文章,
字数 800 字左右,面向普通读者,
语言通俗易懂,包含 3 个具体应用案例。

2. 提供上下文

# 背景信息
我是一名 Python 后端开发者,正在开发一个电商系统。

# 当前问题
用户下单后支付失败,但库存已经被扣减了。

# 期望结果
请提供解决方案,确保库存扣减和支付是原子操作。

3. 指定输出格式

请分析以下文本的情感倾向,返回 JSON 格式:
{
"sentiment": "positive/negative/neutral",
"confidence": 0.0-1.0,
"keywords": ["关键词列表"]
}

提示词结构

标准模板

## 角色
你是一位 [角色描述]。

## 任务
[具体任务说明]

## 输入
[用户提供的内容]

## 输出要求
- [格式要求]
- [长度要求]
- [风格要求]

## 示例(可选)
输入:[示例输入]
输出:[示例输出]

## 注意事项
- [约束条件]
- [禁止事项]

实际示例

system_prompt = """
## 角色
你是一位资深的技术文档工程师,擅长将复杂技术概念解释清楚。

## 任务
根据用户提供的代码,生成清晰的 API 文档。

## 输出要求
- 使用 Markdown 格式
- 包含:函数说明、参数列表、返回值、使用示例
- 语言简洁专业

## 注意事项
- 不要遗漏任何参数
- 示例代码必须可运行
"""

高级技巧

1. Few-Shot Learning(少样本学习)

提供几个示例让模型学习模式:

请将产品描述转换为营销文案。

示例 1:
产品:蓝牙耳机,续航 30 小时,主动降噪
文案:告别嘈杂,沉浸音乐世界。30 小时超长续航,让美妙音符时刻相伴。

示例 2:
产品:保温杯,500ml,12 小时保温
文案:一杯温暖,从晨曦到星夜。500ml 大容量,12 小时锁住温度。

现在请转换:
产品:机械键盘,青轴,RGB 背光,全键无冲

2. Chain-of-Thought(思维链)

让模型展示推理过程:

请解决这个问题,展示你的思考步骤:

问题:小明有 15 个苹果,他给了小红 1/3,又吃掉了剩余的 1/5,
请问他还剩多少个苹果?

请按以下格式回答:
1. 分析问题
2. 分步计算
3. 得出答案

3. Role Prompting(角色提示)

赋予模型特定角色:

你是一位拥有 20 年经验的首席技术官,
你正在评估一个技术方案的可行性。
请从技术可行性、成本效益、风险控制三个角度进行分析。

4. 分解复杂任务

将大任务拆分为小步骤:

def complex_analysis(document):
# 步骤 1:提取关键信息
key_info = call_llm(f"从以下文档中提取关键信息:\n{document}")

# 步骤 2:分析主题
themes = call_llm(f"基于以下信息,分析主要主题:\n{key_info}")

# 步骤 3:生成摘要
summary = call_llm(f"基于以下主题,生成 200 字摘要:\n{themes}")

return summary

5. 自我验证

让模型检查自己的输出:

请完成以下任务,然后验证你的答案:

任务:[任务描述]

完成后,请:
1. 检查是否满足所有要求
2. 如果发现错误,修正后重新输出
3. 确认最终答案

针对不同场景的优化

代码生成

使用 Python 3.10+ 编写一个函数,要求:

功能:计算两个日期之间的工作日数量
输入:start_date (date), end_date (date)
输出:int (工作日天数)

要求:
- 排除周末(周六、周日)
- 使用类型注解
- 添加 docstring
- 处理边界情况(开始日期晚于结束日期)

内容创作

撰写一篇产品介绍文章:

产品信息:
- 名称:智能手表 Pro
- 核心功能:健康监测、运动记录、消息通知
- 目标用户:25-40 岁的都市白领

写作要求:
- 标题吸引人
- 开头引人入胜
- 使用具体数据和场景
- 结尾有行动号召
- 字数 500-800 字

数据提取

从以下文本中提取结构化信息:

文本:
"张三,男,1990 年 3 月 15 日出生,现居北京市朝阳区,
联系电话 138-1234-5678,邮箱 zhangsan@example.com"

返回 JSON 格式:
{
"name": "",
"gender": "",
"birthday": "YYYY-MM-DD",
"address": "",
"phone": "",
"email": ""
}

避免常见问题

1. 避免歧义

# 不好
告诉我关于苹果的信息

# 好
告诉我关于苹果公司(Apple Inc.)的信息
# 或
告诉我关于苹果这种水果的营养信息

2. 避免过于开放

# 不好
写一个故事

# 好
写一个 500 字的科幻短篇故事,
主角是一个机器人,
主题是关于人类与 AI 的共存。

3. 避免否定指令

# 不好
不要写太长

# 好
请控制在 300 字以内

提示词模板库

翻译

你是专业翻译,将 {source_lang} 翻译成 {target_lang}。
保持原文风格和语气。只输出翻译结果。

原文:{text}

摘要

请为以下内容生成摘要:
- 长度:{length} 字
- 风格:{style}
- 重点:{focus}

内容:{content}

代码解释

请解释以下代码的功能:
- 目标读者:{audience}
- 解释深度:{depth}

代码:
```{language}
{code}

## 评估与迭代

### A/B 测试

```python
def test_prompts(prompts, test_cases):
results = []
for prompt in prompts:
scores = []
for test in test_cases:
output = call_llm(prompt.format(**test["input"]))
score = evaluate(output, test["expected"])
scores.append(score)
results.append({
"prompt": prompt,
"avg_score": sum(scores) / len(scores)
})
return sorted(results, key=lambda x: x["avg_score"], reverse=True)

持续优化

  1. 收集失败案例
  2. 分析失败原因
  3. 调整提示词
  4. 重新测试
  5. 循环迭代

最佳实践总结

  1. 明确目标: 清楚地说明你想要什么
  2. 提供上下文: 给模型足够的背景信息
  3. 使用示例: Few-shot 可以大幅提升效果
  4. 指定格式: 明确输出格式避免后处理
  5. 分解任务: 复杂任务分步完成
  6. 迭代优化: 根据结果持续改进