从理论到实践,掌握Zero-shot/Few-shot Prompt设计精髓。
prompt_template = """ [指令] # 明确任务目标 [上下文] # 提供背景信息 [示例] # Few-shot演示 (可选) [约束] # 输出格式限制 """
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "user", "content": "将以下文本分类为积极/消极: 这个产品彻底改变了我的工作效率"} ] ) print(response.choices[0].message.content) # 输出: 积极
multi_task_prompt = """ 执行以下任务: 1. 情感分析: "终于放假了,太开心了!" 2. 关键词提取: "人工智能正在改变医疗诊断方式" 3. 语言检测: "Hello, how are you today?" """ response = client.chat.completions.create( model="gpt-4-turbo", messages=[{"role": "user", "content": multi_task_prompt}] )
输出:
1. 情感: 积极 2. 关键词: 人工智能, 医疗诊断 3. 语言: 英语
few_shot_prompt = """ 你是一位专业电影评论家,请根据示例风格撰写评论: 示例1: 电影: 《盗梦空间》 评论: 诺兰用颠覆性的叙事结构,构建了层层嵌套的梦境世界,逻辑严谨又充满想象力。 示例2: 电影: 《阿凡达》 评论: 卡梅隆打造的潘多拉星球视觉盛宴,3D效果开创历史先河,但剧情略显老套。 现在请评论: 电影: 《奥本海默》 评论: """
def build_few_shot_prompt(examples, new_query): prompt = "请根据示例回答问题:\n\n" for i, (q, a) in enumerate(examples.items(), 1): prompt += f"示例{i}: Q: {q}\nA: {a}\n\n" prompt += f"新问题: Q: {new_query}\nA:" return prompt examples = { "水的沸点是多少?": "标准大气压下是100摄氏度", "光速是多少?": "真空中约为299,792,458米/秒" } prompt = build_few_shot_prompt(examples, "月球引力是地球的多少倍?")
cot_prompt = """ Q: 餐厅有23个苹果,用了20个做派,又买了6个,现在有多少苹果? A: 首先,初始苹果数:23个 然后,用掉20个:23 - 20 = 3个 接着,买入6个:3 + 6 = 9个 所以最终有9个苹果。 Q: 书架上有45本书,周一借出12本,周三还回5本,周五借出8本,还剩多少本? A: """
program_cot = """ Q: 计算(15*3 + 7)/4的值 A: 用Python代码逐步计算: ```python step1 = 15 * 3 # 45 step2 = step1 + 7 # 52 result = step2 / 4 # 13.0
所以结果是13.0
Q: (18^2 - 12*5)/3 的值是多少?
A:
"""
--- ### 六、工业级Prompt设计技巧 #### 1. 格式控制技术 ```python format_prompt = """ 生成3条关于人工智能的微博: 要求: 1. 每条不超过140字符 2. 包含话题标签 3. 格式: [标题]: [内容] #[话题] 示例: AI改变生活: 智能家居让生活更便捷 #人工智能应用 输出: """
constraint_prompt = """ 写一首关于春天的诗: 要求: - 不要提到"花"字 - 避免使用"温暖"一词 - 包含"风"的意象 错误示例: 春天的花朵绽放 (包含花) 温暖的风吹过 (包含温暖) 正确输出: """
def customer_service(query, history=None): system_prompt = """ 你是一名专业客服,请根据要求处理用户咨询: 1. 订单查询:提供订单号获取状态 2. 退货流程:说明退货步骤 3. 投诉处理:记录投诉内容 """ few_shot_examples = [ {"role": "user", "content": "我的订单没收到"}, {"role": "assistant", "content": "请提供订单号,我将为您查询"} ] messages = [ {"role": "system", "content": system_prompt}, *few_shot_examples, {"role": "user", "content": query} ] response = client.chat.completions.create( model="gpt-4-turbo", messages=messages, temperature=0.3 # 降低随机性 ) return response.choices[0].message.content # 使用示例 print(customer_service("订单12345状态如何?")) # 输出: 订单12345已发货,预计明天送达
def evaluate_prompt(prompt, test_cases): scores = [] for question, expected in test_cases: response = get_response(prompt + question) scores.append(1 if response == expected else 0) return sum(scores) / len(scores) # 测试用例 test_cases = [ ("2+2=?", "4"), ("10-5=?", "5"), ("3*4=?", "12") ] prompt_v1 = "回答数学问题: " prompt_v2 = "逐步计算并给出最终答案: " print(f"Prompt v1 准确率: {evaluate_prompt(prompt_v1, test_cases):.0%}") print(f"Prompt v2 准确率: {evaluate_prompt(prompt_v2, test_cases):.0%}")
prompt_registry = { "v1": "直接回答问题", "v2": "分步骤推理后回答问题", "v3": "用Python验证后给出答案" } def get_optimized_prompt(task_type): # 根据任务类型选择最佳prompt prompt_strategy = { "math": "v3", "translation": "v1", "reasoning": "v2" } return prompt_registry[prompt_strategy[task_type]]
from autoprompt import AutoPromptOptimizer optimizer = AutoPromptOptimizer( task="文本分类", metric="准确率" ) optimized_prompt = optimizer.search(initial_prompt)
multimodal_prompt = { "text": "描述图片内容", "image": "https://example.com/image.jpg" }
self_correct_prompt = """ 请解决问题并自我验证: 问题: 36的平方根是多少? 步骤: 1. 计算: √36 = 6 2. 验证: 6*6=36 → 正确 最终答案: 6 """
实战总结:
Prompt设计黄金法则:
清晰指令 > 优质示例 > 格式约束 > 背景信息
技术选型指南:
性能基准:
Zero-shot准确率: 60-75% Few-shot准确率: 80-90% CoT准确率: 92-98%
更多AI大模型应用开发学习视频内容和资料,尽在聚客AI学院。