核心代码:通过结构化描述限定输出格式
import openai response = openai.ChatCompletion.create( model="gpt-4", messages=[{ "role": "user", "content": """ 生成3条手机产品广告文案,要求: 1. 突出续航能力 2. 包含数字参数 3. 使用感叹号结尾 格式示例:[1. 文案内容] """ }] ) print(response.choices[0].message.content)
代码实现:通过消息队列维护上下文
chat_history = [] def chat(query): chat_history.append({"role": "user", "content": query}) response = openai.ChatCompletion.create( model="gpt-4", messages=chat_history[-6:] # 保留最近3轮对话 ) chat_history.append(response.choices[0].message) return response.choices[0].message.content print(chat("推荐北京适合家庭聚餐的餐厅")) print(chat("人均预算200元左右"))
代码模板:
system_prompt = """ 你是一名资深营养师,回答需满足: 1. 基于《中国居民膳食指南》 2. 给出具体热量估算 3. 语言亲切自然 """ response = openai.ChatCompletion.create( model="gpt-4", messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": "轻食沙拉能减肥吗?"} ] )
代码演进过程:
# 初版Prompt prompt_v1 = "生成手机广告" # 改进版:添加结构化要求 prompt_v2 = """ 生成手机广告,包含: - 核心卖点(不超过3个) - 使用场景描述 - 促销信息 输出为JSON格式: {"slogan": "", "features": [], "promotion": ""} """ # 最终版:增加风格限制 prompt_v3 = prompt_v2 + "\n语言风格:年轻化网络用语,如'YYDS'、'种草'等"
代码示例:
examples = """ 用户:翻译"Hello world"成法语 助手:{"translation": "Bonjour le monde"} 用户:翻译"Good morning"成日语 助手:{"translation": "おはようございます"} """ response = openai.ChatCompletion.create( model="gpt-4", messages=[{ "role": "user", "content": examples + "\n用户:翻译'谢谢'成西班牙语" }] )
代码实现:
problem = """ 小明有5个苹果,吃了2个,妈妈又给他3个, 然后他分给朋友一半,还剩多少苹果? 分步骤计算并用中文解释。 """ response = openai.ChatCompletion.create( model="gpt-4", messages=[{ "role": "user", "content": problem }] )
import openai class CustomerServiceBot: def __init__(self): self.context = [{ "role": "system", "content": """ 你是手机品牌客服,需: 1. 识别用户问题类型(售后/功能咨询/投诉) 2. 分步骤解答 3. 结尾提供联系方式 """ }] def respond(self, query): self.context.append({"role": "user", "content": query}) response = openai.ChatCompletion.create( model="gpt-4", messages=self.context[-8:], temperature=0.3 ) reply = response.choices[0].message.content self.context.append({"role": "assistant", "content": reply}) return reply bot = CustomerServiceBot() print(bot.respond("手机充不进电怎么办?"))
用户输入:
"新买的X50 Pro拍照模糊"
输出结果:
1. 问题分类:功能咨询 2. 建议步骤: a) 清洁镜头保护膜 b) 检查相机设置 > 专业模式 c) 尝试重启设备 3. 如未解决,请联系400-123-4567
关键要点总结:
结构化Prompt使输出更可控
上下文窗口管理需平衡记忆与效率
Few-shot示例数量建议3-5个为佳
温度参数(temperature)设置:
高创造性:0.7-1.0
严谨回答:0.2-0.5
通过本教程的代码实践,可快速掌握Prompt工程的核心方法,建议结合具体业务场景调整参数设计。