个体工商户网上年检,成都爱站网seo站长查询工具,一学一做演讲视频网站,wordpress qux本节课你将学到 理解提示词工程的核心原理 掌握5种实用的Prompt设计模式 学会优化提示词的评估方法 实现一个智能问答系统优化案例
开始之前
环境要求
Python 3.8安装包#xff1a;pip install openai tiktokenOpenAI API密钥#xff08;免费注册#xff1a;https://plat…
本节课你将学到 理解提示词工程的核心原理 掌握5种实用的Prompt设计模式 学会优化提示词的评估方法 实现一个智能问答系统优化案例
开始之前
环境要求
Python 3.8安装包pip install openai tiktokenOpenAI API密钥免费注册https://platform.openai.com
前置知识
GPT模型基础第36讲内容基本的API调用概念
核心概念
什么是提示词工程
提示词工程就像与AI沟通的魔法语言
传统编程写精确的代码指令Prompt工程用自然语言引导AI产生预期输出
Prompt设计的三层结构
1. **角色设定**30%效果你是一位资深机器学习工程师2. **任务描述**50%效果用通俗易懂的方式解释Transformer架构3. **输出规范**20%效果分三点说明每点不超过2句话使用类比手法五大核心技巧附案例对比
技巧1角色设定
# ❌ 普通提示
解释机器学习# ✅ 角色设定提示
你是一位有10年经验的AI教授正在给大一新生上课。
用最通俗易懂的方式解释机器学习要求
1. 使用生活类比
2. 不超过3句话
3. 最后提一个思考问题技巧2分步思考
# ❌ 直接提问
巴黎是浪漫之都吗# ✅ 分步推理
请按以下步骤分析
1. 定义浪漫之都的标准
2. 列举巴黎符合标准的证据
3. 给出最终结论技巧3示例示范
# ❌ 单纯指令
生成产品描述# ✅ 示例引导
按以下格式生成耳机产品描述
示例1[产品] 采用[技术]带来[ benefit ]
示例2...
现在为无线降噪耳机生成3个版本技巧4负面约束
# ❌ 开放生成
写一篇科技文章# ✅ 负面约束
写一篇关于AI的科普文章要求
- 不要使用专业术语
- 不超过300字
- 避免讨论伦理问题技巧5格式控制
# ❌ 自由输出
总结这篇文章# ✅ 格式限定
用以下结构总结
【核心观点】...
【关键数据】3条
【行动建议】...代码实战
1. 基础API调用
import openai
import tiktoken# 配置API密钥
openai.api_key 你的API密钥def count_tokens(text):计算文本的token数量encoder tiktoken.get_encoding(cl100k_base)return len(encoder.encode(text))def ask_gpt(prompt, modelgpt-3.5-turbo):发送Prompt到OpenAI APIresponse openai.ChatCompletion.create(modelmodel,messages[{role: user, content: prompt}],temperature0.7,max_tokens500)return response.choices[0].message.content# 测试调用
prompt 用一句话解释量子计算
print(ask_gpt(prompt))2. Prompt优化评估器
def evaluate_prompt(prompt, test_cases):评估Prompt效果的量化工具返回平均得分(1-5分)和改进建议total_score 0feedback []for case in test_cases:response ask_gpt(prompt \n case[question])score min(5, case[expected].lower().count(response.lower()))total_score scorefeedback.append(fQ: {case[question]}\nA: {response}\nScore: {score}/5)avg_score total_score / len(test_cases)analysis f评估结果
平均分{avg_score:.2f}/5
建议改进方向
1. {增加角色设定 if avg_score 3 else ✓}
2. {添加示例 if 示例 not in prompt else ✓}
3. {明确输出格式 if 格式 not in prompt else ✓}return avg_score, analysis, \n\n.join(feedback)# 测试案例
test_cases [{question: 解释神经网络, expected: 神经网络就像人脑神经元网络...},{question: Python的lambda是什么,expected: lambda是匿名函数...}
]# 评估示例Prompt
sample_prompt 请回答以下技术问题
score, analysis, details evaluate_prompt(sample_prompt, test_cases)
print(f评估报告\n{analysis}\n\n详细反馈\n{details})3. 智能问答系统优化
class QASystem:def __init__(self, knowledge_base):self.knowledge knowledge_baseself.prompt_template 基于以下知识库回答问题
{knowledge}
---
问题{question}
要求
1. 如果答案在知识库中直接引用
2. 否则标注推测答案
3. 用中文回答
4. 不超过100字def answer(self, question):prompt self.prompt_template.format(knowledgeself.knowledge,questionquestion)return ask_gpt(prompt)# 初始化知识库
ai_knowledge
1. 机器学习分为监督学习、无监督学习、强化学习
2. GPT-3有1750亿参数
3. 过拟合是指模型在训练集表现太好但泛化能力差
qa QASystem(ai_knowledge)# 测试问答
questions [什么是过拟合,GPT-4有多少参数 # 知识库中没有的问题
]for q in questions:print(fQ: {q}\nA: {qa.answer(q)}\n)完整项目
项目结构
lesson_37_prompt/
├── prompt_engineer.py # 主程序
├── evaluator.py # 评估工具
├── qa_system.py # 问答系统
├── requirements.txt
└── README.mdrequirements.txt
openai0.27.8
tiktoken0.4.0
python-dotenv1.0.0 # 用于管理API密钥prompt_engineer.py 完整代码
import openai
import tiktoken
from dotenv import load_dotenv
import osload_dotenv()
openai.api_key os.getenv(OPENAI_API_KEY)class PromptOptimizer:def __init__(self):self.encoder tiktoken.get_encoding(cl100k_base)def analyze_prompt(self, prompt):深度分析Prompt问题analysis_prompt f请分析以下Prompt的问题
{prompt}
---
按以下格式反馈
1. 清晰度评分(1-5分)
2. 主要问题
3. 改进建议return openai.ChatCompletion.create(modelgpt-4,messages[{role: user, content: analysis_prompt}],temperature0).choices[0].message.contentdef optimize_prompt(self, prompt, iterations3):迭代优化Promptcurrent_prompt promptfor i in range(iterations):print(f\n优化迭代 {i1}/{iterations})analysis self.analyze_prompt(current_prompt)print(f分析结果\n{analysis})optimization_prompt f根据以下分析优化Prompt
分析
{analysis}
原Prompt
{current_prompt}
---
请输出
1. 优化后的Prompt
2. 优化说明result openai.ChatCompletion.create(modelgpt-4,messages[{role: user, content: optimization_prompt}],temperature0.7).choices[0].message.contentcurrent_prompt result.split(\n)[1] # 提取优化后的Promptprint(f优化版本\n{current_prompt})return current_promptif __name__ __main__:optimizer PromptOptimizer()sample_prompt 帮我写一篇关于AI的文章print(原始Prompt, sample_prompt)optimized optimizer.optimize_prompt(sample_prompt)print(\n最终优化结果)print(optimized)运行效果
优化过程示例
原始Prompt 帮我写一篇关于AI的文章优化迭代 1/3
分析结果
1. 清晰度评分(1-5分)2分
2. 主要问题主题过于宽泛缺乏具体方向和要求
3. 改进建议明确文章类型、目标读者、长度和核心要点优化版本
请写一篇面向科技爱好者的800字科普文章介绍AI在医疗领域的三大应用要求
1. 每部分配示意图描述
2. 包含实际案例
3. 使用通俗语言问答系统输出
Q: 什么是过拟合
A: 过拟合是指模型在训练集表现太好但泛化能力差的现象。Q: GPT-4有多少参数
A: (推测答案)GPT-4的具体参数规模未公开但预计比GPT-3的1750亿更多。常见问题
Q1: 如何减少API调用费用
使用max_tokens限制响应长度对相似问题做本地缓存先用小模型(gpt-3.5-turbo)测试Prompt
Q2: 为什么有时响应不符合要求
检查temperature值是否过高建议0.3-0.7确认Prompt中是否有明确的约束条件尝试用更高级模型(gpt-4)
Q3: 如何处理超长上下文
用tiktoken计算token数关键信息放在Prompt开头对长文档采用分块处理摘要策略
课后练习 为你的专业领域设计3个角色Prompt模板 用评估器测试解释区块链的5种不同Prompt 扩展问答系统添加追问功能
扩展阅读
OpenAI官方Prompt指南Prompt Engineering课程AI提示词大全