共计 1599 个字符,预计需要花费 4 分钟才能阅读完成。
开篇:新手常踩的提示工程大坑
刚接触 AI 提示工程时,开发者常遇到这些问题:

- 模糊指令导致输出偏离:比如简单写 ” 写一篇关于健康的文章 ”,结果 AI 可能给你一篇医学论文,而你想要的是养生科普
- 缺乏上下文连贯性:多轮对话中,AI 经常 ” 忘记 ” 之前的对话内容
- 过度依赖默认参数:不清楚 temperature 等参数的作用,导致结果不可控
这些问题本质都是因为没掌握提示设计的核心原则。接下来我会从实战角度,带你系统解决这些痛点。
核心技术方案对比
零样本提示 vs 少样本提示
- 零样本提示(Zero-shot)
- 适用场景:简单明确的任务
- 示例:” 将以下英文翻译成中文: ‘Hello world'”
- 优点:无需示例,直接使用
-
缺点:复杂任务效果不稳定
-
少样本提示(Few-shot)
- 适用场景:需要特定格式或风格的任务
- 示例:给出 3 个商品描述样例,让 AI 模仿风格写第 4 个
- 优点:输出更可控
- 缺点:消耗更多 token
进阶技术详解
- 角色设定(Role Prompting)
- 关键点:明确指定 AI 的角色
-
示例:” 你是一位经验丰富的 Python 工程师,请用专业术语解释以下代码 …”
-
思维链(Chain-of-Thought)
- 实现方式:让 AI 展示推理过程
- 示例:” 请分步骤解答这个数学题,先列出已知条件,再展示计算过程 …”
Python 实战代码
基础 API 调用
import openai
from getpass import getpass # 安全获取 API 密钥
# 安全处理 API 密钥
api_key = getpass('请输入 OpenAI API 密钥:')
openai.api_key = api_key
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "你是一位技术文档写作助手"},
{"role": "user", "content": "用简洁语言解释什么是 REST API"}
],
temperature=0.7 # 控制创造性,0- 1 之间
)
print(response['choices'][0]['message']['content'])
提示模板封装
def generate_prompt(template, **kwargs):
"""带变量插值的提示模板"""
return template.format(**kwargs)
blog_template = """ 请以 {style} 风格写一篇关于 {topic} 的博客文章,目标读者是 {audience},字数约{word_count} 字。"""
prompt = generate_prompt(
blog_template,
style="轻松幽默",
topic="人工智能",
audience="大学生",
word_count=800
)
生产环境注意事项
安全防护
- 提示注入防御
- 过滤用户输入中的特殊字符
- 设置最大长度限制
-
使用内容审核 API
-
API 密钥保护
- 永远不要硬编码在代码中
- 使用环境变量或密钥管理服务
性能优化
- 提示预编译
- 将固定部分预先发送并缓存
-
只动态替换变量部分
-
响应流式处理
- 对长文本使用流式 API
- 减少用户等待时间
避坑指南
典型错误案例
- 错误示例:” 告诉我关于电脑的信息 ”
- 问题:范围太广
-
修正:” 用通俗语言解释 CPU 的工作原理,面向小学生 ”
-
错误示例:” 写首诗 ”
- 问题:缺乏具体约束
-
修正:” 写一首关于春天的五言绝句,押韵格式为 AABA”
-
错误示例:直接使用用户输入拼接提示
- 问题:可能被注入恶意指令
- 修正:严格校验和转义用户输入
质量评估指标
- 相关性得分:0- 1 分,评估输出与意图的匹配度
- 流畅度得分:0- 1 分,评估语言自然程度
- 有用性得分:0- 1 分,评估信息价值
开放性问题
在实际项目中,我们经常需要在提示详细程度和计算成本之间做权衡:
– 更详细的提示通常能获得更好的输出
– 但会增加 token 消耗和响应延迟
你是怎么解决这个矛盾的?欢迎分享你的实践经验。
正文完
