核心代码:通过结构化描述限定输出格式
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工程的核心方法,建议结合具体业务场景调整参数设计。