01-ChatGPT提示工程入门
ChatGPT提示工程入门 - 释放大语言模型的真正潜力
引言
在人工智能快速发展的今天,大语言模型(LLM)如ChatGPT已经成为我们日常工作和生活中不可或缺的助手。但你是否想过,为什么有些人能让ChatGPT生成完美的回答,而有些人却只能得到平庸的结果?答案就在于提示工程(Prompt Engineering)。
本文是吴恩达《ChatGPT提示工程师》课程系列的第一篇,将带你深入了解提示工程的基础概念,为后续的深入学习打下坚实基础。
什么是提示工程?
提示工程是指设计和优化输入文本(提示词)的过程,目的是引导大语言模型生成高质量、符合预期的输出。这是一门结合了艺术和科学的技能。
为什么提示工程如此重要?
- 提升输出质量: 好的提示词能让模型理解你的真实意图
- 节省时间成本: 减少反复试错的次数
- 解锁高级功能: 发现模型的隐藏能力
- 构建应用程序: 为基于LLM的产品奠定基础
两种大语言模型类型
理解LLM的分类是掌握提示工程的第一步:
1. Base LLM (基础LLM)
工作原理: 基于训练数据预测下一个词
示例:
-
输入: “从前有一个独角兽”
-
输出: “生活在一个魔法森林里…”
-
输入: “法国的首都是什么?”
-
输出: “法国最大的城市是什么? 法国的人口是多少?” (继续生成问题列表)
特点:
- 纯粹的文本续写
- 输出不可控
- 不一定回答问题本身
2. Instruction Tuned LLM (指令调优LLM)
工作原理: 在Base LLM基础上进行微调,学会遵循指令
训练流程:
Base LLM
→ 指令微调(使用输入-输出对)
→ RLHF(人类反馈强化学习)
→ Instruction Tuned LLM
示例:
- 输入: “法国的首都是什么?”
- 输出: “法国的首都是巴黎。”
特点:
- 直接回答问题
- 遵循用户意图
- 更安全、更有用
- ChatGPT就是这种类型
环境设置 - 开始实践
安装依赖
pip install openai python-dotenv
配置API密钥
创建.env文件:
OPENAI_API_KEY=your_api_key_here
基础代码框架
import openai
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
openai.api_key = os.getenv('OPENAI_API_KEY')
def get_completion(prompt, model="gpt-3.5-turbo"):
"""
辅助函数:发送提示词并获取模型响应
参数:
prompt: 用户的提示词
model: 使用的模型名称
返回:
模型生成的文本
"""
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0 # 控制输出的随机性,0表示确定性输出
)
return response.choices[0].message["content"]
# 测试
prompt = "什么是机器学习?"
response = get_completion(prompt)
print(response)
理解temperature参数
- temperature=0: 输出最确定、一致
- temperature=0.7: 平衡创造力和一致性
- temperature=1.0: 最具创造力和随机性
建议:
- 需要一致性输出时使用0(如客服、分类)
- 需要创意时使用0.7-1.0(如写作、头脑风暴)
提示工程的应用场景
1. 文本摘要
text = """
人工智能是计算机科学的一个分支,致力于创建能够执行通常需要人类智能的任务的系统。
这包括学习、推理、问题解决、感知和语言理解等能力...
"""
prompt = f"请用一句话总结以下文本:\n\n{text}"
print(get_completion(prompt))
2. 文本推理
review = "这款笔记本电脑性能出色,但价格偏高。"
prompt = f"以下产品评论的情感是积极还是消极?\n\n评论: {review}"
print(get_completion(prompt))
3. 文本转换
prompt = "将以下句子翻译成法语: 'The weather is beautiful today.'"
print(get_completion(prompt))
4. 文本扩展
keywords = "节能, 环保, 智能家居"
prompt = f"根据以下关键词编写一段产品描述:\n{keywords}"
print(get_completion(prompt))
最佳实践原则
1. 从简单开始
不要一开始就写复杂的提示词,先用最简单的版本测试。
2. 迭代优化
尝试 → 分析结果 → 调整提示词 → 再次尝试
3. 明确角色和任务
prompt = """
你是一位专业的技术文档编写者。
请将以下代码片段转换为详细的说明文档。
代码:
def factorial(n):
return 1 if n <= 1 else n * factorial(n-1)
"""
4. 提供上下文
好的提示词应该包含:
- 背景信息
- 具体任务
- 期望的输出格式
- 约束条件
常见误区
❌ 误区1: 提示词太模糊
# 不好
prompt = "写点东西关于AI"
# 好
prompt = "写一段200字的介绍,解释AI如何改变医疗行业,面向非技术读者"
❌ 误区2: 期望一次成功
提示工程是迭代过程,需要不断优化。
❌ 误区3: 忽略输出格式
如果需要结构化数据,一定要在提示词中明确说明。
实战练习
练习1: 创建一个代码解释器
code = """
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
"""
prompt = f"""
请详细解释以下Python代码的工作原理,
包括:
1. 算法名称
2. 每一步的作用
3. 时间复杂度
代码:
{code}
"""
print(get_completion(prompt))
练习2: 创建内容过滤器
content = "这是一条测试消息"
prompt = f"""
分析以下文本是否包含不当内容(暴力、仇恨言论、成人内容)。
返回JSON格式:
{{"is_appropriate": true/false, "reason": "原因"}}
文本: {content}
"""
print(get_completion(prompt))
课程资源
推荐阅读
- OpenAI官方文档: https://platform.openai.com/docs
- Prompt Engineering Guide: https://www.promptingguide.ai
下一步学习
在下一篇文章中,我们将深入探讨:
- 提示词编写的两大核心原则
- 如何让模型更准确理解你的意图
- 避免常见的提示词陷阱
总结
本文介绍了提示工程的基础知识:
- ✅ 理解Base LLM vs Instruction Tuned LLM的区别
- ✅ 掌握基础的API调用方法
- ✅ 了解提示工程的主要应用场景
- ✅ 学习最佳实践原则
记住:好的提示工程师不是天生的,而是通过不断实践和迭代培养出来的。 现在就开始你的第一个提示词实验吧!
作者注: 本文基于吴恩达《ChatGPT Prompt Engineering for Developers》课程整理,课程视频地址: https://www.youtube.com/playlist?list=PL1bD7CLmGebf9FewSIJGZhFDK6FyWBH7P
更多推荐



所有评论(0)