领域专家级提示词工程
目录
高级提示词技术
1. Chain-of-Thought (思维链)
原理: 引导AI展示推理过程,提高复杂问题的准确性
基础用法:
普通提示词:
"73 × 89 = ?"
思维链提示词:
"计算 73 × 89,请展示详细的计算步骤。"
结果:
步骤1:73 × 89 = 73 × (90 - 1)
步骤2:= 73 × 90 - 73 × 1
步骤3:= 6570 - 73
步骤4:= 6497
高级应用:零样本思维链(Zero-shot CoT)
提示词模板:
"{问题}
让我们一步步思考:"
示例:
问题:一个水池有两个水龙头,A龙头每分钟注水10升,B龙头每分钟排水3升。
如果同时打开两个龙头,多久能注满容量100升的水池?
让我们一步步思考:
AI输出:
步骤1:计算净注水速度
A注水10升/分钟 - B排水3升/分钟 = 7升/分钟
步骤2:计算所需时间
100升 ÷ 7升/分钟 = 14.29分钟
答案:约14.29分钟,即14分钟17秒
多样本思维链(Few-shot CoT)
提示词:
我会给你一些例子展示如何分析问题,然后请你用相同的方法分析新问题。
例子1:
问题:小明有5个苹果,吃了2个,又买了3个,现在有几个?
分析:
- 初始:5个
- 吃了:5 - 2 = 3个
- 买了:3 + 3 = 6个
答案:6个
例子2:
问题:教室里有12个学生,来了8个,走了5个,现在有几个?
分析:
- 初始:12个
- 来了:12 + 8 = 20个
- 走了:20 - 5 = 15个
答案:15个
现在请分析:
停车场有30辆车,开走了18辆,又开来了25辆,现在有几辆?
2. Self-Consistency (自我一致性)
原理: 生成多个推理路径,选择最一致的答案
实现方法:
def self_consistency_prompting(question, num_samples=5):
"""
自我一致性提示
Args:
question: 问题
num_samples: 生成样本数
Returns:
最一致的答案
"""
from collections import Counter
import openai
client = openai.OpenAI()
prompt = f"""
{question}
请展示你的推理过程,最后给出答案。
"""
answers = []
for i in range(num_samples):
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.7 # 增加温度以产生多样性
)
# 提取答案(假设答案在最后一行)
answer = response.choices[0].message.content.strip().split('\n')[-1]
answers.append(answer)
# 投票选择最常见的答案
answer_counts = Counter(answers)
most_common = answer_counts.most_common(1)[0]
return {
"final_answer": most_common[0],
"confidence": most_common[1] / num_samples,
"all_answers": answers
}
# 使用示例
question = """
一家餐厅午餐时间有客人50人,晚餐时间是午餐的1.5倍,但其中20%是午餐客人。
请问晚餐时间有多少新客人?
"""
result = self_consistency_prompting(question, num_samples=5)
print(f"答案:{result['final_answer']}")
print(f"置信度:{result['confidence'] * 100}%")
3. Tree of Thoughts (思维树)
原理: 探索多个推理分支,选择最优路径
实现示例:
任务:用4个数字(4, 6, 8, 10)通过加减乘除得到24
提示词:
让我们用思维树的方法解决这个问题:
步骤1:列出可能的第一步操作
分支A:4 + 6 = 10
分支B:8 - 4 = 4
分支C:10 - 6 = 4
分支D:6 × 4 = 24 ✓(找到答案!)
让我们继续探索分支A:
现在有:10, 8, 10
子分支A1:10 + 8 = 18
子分支A2:10 × 8 = 80
子分支A3:10 - 8 = 2
继续A3:2, 10
10 / 2 = 5 (剩5,无法得到24)
2 × 10 = 20 (剩20,还需4)
20 + 4 = 24 ✓(又一个解!)
答案:
方法1:6 × 4 = 24
方法2:(4 + 6 - 8) × 10 + (some operations) = 24
代码实现框架:
class TreeOfThoughts:
"""思维树实现"""
def __init__(self, openai_key):
self.client = openai.OpenAI(api_key=openai_key)
def generate_thoughts(self, current_state, problem):
"""生成可能的思考分支"""
prompt = f"""
当前状态:{current_state}
目标:{problem}
请生成3-5个可能的下一步操作,每个操作包括:
1. 操作描述
2. 预期结果
3. 评估(1-10分,越高越可能成功)
返回JSON数组格式。
"""
response = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.8
)
import json
thoughts = json.loads(response.choices[0].message.content)
return thoughts
def evaluate_state(self, state, goal):
"""评估当前状态"""
prompt = f"""
当前状态:{state}
目标:{goal}
评估这个状态距离目标有多近(0-100分):
- 0分:完全偏离
- 50分:有一定进展
- 100分:达到目标
返回JSON:{{"score": X, "reasoning": "..."}}
"""
response = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.3
)
import json
evaluation = json.loads(response.choices[0].message.content)
return evaluation
def search(self, initial_state, goal, max_depth=5):
"""搜索最优路径"""
# 使用广度优先或最优先搜索
# 实现略
pass
4. ReAct (Reasoning + Acting)
原理: 结合推理和行动,适合需要外部工具的任务
提示词模式:
你是一个可以使用工具的AI助手。对于每个任务,你需要:
1. Thought(思考):分析当前情况
2. Action(行动):决定使用哪个工具
3. Observation(观察):查看工具返回的结果
4. 重复1-3直到得出答案
可用工具:
- Search(query):搜索网络信息
- Calculator(expression):计算数学表达式
- Database(sql):查询数据库
任务:查找当前比特币价格并计算100个比特币的价值
Thought 1:我需要先查找当前比特币价格
Action 1:Search("current bitcoin price")
Observation 1:$42,350
Thought 2:现在我知道价格了,需要计算100个的价值
Action 2:Calculator("42350 * 100")
Observation 2:4,235,000
Thought 3:我已经得到答案了
Answer:100个比特币当前价值 $4,235,000
实现代码:
class ReActAgent:
"""ReAct模式AI助手"""
def __init__(self, openai_key):
self.client = openai.OpenAI(api_key=openai_key)
self.tools = {
"search": self.search_web,
"calculator": self.calculate,
"database": self.query_database
}
def search_web(self, query):
"""搜索工具(简化版)"""
# 实际应调用搜索API
return f"搜索结果:{query}..."
def calculate(self, expression):
"""计算工具"""
try:
result = eval(expression) # 生产环境需要安全的实现
return result
except Exception as e:
return f"计算错误:{str(e)}"
def query_database(self, sql):
"""数据库查询工具"""
# 实际应连接真实数据库
return "查询结果..."
def run(self, task, max_iterations=10):
"""执行任务"""
history = []
system_prompt = """
你是一个可以使用工具的AI助手。
可用工具:
- search(query):搜索信息
- calculator(expression):计算
- database(sql):查询数据库
格式:
Thought:[你的思考]
Action:[工具名](参数)
"""
for i in range(max_iterations):
# 构建提示词
prompt = f"{system_prompt}\n\n任务:{task}\n\n"
# 添加历史
for item in history:
prompt += f"{item}\n"
# 获取AI响应
response = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.3
)
ai_response = response.choices[0].message.content
# 解析响应
if "Thought:" in ai_response:
thought = ai_response.split("Action:")[0].replace("Thought:", "").strip()
history.append(f"Thought {i+1}:{thought}")
if "Action:" in ai_response:
action_line = ai_response.split("Action:")[1].split("\n")[0].strip()
# 解析工具调用
if "(" in action_line and ")" in action_line:
tool_name = action_line.split("(")[0].strip().lower()
tool_arg = action_line.split("(")[1].split(")")[0].strip()
history.append(f"Action {i+1}:{tool_name}({tool_arg})")
# 执行工具
if tool_name in self.tools:
result = self.tools[tool_name](tool_arg)
history.append(f"Observation {i+1}:{result}")
# 检查是否完成
if "Answer:" in ai_response or "答案:" in ai_response:
answer = ai_response.split("Answer:")[-1].split("答案:")[-1].strip()
return {
"answer": answer,
"steps": history
}
return {
"answer": "未在规定步骤内找到答案",
"steps": history
}
# 使用示例
agent = ReActAgent(openai_key="your_key")
result = agent.run("查找苹果公司最新股价并计算1000股的价值")
print(f"答案:{result['answer']}")
print(f"\n推理过程:")
for step in result['steps']:
print(step)
5. Meta-Prompting (元提示)
原理: 使用AI生成和优化提示词本身
示例:
我需要为以下任务生成一个高质量的提示词:
任务描述:
帮助用户撰写产品营销文案
要求:
1. 文案吸引人
2. 突出产品优势
3. 包含行动号召
4. 适合社交媒体发布
请生成一个结构化的提示词模板。
AI生成的提示词:
```markdown
# 产品营销文案生成器
## 输入信息
请提供以下信息:
- 产品名称:[产品名]
- 产品类别:[类别]
- 核心卖点:[卖点1, 卖点2, 卖点3]
- 目标受众:[受众描述]
- 价格:[价格](可选)
- 特殊优惠:[优惠信息](可选)
## 输出要求
请生成营销文案,包含:
1. **钩子**(Hook)- 1句话吸引注意(不超过20字)
2. **痛点**(Pain) - 指出用户痛点(30字内)
3. **方案**(Solution) - 说明产品如何解决(50字内)
4. **证明**(Proof) - 社会证明或数据支持(可选)
5. **行动号召**(CTA) - 明确的下一步行动(15字内)
## 语言风格
- 简洁有力
- 第二人称(你/您)
- 积极正面
- 包含1-2个emoji
## 示例格式
🎯 [钩子]
你是否遇到[痛点]?
[产品名]帮你[解决方案]。[核心卖点展开]
✅ [证明/数据]
👉 [行动号召]
**元提示优化循环:**
```python
class MetaPromptOptimizer:
"""提示词自动优化器"""
def __init__(self, openai_key):
self.client = openai.OpenAI(api_key=openai_key)
def generate_prompt(self, task_description, requirements):
"""生成初始提示词"""
meta_prompt = f"""
请为以下任务设计一个高质量的提示词模板:
任务:{task_description}
要求:
{chr(10).join([f'- {r}' for r in requirements])}
提示词设计原则:
1. 清晰的角色定位
2. 明确的输入输出格式
3. 具体的约束条件
4. 包含示例(如适用)
5. 考虑边缘情况
请生成提示词模板。
"""
response = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": meta_prompt}],
temperature=0.7
)
return response.choices[0].message.content
def test_prompt(self, prompt, test_cases):
"""测试提示词效果"""
results = []
for test_case in test_cases:
# 使用生成的提示词
full_prompt = prompt.replace("[输入]", test_case["input"])
response = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": full_prompt}],
temperature=0.7
)
output = response.choices[0].message.content
# 评估输出
evaluation = self.evaluate_output(
output,
test_case.get("expected_criteria", {})
)
results.append({
"input": test_case["input"],
"output": output,
"score": evaluation["score"],
"issues": evaluation["issues"]
})
return results
def evaluate_output(self, output, criteria):
"""评估输出质量"""
eval_prompt = f"""
评估以下AI输出的质量:
输出内容:
{output}
评估标准:
{chr(10).join([f'- {k}: {v}' for k, v in criteria.items()])}
请给出:
1. 总体评分(0-10)
2. 各标准得分
3. 存在的问题
返回JSON格式。
"""
response = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": eval_prompt}],
temperature=0.3
)
import json
return json.loads(response.choices[0].message.content)
def optimize_prompt(self, prompt, test_results):
"""根据测试结果优化提示词"""
# 分析测试结果,找出问题
issues = []
for result in test_results:
issues.extend(result.get("issues", []))
optimization_prompt = f"""
当前提示词:
{prompt}
测试中发现的问题:
{chr(10).join(set(issues))}
请优化这个提示词,解决上述问题。
"""
response = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": optimization_prompt}],
temperature=0.7
)
return response.choices[0].message.content
def optimize_iteratively(self, task_description, requirements,
test_cases, max_iterations=3):
"""迭代优化提示词"""
# 1. 生成初始提示词
prompt = self.generate_prompt(task_description, requirements)
print(f"初始提示词已生成")
best_prompt = prompt
best_score = 0
for i in range(max_iterations):
print(f"\n第{i+1}轮测试...")
# 2. 测试提示词
results = self.test_prompt(prompt, test_cases)
# 3. 计算平均分
avg_score = sum(r["score"] for r in results) / len(results)
print(f"平均得分:{avg_score:.2f}/10")
if avg_score > best_score:
best_score = avg_score
best_prompt = prompt
# 4. 如果分数够高,停止
if avg_score >= 8.5:
print(f"✓ 提示词质量达标!")
break
# 5. 优化提示词
prompt = self.optimize_prompt(prompt, results)
print(f"提示词已优化")
return {
"final_prompt": best_prompt,
"final_score": best_score,
"iterations": i + 1
}
# 使用示例
optimizer = MetaPromptOptimizer(openai_key="your_key")
result = optimizer.optimize_iteratively(
task_description="撰写产品营销文案",
requirements=[
"吸引人的标题",
"突出产品优势",
"包含行动号召",
"不超过200字"
],
test_cases=[
{
"input": "产品:无线耳机,卖点:降噪、长续航",
"expected_criteria": {
"吸引力": "标题是否吸引人",
"卖点突出": "是否突出降噪和续航",
"CTA": "是否有明确的行动号召",
"长度": "是否在200字以内"
}
},
# 更多测试用例...
],
max_iterations=3
)
print(f"\n最终提示词:\n{result['final_prompt']}")
print(f"最终得分:{result['final_score']:.2f}/10")
行业专用提示词模式
1. 法律分析提示词
# 法律文档分析专家
## 角色定位
你是一名资深法律顾问,精通合同法、公司法、劳动法等领域。
## 分析框架
### 第一步:文档分类
识别文档类型:
- 合同类:购销合同、服务协议、劳动合同等
- 法律文书:起诉状、答辩状、判决书等
- 规章制度:公司章程、员工手册等
### 第二步:结构分析
提取关键要素:
1. 当事方信息
2. 标的物/服务内容
3. 权利义务条款
4. 违约责任
5. 争议解决机制
### 第三步:风险识别
标注风险等级:
- 🔴 高风险:可能导致重大损失
- 🟡 中风险:需要注意但可控
- 🟢 低风险:常规条款
### 第四步:建议措施
对于每个风险点,提供:
1. 风险描述
2. 潜在后果
3. 修改建议
4. 补充条款建议
## 输出格式
### 文档概要
- 文档类型:
- 签订日期:
- 当事方:
- 标的金额:
### 关键条款分析
[逐条分析重要条款]
### 风险清单
| 风险点 | 等级 | 位置 | 建议 |
|--------|------|------|------|
| ... | ... | ... | ... |
### 总体评估
[整体风险评估和建议]
## 约束条件
- 基于中国法律体系
- 引用具体法条(如适用)
- 提供可操作的建议
- 避免绝对性结论,用"可能""建议"等词
- 必要时建议咨询专业律师
## 示例分析
[如果需要,提供示例]
使用示例:
请使用上述框架分析以下劳动合同:
[合同全文...]
特别关注:
1. 竞业限制条款
2. 保密义务
3. 离职补偿
2. 医疗诊断辅助提示词
# 医疗症状分析助手
⚠️ 重要声明:本AI仅提供信息参考,不能替代专业医疗诊断。任何健康问题请咨询专业医生。
## 分析流程
### 第一步:信息收集
请提供以下信息:
- 主要症状:[描述]
- 持续时间:[X天/周/月]
- 症状严重程度:轻度/中度/重度
- 伴随症状:[如有]
- 既往病史:[如有]
- 用药情况:[如有]
- 年龄/性别:[基本信息]
### 第二步:症状分类
根据信息分类为:
1. 急性症状(需紧急就医)
2. 亚急性症状(建议就医)
3. 慢性症状(可观察)
### 第三步:可能性分析
列出可能的原因(按概率排序):
1. 最可能:[病因] - 概率X% - 理由
2. 次可能:[病因] - 概率Y% - 理由
3. 其他可能:[病因] - 概率Z% - 理由
### 第四步:建议措施
- 🚨 立即就医指征:[列出]
- 💊 自我护理措施:[列出]
- 🏥 建议就诊科室:[专科]
- ⏰ 建议就诊时间:[紧急/1-3天/1周内]
- 📋 建议检查项目:[列出]
### 第五步:预防建议
- 生活方式调整
- 饮食建议
- 运动建议
- 避免事项
## 风险提示
出现以下情况请立即就医:
- 呼吸困难
- 剧烈胸痛
- 意识改变
- 大出血
- 持续高热(>39°C)
- [更多紧急情况]
## 输出示例
[提供示例分析]
3. 教育教学提示词
# AI教学设计专家
## 角色
你是一名资深教育工作者,擅长教学设计和个性化教学。
## 教学设计框架(ADDIE模型)
### A - Analysis(分析)
1. 学习者分析
- 年龄段:
- 现有知识水平:
- 学习风格:视觉/听觉/动觉
2. 学习目标分析
- 知识目标:
- 技能目标:
- 情感目标:
### D - Design(设计)
1. 学习路径设计
知识点A → 知识点B → 知识点C ↓ ↓ ↓ 练习1 练习2 练习3 ↓ ↓ ↓ 评估1 评估2 评估3
2. 教学策略选择
- 讲授法
- 探究式学习
- 项目式学习
- 游戏化学习
### D - Development(开发)
生成教学材料:
1. 课程大纲
2. 详细教案
3. 学习资料
4. 练习题
5. 评估工具
### I - Implementation(实施)
教学步骤:
1. 导入(5分钟):激发兴趣
2. 新课(25分钟):讲解演示
3. 练习(15分钟):巩固应用
4. 总结(5分钟):回顾要点
### E - Evaluation(评估)
评估方式:
- 形成性评估(过程中)
- 总结性评估(学习后)
- 自我评估
- 同伴评估
## 个性化适应
根据学习者表现调整:
- 掌握快 → 提供拓展内容
- 掌握慢 → 分解步骤,增加练习
- 失去兴趣 → 调整教学方式
## 输出格式
请为以下课题生成教学设计:
[课题名称]
[学习者信息]
我将提供完整的教学设计方案。
4. 财务分析提示词
# 企业财务分析专家
## 分析框架
### 第一部分:财务报表解读
#### 1. 资产负债表分析
计算关键比率:
- 流动比率 = 流动资产 / 流动负债
- 速动比率 = (流动资产 - 存货) / 流动负债
- 资产负债率 = 负债总额 / 资产总额
- 权益乘数 = 资产总额 / 股东权益
#### 2. 利润表分析
计算盈利指标:
- 毛利率 = (营收 - 成本) / 营收
- 营业利润率 = 营业利润 / 营收
- 净利率 = 净利润 / 营收
- ROE(净资产收益率)= 净利润 / 股东权益
#### 3. 现金流量表分析
- 经营现金流 / 净利润(质量分析)
- 自由现金流 = 经营现金流 - 资本支出
- 现金转换周期
### 第二部分:趋势分析
对比近3-5年数据:
1. 营收增长趋势
2. 利润增长趋势
3. 现金流趋势
4. 各比率变化趋势
### 第三部分:同行对比
对比行业平均值和主要竞争对手
### 第四部分:综合评估
使用杜邦分析法:
ROE = 净利率 × 总资产周转率 × 权益乘数
### 第五部分:风险预警
识别以下风险信号:
- 🔴 高风险:[具体指标]
- 🟡 警示:[具体指标]
- 🟢 健康:[具体指标]
## 输出报告结构
### 执行摘要
[一页纸总结]
### 详细分析
[各项指标详细分析]
### 结论与建议
[投资建议/经营建议]
## 使用示例
请分析以下公司财务数据:
[提供财务报表数据]
我将生成完整的财务分析报告。
提示词优化方法论
A/B测试提示词
class PromptABTester:
"""提示词A/B测试工具"""
def __init__(self, openai_key):
self.client = openai.OpenAI(api_key=openai_key)
def test_variants(self, prompt_a, prompt_b, test_inputs, evaluation_criteria):
"""
对比测试两个提示词
Args:
prompt_a: 提示词变体A
prompt_b: 提示词变体B
test_inputs: 测试输入列表
evaluation_criteria: 评估标准
Returns:
测试报告
"""
results_a = []
results_b = []
for test_input in test_inputs:
# 测试变体A
response_a = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt_a.format(input=test_input)}],
temperature=0.7
)
results_a.append(response_a.choices[0].message.content)
# 测试变体B
response_b = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt_b.format(input=test_input)}],
temperature=0.7
)
results_b.append(response_b.choices[0].message.content)
# 评估结果
scores_a = [self.evaluate(r, evaluation_criteria) for r in results_a]
scores_b = [self.evaluate(r, evaluation_criteria) for r in results_b]
avg_a = sum(scores_a) / len(scores_a)
avg_b = sum(scores_b) / len(scores_b)
report = {
"variant_a": {
"avg_score": avg_a,
"results": list(zip(test_inputs, results_a, scores_a))
},
"variant_b": {
"avg_score": avg_b,
"results": list(zip(test_inputs, results_b, scores_b))
},
"winner": "A" if avg_a > avg_b else "B",
"improvement": abs(avg_a - avg_b) / min(avg_a, avg_b) * 100
}
return report
def evaluate(self, output, criteria):
"""评估单个输出"""
# 使用AI评估或规则评估
eval_prompt = f"""
评估以下输出(0-10分):
输出:{output}
标准:{criteria}
返回分数(只返回数字):
"""
response = self.client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": eval_prompt}],
temperature=0.3
)
try:
score = float(response.choices[0].message.content.strip())
return min(10, max(0, score)) # 确保在0-10范围内
except:
return 5 # 默认分数
# 使用示例
tester = PromptABTester(openai_key="your_key")
prompt_a = """
为以下产品写一段营销文案:
产品:{input}
要求:吸引人、简洁
"""
prompt_b = """
你是一名资深文案专家。请为以下产品撰写营销文案:
产品:{input}
文案结构:
1. 钩子(吸引注意)
2. 痛点(引起共鸣)
3. 方案(产品如何解决)
4. 行动号召
长度:100-150字
"""
test_inputs = [
"智能扫地机器人",
"有机护肤品",
"在线编程课程"
]
report = tester.test_variants(
prompt_a,
prompt_b,
test_inputs,
evaluation_criteria="吸引力、清晰度、行动号召"
)
print(f"胜者:变体{report['winner']}")
print(f"改进幅度:{report['improvement']:.1f}%")
个人提示词库构建
提示词管理系统
import json
import os
from datetime import datetime
class PromptLibrary:
"""个人提示词库管理系统"""
def __init__(self, library_file="prompt_library.json"):
self.library_file = library_file
self.prompts = self.load_library()
def load_library(self):
"""加载提示词库"""
if os.path.exists(self.library_file):
with open(self.library_file, 'r', encoding='utf-8') as f:
return json.load(f)
return {"categories": {}, "tags": {}, "prompts": []}
def save_library(self):
"""保存提示词库"""
with open(self.library_file, 'w', encoding='utf-8') as f:
json.dump(self.prompts, f, ensure_ascii=False, indent=2)
def add_prompt(self, name, content, category, tags=None, description="", examples=None):
"""添加提示词"""
prompt_id = f"prompt_{len(self.prompts['prompts']) + 1}"
prompt_data = {
"id": prompt_id,
"name": name,
"content": content,
"category": category,
"tags": tags or [],
"description": description,
"examples": examples or [],
"created_at": datetime.now().isoformat(),
"usage_count": 0,
"avg_rating": 0,
"versions": [{"version": 1, "content": content, "date": datetime.now().isoformat()}]
}
self.prompts["prompts"].append(prompt_data)
# 更新分类和标签索引
if category not in self.prompts["categories"]:
self.prompts["categories"][category] = []
self.prompts["categories"][category].append(prompt_id)
for tag in tags or []:
if tag not in self.prompts["tags"]:
self.prompts["tags"][tag] = []
self.prompts["tags"][tag].append(prompt_id)
self.save_library()
return prompt_id
def get_prompt(self, prompt_id):
"""获取提示词"""
for p in self.prompts["prompts"]:
if p["id"] == prompt_id:
p["usage_count"] += 1
self.save_library()
return p
return None
def search_prompts(self, keyword=None, category=None, tag=None):
"""搜索提示词"""
results = self.prompts["prompts"]
if keyword:
results = [p for p in results if keyword.lower() in p["name"].lower() or
keyword.lower() in p["description"].lower()]
if category:
results = [p for p in results if p["category"] == category]
if tag:
results = [p for p in results if tag in p.get("tags", [])]
return results
def update_prompt(self, prompt_id, new_content):
"""更新提示词(创建新版本)"""
for p in self.prompts["prompts"]:
if p["id"] == prompt_id:
version_num = len(p["versions"]) + 1
p["versions"].append({
"version": version_num,
"content": new_content,
"date": datetime.now().isoformat()
})
p["content"] = new_content
self.save_library()
return True
return False
def rate_prompt(self, prompt_id, rating):
"""评分提示词"""
for p in self.prompts["prompts"]:
if p["id"] == prompt_id:
# 简化的平均分计算
current_avg = p.get("avg_rating", 0)
usage_count = p.get("usage_count", 1)
new_avg = (current_avg * (usage_count - 1) + rating) / usage_count
p["avg_rating"] = new_avg
self.save_library()
return new_avg
return None
def export_prompt(self, prompt_id, format="markdown"):
"""导出提示词"""
prompt = self.get_prompt(prompt_id)
if not prompt:
return None
if format == "markdown":
export = f"""# {prompt['name']}
**分类**:{prompt['category']}
**标签**:{', '.join(prompt.get('tags', []))}
**创建时间**:{prompt['created_at']}
**使用次数**:{prompt['usage_count']}
**评分**:{prompt['avg_rating']:.1f}/5
## 描述
{prompt['description']}
## 提示词内容
```
{prompt['content']}
```
## 使用示例
{chr(10).join([f'### 示例 {i+1}' + chr(10) + ex for i, ex in enumerate(prompt.get('examples', []))])}
## 版本历史
{chr(10).join([f'- v{v["version"]} ({v["date"]})' for v in prompt['versions']])}
"""
return export
elif format == "json":
return json.dumps(prompt, ensure_ascii=False, indent=2)
def get_statistics(self):
"""获取统计信息"""
total_prompts = len(self.prompts["prompts"])
total_usage = sum(p.get("usage_count", 0) for p in self.prompts["prompts"])
avg_rating = sum(p.get("avg_rating", 0) for p in self.prompts["prompts"]) / max(total_prompts, 1)
top_used = sorted(
self.prompts["prompts"],
key=lambda x: x.get("usage_count", 0),
reverse=True
)[:5]
top_rated = sorted(
self.prompts["prompts"],
key=lambda x: x.get("avg_rating", 0),
reverse=True
)[:5]
return {
"total_prompts": total_prompts,
"total_categories": len(self.prompts["categories"]),
"total_tags": len(self.prompts["tags"]),
"total_usage": total_usage,
"avg_rating": avg_rating,
"top_used": [{"name": p["name"], "usage": p["usage_count"]} for p in top_used],
"top_rated": [{"name": p["name"], "rating": p["avg_rating"]} for p in top_rated]
}
# 使用示例
library = PromptLibrary()
# 添加提示词
library.add_prompt(
name="产品文案生成器",
content="""请为以下产品生成营销文案:
产品:{product_name}
卖点:{selling_points}
受众:{target_audience}
文案结构:
1. 钩子(20字内)
2. 痛点(30字内)
3. 解决方案(80字内)
4. 行动号召(15字内)""",
category="营销",
tags=["文案", "营销", "产品"],
description="为产品生成结构化营销文案",
examples=[
"产品:智能手表 | 卖点:健康监测、长续航 | 受众:运动爱好者"
]
)
# 搜索提示词
results = library.search_prompts(keyword="文案", category="营销")
print(f"找到{len(results)}个相关提示词")
# 导出提示词
markdown = library.export_prompt("prompt_1", format="markdown")
print(markdown)
# 查看统计
stats = library.get_statistics()
print(f"\n提示词库统计:")
print(f"- 总提示词数:{stats['total_prompts']}")
print(f"- 总使用次数:{stats['total_usage']}")
print(f"- 平均评分:{stats['avg_rating']:.1f}/5")
总结:掌握高级提示词技术是释放AI全部潜力的关键。通过系统化的提示词工程,可以显著提升AI的输出质量、准确性和实用性。建议建立个人提示词库,持续积累和优化,形成专属的AI应用能力。