一、Prompt设计三原则与代码实现
1. 清晰性:明确任务指令
核心代码:通过结构化描述限定输出格式
Python
import openai
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{
"role": "user",
"content": """
生成3条手机产品广告文案,要求:
1. 突出续航能力
2. 包含数字参数
3. 使用感叹号结尾
格式示例:[1. 文案内容]
"""
}]
)
print(response.choices[0].message.content)
2. 上下文控制:历史对话管理
代码实现:通过消息队列维护上下文
Python
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元左右"))
3. 角色设定:构建专业形象
代码模板:
Python
system_prompt = """
你是一名资深营养师,回答需满足:
1. 基于《中国居民膳食指南》
2. 给出具体热量估算
3. 语言亲切自然
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": "轻食沙拉能减肥吗?"}
]
)
二、Prompt优化三大技巧实战
1. 迭代测试:优化商品描述生成
代码演进过程:
Python
# 初版Prompt
prompt_v1 = "生成手机广告"
# 改进版:添加结构化要求
prompt_v2 = """
生成手机广告,包含:
- 核心卖点(不超过3个)
- 使用场景描述
- 促销信息
输出为JSON格式:
{"slogan": "", "features": [], "promotion": ""}
"""
# 最终版:增加风格限制
prompt_v3 = prompt_v2 + "\n语言风格:年轻化网络用语,如'YYDS'、'种草'等"
2. Few-shot Learning:精准格式控制
代码示例:
Python
examples = """
用户:翻译"Hello world"成法语
助手:{"translation": "Bonjour le monde"}
用户:翻译"Good morning"成日语
助手:{"translation": "おはようございます"}
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{
"role": "user",
"content": examples + "\n用户:翻译'谢谢'成西班牙语"
}]
)
3. 思维链(CoT):复杂问题拆解
代码实现:
Python
problem = """
小明有5个苹果,吃了2个,妈妈又给他3个,
然后他分给朋友一半,还剩多少苹果?
分步骤计算并用中文解释。
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{
"role": "user",
"content": problem
}]
)
三、综合实践:智能客服系统开发
1. 系统架构设计
2. 完整实现代码
Python
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("手机充不进电怎么办?"))
3. 运行效果示例
用户输入:
"新买的X50 Pro拍照模糊"
输出结果:
Bash
1. 问题分类:功能咨询
2. 建议步骤:
a) 清洁镜头保护膜
b) 检查相机设置 > 专业模式
c) 尝试重启设备
3. 如未解决,请联系400-123-4567
关键要点总结:
-
结构化Prompt使输出更可控
-
上下文窗口管理需平衡记忆与效率
-
Few-shot示例数量建议3-5个为佳
-
温度参数(temperature)设置:
-
高创造性:0.7-1.0
-
严谨回答:0.2-0.5
-
通过本教程的代码实践,可快速掌握Prompt工程的核心方法,建议结合具体业务场景调整参数设计。