共计 2082 个字符,预计需要花费 6 分钟才能阅读完成。
课程背景与 Prompt 工程价值
随着大语言模型(LLM)的普及,如何高效地与模型交互成为开发者面临的核心挑战。吴恩达教授的《ChatGPT Prompt Engineering for Developers》课程系统性地梳理了 Prompt 工程的方法论,其官方中文版的推出降低了中文开发者的学习门槛。

Prompt 工程本质上是通过精心设计的输入文本来引导模型输出期望结果的技术。良好的 Prompt 设计可以:
- 提升模型输出的准确性和相关性
- 减少无效交互和计算资源浪费
- 降低模型误解用户意图的概率
- 扩展模型的能力边界
核心知识点系统梳理
1. 指令设计(Instruction Design)
有效的指令应具备:
- 明确性:使用清晰的动作动词(如 ” 列出 ”、” 总结 ”、” 生成 ”)
- 结构化:分步骤描述复杂任务
- 约束条件:明确输出格式、长度限制等
示例对比:
差:"告诉我关于 AI 的事情"
优:"用三点概括人工智能在医疗领域的应用现状,每点不超过 20 字"
2. 上下文控制(Context Control)
关键技术包括:
- 角色设定:通过 ” 你是一名资深 Python 开发者 ” 等语句限定回答视角
- 对话历史管理:在多轮对话中维护关键上下文
- 负面示例:明确说明 ” 不要 ” 包含的内容
3. Few-shot Learning
通过提供输入 - 输出示例引导模型行为:
- 示例数量:通常 3 - 5 个效果最佳
- 示例质量:应覆盖主要场景和边缘情况
- 示例顺序:将最重要的示例放在前面
典型应用场景代码示例
以下使用 OpenAI API 实现知识问答系统:
import openai
# 初始化客户端(实际使用时应将 API_KEY 放入环境变量)client = openai.OpenAI(api_key="your_api_key")
def expert_qa(question, domain="人工智能"):
"""
专业领域问答函数
参数:
question: 用户问题
domain: 专业领域(默认 AI)返回:
model_response: 模型生成的回答
"""
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": f"你是一位 {domain} 领域的资深专家"},
{"role": "user", "content": "请用通俗语言回答,避免专业术语"},
{"role": "assistant", "content": "明白,我会用简单易懂的方式解释"},
{"role": "user", "content": question}
],
temperature=0.3 # 降低随机性
)
return response.choices[0].message.content
# 使用示例
print(expert_qa("什么是注意力机制?"))
生产环境避坑指南
1. Token 限制处理
- 估算 token 消耗:英文字符≈1token,中文字符≈2token
- 长文本处理策略:
- 摘要提取关键信息
- 分块处理 + 结果聚合
- 使用
max_tokens参数控制输出长度
2. 响应延迟优化
- 设置合理超时(通常 5 -10 秒)
- 实现异步调用
- 对时效性不强的任务使用队列处理
3. 敏感内容过滤
- 使用 Moderation API 预过滤
- 在 Prompt 中明确限制(如 ” 拒绝回答涉及隐私的问题 ”)
- 实现后处理过滤层
性能优化建议
1. 缓存策略
from functools import lru_cache
@lru_cache(maxsize=1000)
def cached_completion(prompt):
"""缓存频繁使用的 Prompt 结果"""
return client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
2. 批处理技巧
# 同时处理多个相似问题
def batch_qa(questions):
"""批量问答处理"""
responses = []
for q in questions:
responses.append(expert_qa(q))
return responses
创新应用案例:自动化测试用例生成
结合课程中的 Few-shot 技术,实现测试用例生成器:
def generate_test_cases(requirement):
"""根据需求生成测试用例"""
prompt = """
请为以下需求生成 3 个测试用例,格式为:1. 测试目的
2. 测试步骤
3. 预期结果
示例需求:用户登录功能
示例输出:1. 验证正确密码登录成功
- 步骤:输入正确用户名和密码
- 预期:跳转到主页
当前需求:{requirement}
""".format(requirement=requirement)
return expert_qa(prompt, domain="软件测试")
启发式思考题
- 如何设计 Prompt 来评估模型输出的事实准确性?
- 在多轮对话场景中,如何平衡上下文保持和 token 消耗?
- 对于非结构化输出(如创意写作),Prompt 设计原则与结构化任务有何不同?
正文完
