共计 1575 个字符,预计需要花费 4 分钟才能阅读完成。
背景介绍
AI 对话系统如 ChatGPT 的强大能力很大程度上依赖于我们如何与它沟通——这就是提示工程的作用。好的提示词能帮助模型更准确地理解需求,生成更符合预期的回复。对于开发者来说,掌握提示工程技术意味着能更高效地利用 AI 能力,构建更智能的应用。

核心概念
- 提示词结构 :通常包含指令(Instruction)、上下文(Context) 和示例 (Examples) 三部分。比如 ” 请用简体中文回答 ” 是指令,” 假设你是 Python 专家 ” 是上下文。
- 温度参数(Temperature):控制输出的随机性,范围 0 -2。0 表示最确定性输出,2 表示最大随机性。
- 最大令牌数(Max tokens):限制生成内容的长度,1 个 token 约等于 0.75 个英文单词。
设计原则
- 明确具体:避免模糊指令。比如用 ” 列出 5 个 Python 数据清洗技巧 ” 替代 ” 告诉我关于 Python 的一些事 ”。
- 分步引导:对于复杂任务,拆解为多个步骤。例如先让 AI 列出大纲,再填充内容。
- 提供示例:给出 1 - 2 个输入输出示例能显著提升效果。
- 角色设定:明确 AI 的角色,如 ” 你是一位经验丰富的 Linux 系统管理员 ”。
- 迭代优化:基于初步结果逐步调整提示词,而不是期望一次完美。
代码示例
import openai
# 基础提示词模板
basic_prompt = """ 你是一位专业的 Python 程序员。请用简洁的中文解释以下代码的功能:```python
{code_snippet}
```"""
# 参数调优示例
def get_chatgpt_response(prompt, temp=0.7, max_tokens=300):
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=temp,
max_tokens=max_tokens
)
return response.choices[0].message.content
except Exception as e:
print(f"API 调用出错: {e}")
return None
# 测试不同参数效果
code = "df.dropna(inplace=True)"
print("温度 0.2:", get_chatgpt_response(basic_prompt.format(code_snippet=code), temp=0.2))
print("温度 1.0:", get_chatgpt_response(basic_prompt.format(code_snippet=code), temp=1.0))
避坑指南
- 提示词过长:超过 2000 字符可能影响模型理解。解决方案:精简非必要内容,拆分复杂问题。
- 忽略错误处理:API 可能因网络等原因失败。解决方案:如示例所示添加 try-catch 块。
- 固定参数:总用默认 temperature= 1 可能不适合所有场景。解决方案:根据需求调整,创造性内容用更高值(1-1.5),事实性回答用更低值(0-0.5)。
进阶技巧
少量示例 (few-shot) 提示:在提示词中提供 2 - 3 个输入输出对。例如:
示例 1:
输入: 将 "Hello" 翻译成法语
输出: "Bonjour"
示例 2:
输入: "谢谢" 翻译成日语
输出: "ありがとう"
现在请将 "早上好" 翻译成德语:
这种方法特别适合格式固定的任务。
实践建议
尝试构建一个简单的技术文档助手:
1. 设计提示词让 AI 帮助整理和简化技术文档
2. 实现一个 Flask web 界面接收用户输入
3. 测试不同 temperature 对输出专业性的影响
4. 添加少量示例提示提升特定术语的处理能力
通过这个项目,你可以实际体验提示词设计、参数调优和错误处理的完整流程。建议先从简单功能开始,逐步增加复杂度。
正文完
发表至: 未分类
近两天内
