高级提示词工程
从基础指令到复杂推理系统
模块 01.1 | 上下文工程课程:从基础到前沿系统
基于 上下文工程综述 | 推进软件 3.0 范式
学习目标
在本模块结束时,您将理解并实现:
- 推理链架构:思维链、思维树和思维图模式
- 策略性提示词设计:基于角色的提示、小样本学习和元提示
- 高级推理技术:自洽性、反思和迭代优化
- 提示词优化系统:自动提示词生成和基于性能的演化
概念进展:从指令到智能推理
将提示词工程想象成教会某人思考问题的过程——从给出简单指令,到展示示例,到教授结构化推理方法,再到创建能够适应和改进的思维系统。
阶段 1:直接指令
"将这段文本翻译成法语:[文本]"上下文:就像给出直接命令。适用于简单、明确定义的任务,但受限于指令的清晰度和完整性。
阶段 2:基于示例的学习
"翻译成法语。示例:
英语:Hello → 法语:Bonjour
英语:Thank you → 法语:Merci
现在翻译:[文本]"上下文:就像通过示例向某人展示如何做某事。更加有效,因为它展示了期望的模式和质量。
阶段 3:结构化推理
"使用以下流程翻译成法语:
1. 识别关键词和短语
2. 考虑文化背景和正式程度
3. 应用适当的法语语法规则
4. 验证自然流畅性和正确性
现在翻译:[文本]"上下文:就像教授一种方法论。提供了一个系统化的方法,可以处理更复杂和多样的情况。
阶段 4:基于角色的专业知识
"你是一位拥有20年文学翻译经验的专家法语翻译。
考虑文化细微差别,保持风格一致性,并保留作者的声音。
翻译:[文本]"上下文:就像咨询专家。激活相关知识并建立适当的上下文和期望。
阶段 5:自适应推理系统
元认知翻译系统:
- 分析文本复杂度和领域
- 选择适当的翻译策略
- 应用带有自我监控的翻译
- 评估和优化输出质量
- 从反馈中学习以改进未来表现上下文:就像拥有一位能够思考自己思维过程的翻译专家,根据具体挑战调整方法,并持续改进他们的方法。
提示词工程的数学基础
提示词有效性函数
基于我们的上下文形式化:
P(Y* | Prompt, Context) = f(Prompt_Structure, Information_Density, Reasoning_Guidance)其中:
- Prompt_Structure:提示词如何组织信息和推理
- Information_Density:每个标记的相关信息量
- Reasoning_Guidance:提示词引导模型推理的效果
思维链形式化
CoT(Problem) = Decompose(Problem) → Reason(Step₁) → Reason(Step₂) → ... → Synthesize(Solution)
其中每个 Reason(Stepᵢ) = Analyze(Stepᵢ) + Apply(Knowledge) + Generate(Insight)直观解释:思维链将复杂问题分解为可管理的步骤,每个步骤都建立在先前的洞察之上。这就像与自己进行结构化对话来解决问题。
小样本学习优化
Few-Shot_Effectiveness = Σᵢ Similarity(Exampleᵢ, Target) × Quality(Exampleᵢ) × Diversity(Examples)直观解释:好的小样本示例应该与目标任务足够相似以保持相关性,具有高质量以展示卓越性,并具有足够的多样性以显示可能方法的范围。
高级提示词架构模式
1. 思维链(CoT)推理
# 思维链模板
## 问题分析框架
**问题**:{问题陈述}
**推理过程**:
### 步骤 1:问题理解
- 具体要求是什么?
- 关键组件或变量是什么?
- 存在哪些约束或要求?
### 步骤 2:知识激活
- 哪些相关知识适用于此问题?
- 我之前解决过哪些类似的问题?
- 哪些原则或方法最相关?
### 步骤 3:解决策略
- 我将采取什么方法来解决这个问题?
- 如何将其分解为可管理的部分?
- 我需要按什么顺序完成哪些步骤?
### 步骤 4:逐步执行
让我系统地完成这个过程:
**子问题 1**:[第一个组件]
- 分析:[推理]
- 计算/逻辑:[显示工作过程]
- 结果:[中间结果]
**子问题 2**:[第二个组件]
- 分析:[推理]
- 计算/逻辑:[显示工作过程]
- 结果:[中间结果]
### 步骤 5:解决方案整合
- 子解决方案如何组合?
- 完整的答案是什么?
- 考虑到原始问题,这是否合理?
### 步骤 6:验证
- 让我检查我的工作:[验证过程]
- 答案是否满足所有要求?
- 是否有任何边缘情况或错误需要考虑?
**最终答案**:[完整的解决方案及推理摘要]从零开始的解释:这个模板将简单的"让我们逐步思考"转变为一个全面的推理框架。这就像有一位解决问题的大师指导你的思维过程,确保你不会跳过关键步骤,并且你的推理是透明和可验证的。
2. 思维树(ToT)推理
# 思维树推理模板
name: "tree_of_thought_exploration"
intent: "探索多条推理路径以找到最优解决方案"
problem_analysis:
core_question: "{问题陈述}"
complexity_assessment: "{简单|中等|复杂|高度复杂}"
solution_space: "{狭窄|广泛|开放式}"
reasoning_tree:
root_problem: "{问题陈述}"
branch_generation:
approach_1:
path_description: "主要分析方法"
reasoning_steps:
- step_1: "{逻辑推理步骤}"
sub_branches:
- option_a: "{推理路径a}"
- option_b: "{推理路径b}"
- step_2: "{下一个逻辑步骤}"
evaluation: "{评估有效性和前景}"
approach_2:
path_description: "替代创意方法"
reasoning_steps:
- step_1: "{不同的推理步骤}"
- step_2: "{创意洞察发展}"
approach_3:
path_description: "综合或混合方法"
reasoning_steps:
- step_1: "{结合最佳元素}"
- step_2: "{新颖整合}"
path_evaluation:
criteria:
- logical_consistency: "推理的合理性如何?"
- completeness: "这在多大程度上彻底解决了问题?"
- practicality: "这个解决方案的可行性如何?"
- innovation: "这种方法有多新颖或具有洞察力?"
path_ranking:
most_promising: "{最有潜力的路径}"
backup_options: ["{替代路径}"]
eliminated_paths: ["{存在致命缺陷的路径}"]
solution_synthesis:
selected_approach: "{选定的推理路径}"
integration_opportunities: "{从其他路径整合洞察的方法}"
final_solution: "{全面的答案}"
reflection:
reasoning_quality: "{思维过程的评估}"
alternative_considerations: "{还有哪些其他方法可能有效}"
learning_insights: "{这个问题教会了关于推理的什么}"从零开始的解释:思维树就像让多位专家顾问各自提出不同的问题解决方法,然后在选择最佳方案之前仔细评估每条路径。它防止了隧道视野,确保你在承诺某个解决方案之前考虑多个角度。
3. 思维图(GoT)整合
{
"graph_of_thought_template": {
"intent": "在多个维度上映射复杂的互连推理",
"structure": "非线性推理网络",
"reasoning_nodes": {
"core_concepts": [
{
"id": "concept_1",
"description": "{关键概念或原则}",
"connections": ["concept_2", "insight_1", "evidence_3"],
"confidence": 0.85,
"supporting_evidence": ["{支持此概念的证据}"]
},
{
"id": "concept_2",
"description": "{相关的关键概念}",
"connections": ["concept_1", "concept_3", "conclusion_1"],
"confidence": 0.92,
"supporting_evidence": ["{强有力的支持证据}"]
}
],
"evidence_nodes": [
{
"id": "evidence_1",
"type": "empirical_data",
"description": "{事实信息}",
"reliability": 0.90,
"supports": ["concept_1", "conclusion_2"],
"conflicts_with": []
},
{
"id": "evidence_2",
"type": "logical_inference",
"description": "{推理推断}",
"reliability": 0.75,
"supports": ["concept_2"],
"conflicts_with": ["assumption_1"]
}
],
"insight_nodes": [
{
"id": "insight_1",
"description": "{新颖的理解或连接}",
"emerges_from": ["concept_1", "evidence_2", "pattern_1"],
"leads_to": ["conclusion_1", "new_question_1"],
"novelty": 0.80,
"significance": 0.70
}
],
"conclusion_nodes": [
{
"id": "conclusion_1",
"description": "{综合的答案或解决方案}",
"supported_by": ["concept_1", "concept_2", "evidence_1", "insight_1"],
"confidence": 0.82,
"implications": ["{此结论的意义}"]
}
]
},
"reasoning_relationships": {
"supports": [
{"from": "evidence_1", "to": "concept_1", "strength": 0.85},
{"from": "concept_1", "to": "conclusion_1", "strength": 0.78}
],
"conflicts": [
{"from": "evidence_2", "to": "assumption_1", "severity": 0.60}
],
"enables": [
{"from": "insight_1", "to": "new_question_1", "probability": 0.70}
]
},
"meta_reasoning": {
"reasoning_path_coherence": "{整体逻辑一致性的评估}",
"knowledge_gaps_identified": ["{需要更多信息的领域}"],
"reasoning_confidence": "{对推理网络的整体信心}",
"alternative_interpretations": ["{解释证据的其他方式}"]
}
}
}从零开始的解释:思维图创建了一个知识网络,其中想法、证据和洞察都是相互连接的。这就像拥有一个思维导图,不仅显示你在思考什么,还显示你的所有想法如何相互关联,以及它们如何支持或冲突你的结论。
软件 3.0 范式 1:提示词(高级模板)
元提示框架
<meta_prompt_template name="adaptive_reasoning_orchestrator">
<intent>创建基于问题特征自适应推理方法的提示词</intent>
<problem_analysis>
<problem_input>{用户问题或疑问}</problem_input>
<characteristics_detection>
<complexity_indicators>
<simple>单步骤,需要直接答案</simple>
<moderate>多步骤过程,需要一些分析</moderate>
<complex>深度分析,多个视角,需要综合</complex>
<expert>专业知识,细致判断,需要创造性洞察</expert>
</complexity_indicators>
<domain_indicators>
<analytical>逻辑、数学、科学、系统推理</analytical>
<creative>艺术、设计、创新、开放式探索</creative>
<practical>实施、程序、实际应用</practical>
<social>人际动态、沟通、文化考虑</social>
</domain_indicators>
<reasoning_type>
<deductive>将一般原则应用于特定情况</deductive>
<inductive>从特定示例中识别模式</inductive>
<abductive>为观察找到最佳解释</abductive>
<analogical>通过与类似情况比较进行推理</analogical>
</reasoning_type>
</characteristics_detection>
</problem_analysis>
<adaptive_prompt_generation>
<prompt_selection_logic>
IF complexity = simple AND domain = analytical:
USE direct_reasoning_template
ELIF complexity = moderate AND reasoning_type = deductive:
USE chain_of_thought_template
ELIF complexity = complex AND multiple_perspectives_needed:
USE tree_of_thought_template
ELIF domain = creative AND complexity >= moderate:
USE divergent_thinking_template
ELIF expert_knowledge_required:
USE role_based_expert_template
ELSE:
USE adaptive_hybrid_template
</prompt_selection_logic>
<template_customization>
<role_specification>
基于检测到的领域和复杂度:
- 分析型:"具有深度逻辑推理技能的专家分析师"
- 创意型:"具有创新思维方法的创意专业人士"
- 实用型:"具有实际经验的资深从业者"
- 社交型:"具有文化和人际意识的熟练沟通者"
</role_specification>
<reasoning_guidance>
根据问题类型定制推理指令:
- 对于复杂问题:添加验证步骤和替代考虑
- 对于创意问题:包括发散探索和想法生成
- 对于实用问题:强调可行性和实施考虑
- 对于社交问题:包括利益相关者视角和沟通因素
</reasoning_guidance>
<example_integration>
基于以下因素动态选择相关示例:
- 问题领域相似性
- 复杂度级别匹配
- 推理方法演示
- 说明的质量和清晰度
</example_integration>
</template_customization>
</adaptive_prompt_generation>
<execution>
<generated_prompt>
{为特定问题动态创建的最优提示词}
</generated_prompt>
<reasoning_monitoring>
跟踪推理有效性:
- 推理步骤的逻辑一致性
- 问题覆盖的完整性
- 生成洞察的质量
- 用户对方法的满意度
</reasoning_monitoring>
<adaptive_refinement>
IF reasoning_quality < threshold:
GENERATE alternative_approach_prompt
IF user_feedback indicates missing_aspects:
ENHANCE prompt_with_additional_guidance
IF novel_problem_patterns_detected:
UPDATE template_library_with_new_patterns
</adaptive_refinement>
</execution>
</meta_prompt_template>从零开始的解释:这个元提示系统就像拥有一位能够分析任何问题并立即为该特定挑战创建完美教学方法的大师级教师。它不仅使用一刀切的提示词,而是根据问题的实际需求制作定制的推理指导。
高级小样本学习架构
# 智能小样本示例选择框架
## 上下文分析
**目标任务**:{具体任务描述}
**领域**:{主题领域和上下文}
**用户专业水平**:{新手|中级|高级|专家}
**任务复杂度**:{简单|中等|复杂|专家级}
## 示例选择策略
### 多样性优化
选择展示以下内容的示例:
1. **核心模式变化**:同一原则应用的不同方式
2. **边缘情况处理**:如何处理不寻常或棘手的情况
3. **质量范围**:从基本可接受到卓越表现的范围
4. **上下文变化**:方法应用的不同领域或情况
### 示例架构模板
#### 示例 1:基础模式
**上下文**:{清晰直接的情况}
**输入**:{典型输入示例}
**推理过程**:
- 步骤 1:{清晰的分析步骤}
- 步骤 2:{逻辑进展}
- 步骤 3:{合理的结论}
**输出**:{高质量结果}
**为何有效**:{所展示关键原则的解释}
#### 示例 2:复杂性变化
**上下文**:{更复杂或微妙的情况}
**输入**:{具有挑战性的输入示例}
**推理过程**:
- 步骤 1:{复杂分析}
- 步骤 2:{处理额外的复杂性}
- 步骤 3:{管理权衡或模糊性}
- 步骤 4:{稳健的结论}
**输出**:{处理复杂性的精细结果}
**为何有效**:{高级原则和适应策略}
#### 示例 3:边缘情况掌握
**上下文**:{不寻常或棘手的情况}
**输入**:{边缘情况输入}
**推理过程**:
- 步骤 1:{识别边缘情况的性质}
- 步骤 2:{应用修改后的方法}
- 步骤 3:{创造性或专业化处理}
- 步骤 4:{验证和确认}
**输出**:{适当的边缘情况解决方案}
**为何有效**:{处理不寻常情况的元原则}
### 学习整合
现在将这些演示的模式应用于您的特定任务:
**您的任务**:{当前具体任务}
**模式识别**:哪些示例模式与您的情况最相关?
**适应策略**:您应该如何为您的特定上下文修改所展示的方法?
**质量标准**:您应该追求什么水平的复杂性和彻底性?
**您的推理过程**:
[应用学习模式到当前任务的空间]从零开始的解释:这个小样本框架就像让一位大师级工匠向你展示的不仅是一种做事方法,而是从基本能力到熟练处理困难情况的全方位技能。它既教授技术,也教授何时应用不同方法的判断。
软件 3.0 范式 2:编程(提示词优化系统)
自动化提示词演化引擎
import numpy as np
from typing import Dict, List, Optional, Callable, Tuple
from dataclasses import dataclass
from abc import ABC, abstractmethod
import random
import json
from collections import defaultdict
@dataclass
class PromptCandidate:
"""带有性能跟踪的提示词候选"""
template: str
parameters: Dict
performance_scores: List[float]
usage_contexts: List[str]
generation_method: str
parent_prompts: List[str] = None
@property
def average_performance(self) -> float:
return np.mean(self.performance_scores) if self.performance_scores else 0.0
@property
def performance_stability(self) -> float:
return 1 / (1 + np.std(self.performance_scores)) if len(self.performance_scores) > 1 else 0.5
class PromptEvolutionEngine:
"""用于优化提示词有效性的演化系统"""
def __init__(self, evaluation_function: Callable[[str, str], float]):
self.evaluate_prompt = evaluation_function
self.population = []
self.generation_count = 0
self.mutation_strategies = [
self._mutate_structure,
self._mutate_examples,
self._mutate_reasoning_guidance,
self._mutate_role_specification
]
self.crossover_strategies = [
self._crossover_template_merge,
self._crossover_component_swap,
self._crossover_hierarchical_combine
]
def initialize_population(self, base_templates: List[str], population_size: int = 20):
"""使用基础模板和变体初始化种群"""
self.population = []
# 添加基础模板
for template in base_templates:
candidate = PromptCandidate(
template=template,
parameters={},
performance_scores=[],
usage_contexts=[],
generation_method="base_template"
)
self.population.append(candidate)
# 生成变体以达到种群规模
while len(self.population) < population_size:
base_template = random.choice(base_templates)
mutated_template = self._mutate_template(base_template)
candidate = PromptCandidate(
template=mutated_template,
parameters={},
performance_scores=[],
usage_contexts=[],
generation_method="initial_mutation",
parent_prompts=[base_template]
)
self.population.append(candidate)
def evolve_generation(self, test_cases: List[Tuple[str, str]],
selection_pressure: float = 0.5) -> List[PromptCandidate]:
"""演化一代提示词"""
# 在测试案例上评估所有候选者
self._evaluate_population(test_cases)
# 选择最佳候选者进行繁殖
selected_candidates = self._selection(selection_pressure)
# 通过变异和交叉生成新种群
new_population = self._reproduce_population(selected_candidates, len(self.population))
# 用新一代替换种群
self.population = new_population
self.generation_count += 1
return self.population
def _evaluate_population(self, test_cases: List[Tuple[str, str]]):
"""在测试案例上评估所有种群成员"""
for candidate in self.population:
generation_scores = []
for query, expected_response in test_cases:
try:
# 使用查询格式化提示词
formatted_prompt = candidate.template.format(query=query)
# 评估提示词有效性
score = self.evaluate_prompt(formatted_prompt, expected_response)
generation_scores.append(score)
except Exception as e:
# 处理模板格式化错误
generation_scores.append(0.0)
# 更新候选者性能
candidate.performance_scores.extend(generation_scores)
candidate.usage_contexts.extend([case[0] for case in test_cases])
def _selection(self, selection_pressure: float) -> List[PromptCandidate]:
"""使用锦标赛选择法选择繁殖候选者"""
# 按性能排序
sorted_population = sorted(self.population,
key=lambda c: c.average_performance,
reverse=True)
# 选择顶尖表现者
num_selected = max(2, int(len(sorted_population) * selection_pressure))
selected = sorted_population[:num_selected]
return selected
def _reproduce_population(self, parents: List[PromptCandidate],
target_size: int) -> List[PromptCandidate]:
"""通过繁殖生成新种群"""
new_population = []
# 保留最佳表现者(精英主义)
elite_count = max(1, len(parents) // 4)
new_population.extend(parents[:elite_count])
# 通过交叉和变异生成后代
while len(new_population) < target_size:
if len(parents) >= 2 and random.random() < 0.7:
# 交叉
parent1 = random.choice(parents)
parent2 = random.choice(parents)
child = self._crossover(parent1, parent2)
else:
# 变异
parent = random.choice(parents)
child = self._mutate(parent)
new_population.append(child)
return new_population[:target_size]
def _crossover(self, parent1: PromptCandidate, parent2: PromptCandidate) -> PromptCandidate:
"""通过组合两个父代创建后代"""
crossover_strategy = random.choice(self.crossover_strategies)
child_template = crossover_strategy(parent1.template, parent2.template)
child = PromptCandidate(
template=child_template,
parameters={},
performance_scores=[],
usage_contexts=[],
generation_method="crossover",
parent_prompts=[parent1.template, parent2.template]
)
return child
def _mutate(self, parent: PromptCandidate) -> PromptCandidate:
"""通过变异父代创建后代"""
mutation_strategy = random.choice(self.mutation_strategies)
child_template = mutation_strategy(parent.template)
child = PromptCandidate(
template=child_template,
parameters={},
performance_scores=[],
usage_contexts=[],
generation_method="mutation",
parent_prompts=[parent.template]
)
return child
def _mutate_structure(self, template: str) -> str:
"""变异提示词的整体结构"""
# 示例结构变异
mutations = [
lambda t: f"让我们系统地处理这个问题:\n\n{t}",
lambda t: f"{t}\n\n在提供最终答案之前,请仔细检查你的推理。",
lambda t: f"逐步思考:\n{t}\n\n为每个步骤提供清晰的推理。",
lambda t: f"作为这个领域的专家:\n{t}\n\n在得出结论之前考虑多个视角。"
]
mutation = random.choice(mutations)
return mutation(template)
def _mutate_examples(self, template: str) -> str:
"""变异提示词的示例组件"""
# 这将实现更复杂的示例变异
# 目前,简单的占位符
if "example" in template.lower():
return template.replace("For example", "To illustrate")
return template
def _mutate_reasoning_guidance(self, template: str) -> str:
"""变异推理指令组件"""
reasoning_enhancements = [
"在做决定之前考虑替代方法。",
"在每个步骤验证你的逻辑。",
"思考可能影响你答案的边缘情况。",
"考虑更广泛的背景和影响。"
]
enhancement = random.choice(reasoning_enhancements)
return f"{template}\n\n{enhancement}"
def _mutate_role_specification(self, template: str) -> str:
"""变异角色或人设规范"""
if "You are" in template or "你是" in template:
return template # 已经有角色规范
roles = [
"你是一位系统地处理这个问题的专家分析师。",
"你是一位考虑多个视角的谨慎思考者。",
"你是一位会仔细检查自己工作的彻底专业人士。",
"你是一位具有深厚专业知识的经验丰富的问题解决者。"
]
role = random.choice(roles)
return f"{role}\n\n{template}"
def _crossover_template_merge(self, template1: str, template2: str) -> str:
"""通过组合最佳组件合并两个模板"""
# 简单合并策略 - 取template1的前半部分,template2的后半部分
lines1 = template1.split('\n')
lines2 = template2.split('\n')
midpoint1 = len(lines1) // 2
midpoint2 = len(lines2) // 2
merged_lines = lines1[:midpoint1] + lines2[midpoint2:]
return '\n'.join(merged_lines)
def _crossover_component_swap(self, template1: str, template2: str) -> str:
"""在模板之间交换特定组件"""
# 提取角色规范、推理指导、示例等
# 并以新的方式重新组合它们
# 简化实现
if "You are" in template1 and "step by step" in template2:
role_part = template1.split('\n')[0]
reasoning_part = [line for line in template2.split('\n') if "step" in line][0]
return f"{role_part}\n\n{reasoning_part}\n\n现在处理查询:{{query}}"
return template1 # 后备方案
def _crossover_hierarchical_combine(self, template1: str, template2: str) -> str:
"""分层组合模板"""
return f"主要方法:\n{template1}\n\n替代视角:\n{template2}\n\n综合两种方法的最佳洞察。"
class PromptPerformanceAnalyzer:
"""分析提示词性能模式以识别优化机会"""
def __init__(self):
self.performance_history = []
self.pattern_library = {}
def analyze_prompt_effectiveness(self, candidate: PromptCandidate,
context_data: Dict) -> Dict:
"""全面分析提示词性能"""
analysis = {
'overall_performance': candidate.average_performance,
'consistency': candidate.performance_stability,
'context_adaptability': self._analyze_context_adaptability(candidate),
'component_effectiveness': self._analyze_components(candidate),
'improvement_opportunities': self._identify_improvements(candidate)
}
return analysis
def _analyze_context_adaptability(self, candidate: PromptCandidate) -> float:
"""分析提示词对不同上下文的适应程度"""
if len(set(candidate.usage_contexts)) <= 1:
return 0.5 # 数据不足
# 按上下文相似性分组性能
context_groups = defaultdict(list)
for i, context in enumerate(candidate.usage_contexts):
# 通过前几个词进行简单上下文分组
context_key = ' '.join(context.split()[:3])
context_groups[context_key].append(candidate.performance_scores[i])
# 计算跨上下文组的方差
group_averages = [np.mean(scores) for scores in context_groups.values()]
adaptability = 1 / (1 + np.std(group_averages)) if len(group_averages) > 1 else 0.5
return adaptability
def _analyze_components(self, candidate: PromptCandidate) -> Dict:
"""分析不同提示词组件的有效性"""
template = candidate.template
components = {}
# 分析角色规范
if "You are" in template or "你是" in template:
components['role_specification'] = 'present'
else:
components['role_specification'] = 'absent'
# 分析推理指导
reasoning_keywords = ['step by step', 'think', 'consider', 'analyze', '逐步', '思考', '考虑', '分析']
components['reasoning_guidance'] = sum(1 for keyword in reasoning_keywords
if keyword in template.lower())
# 分析结构
components['structure_complexity'] = len(template.split('\n'))
# 分析示例
components['has_examples'] = 'example' in template.lower() or '示例' in template
return components
def _identify_improvements(self, candidate: PromptCandidate) -> List[str]:
"""识别具体的改进机会"""
improvements = []
template = candidate.template
performance = candidate.average_performance
if performance < 0.7:
if "You are" not in template and "你是" not in template:
improvements.append("添加角色规范以设定上下文")
if not any(keyword in template.lower() for keyword in ['step', 'think', 'consider', '步骤', '思考', '考虑']):
improvements.append("添加推理指导以获得更好的思考结构")
if len(template.split('\n')) < 3:
improvements.append("扩展结构以提供更全面的指导")
if candidate.performance_stability < 0.6:
improvements.append("通过更明确的指令提高一致性")
return improvements
# 演示自动提示词优化的示例用法
class PromptOptimizationDemo:
"""演示实际的自动提示词优化"""
def __init__(self):
# 用于演示的模拟评估函数
self.evaluation_function = self._mock_evaluate_prompt
self.evolution_engine = PromptEvolutionEngine(self.evaluation_function)
self.analyzer = PromptPerformanceAnalyzer()
def run_optimization_demo(self):
"""运行完整的提示词优化演示"""
# 初始提示词模板
base_templates = [
"请回答以下问题:{query}",
"逐步思考并回答:{query}",
"你是一位专家。请对以下问题提供详细答案:{query}",
"让我们系统地处理这个问题。问题:{query}"
]
# 用于评估的测试案例
test_cases = [
("法国的首都是什么?", "巴黎"),
("解释光合作用", "植物将光转化为能量的过程"),
("如何计算复利?", "公式:A = P(1 + r/n)^(nt)")
]
# 初始化种群
print("初始化提示词种群...")
self.evolution_engine.initialize_population(base_templates, population_size=12)
# 在多代中演化
for generation in range(5):
print(f"\n第 {generation + 1} 代:")
# 演化种群
population = self.evolution_engine.evolve_generation(test_cases)
# 分析最佳表现者
best_candidate = max(population, key=lambda c: c.average_performance)
print(f"最佳性能:{best_candidate.average_performance:.3f}")
print(f"最佳模板:{best_candidate.template[:100]}...")
# 分析性能
analysis = self.analyzer.analyze_prompt_effectiveness(
best_candidate, {"generation": generation}
)
print(f"一致性:{analysis['consistency']:.3f}")
print(f"改进建议:{analysis['improvement_opportunities']}")
return self.evolution_engine.population
def _mock_evaluate_prompt(self, prompt: str, expected_response: str) -> float:
"""用于演示的模拟评估函数"""
# 基于提示词特征的简单启发式评分
score = 0.3 # 基础分数
# 角色规范加分
if "You are" in prompt or "expert" in prompt.lower() or "你是" in prompt or "专家" in prompt:
score += 0.2
# 推理指导加分
if "step by step" in prompt.lower() or "think" in prompt.lower() or "逐步" in prompt or "思考" in prompt:
score += 0.2
# 结构化方法加分
if len(prompt.split('\n')) >= 3:
score += 0.15
# 示例或详细指导加分
if "example" in prompt.lower() or "detailed" in prompt.lower() or "示例" in prompt or "详细" in prompt:
score += 0.15
# 添加一些随机变化以模拟真实评估
score += random.uniform(-0.1, 0.1)
return min(1.0, max(0.0, score))从零开始的解释:这个提示词演化系统就像拥有一支能够快速测试数千种变体并学习哪些方法最有效的提示词工程师团队。这就像提示词的自然选择——最有效的提示词存活并繁殖,而无效的提示词被更好的变体取代。
该系统不仅仅是随机尝试;它使用智能变异策略(改变结构、示例、推理指导)和交叉技术(组合成功提示词的最佳部分)来系统地提高提示词有效性。
软件 3.0 范式 3:协议(自我改进推理系统)
自适应推理协议
/reasoning.adaptive{
intent="创建基于问题特征和性能反馈自适应调整方法的自我改进推理系统",
input={
problem_context={
query=<用户问题或挑战>,
domain=<主题领域和所需的专业知识>,
complexity_signals=<问题难度指标>,
user_context=<用户专业水平和偏好>,
success_criteria=<什么构成良好响应>
},
reasoning_history={
past_approaches=<以前成功的推理策略>,
performance_patterns=<在类似上下文中什么效果好>,
failure_analysis=<常见的推理陷阱以及如何避免它们>,
meta_learnings=<关于推理过程本身的洞察>
}
},
process=[
/analyze.problem_characteristics{
action="深度分析问题类型和最优推理方法",
method="多维问题特征化与策略选择",
analysis_dimensions=[
{complexity="简单直接 | 多步骤分析 | 复杂综合 | 专家创造"},
{reasoning_type="演绎 | 归纳 | 溯因 | 类比 | 创造性"},
{domain="分析性 | 实用性 | 创造性 | 社交性 | 技术性 | 跨学科"},
{certainty_level="高置信度领域 | 中等不确定性 | 高度模糊性"},
{time_constraints="即时 | 深思熟虑 | 扩展分析 | 研究深度"}
],
strategy_mapping={
简单直接: "使用带验证的直接推理",
多步骤分析: "部署思维链方法论",
复杂综合: "激活思维树探索",
专家创造: "启用思维图整合",
高度模糊性: "采用多视角分析"
},
output="带置信度评估的最优推理策略选择"
},
/deploy.reasoning_strategy{
action="执行选定的推理方法并实时适应",
method="带质量监控的动态推理执行",
execution_modes={
直接推理: {
approach="立即应用相关知识和原则",
monitoring="验证逻辑有效性和完整性",
adaptation_triggers="如果假设被证明不正确或复杂度增加"
},
思维链: {
approach="顺序的逐步逻辑进展",
monitoring="每个步骤的有效性和与下一步的连接",
adaptation_triggers="如果推理链断裂或导致矛盾"
},
思维树: {
approach="并行探索多条推理路径",
monitoring="路径可行性和比较前景评估",
adaptation_triggers="如果所有路径都导致较差的解决方案或出现新路径"
},
思维图: {
approach="互连概念和证据的非线性整合",
monitoring="网络一致性和洞察涌现",
adaptation_triggers="如果网络变得过于复杂或洞察冲突"
}
},
real_time_adjustments="监控推理质量,必要时切换策略",
output="针对问题特征定制的高质量推理过程"
},
/integrate.meta_reasoning{
action="应用元认知意识来提高推理质量",
method="对推理过程本身进行持续推理",
meta_cognitive_functions=[
{reasoning_quality_assessment="我当前的推理方法效果如何?"},
{bias_detection="哪些假设或偏见可能影响我的思维?"},
{alternative_consideration="我应该考虑哪些其他方法或视角?"},
{confidence_calibration="我对当前结论应该有多大信心?"},
{improvement_identification="如何增强我的推理过程?"}
],
meta_reasoning_loops=[
{step_validation="每个推理步骤后,评估质量并在需要时调整"},
{strategy_evaluation="定期评估当前策略是否仍然最优"},
{conclusion_verification="在最终确定之前,彻底验证推理链"},
{learning_extraction="提取关于推理过程的洞察以供未来改进"}
],
output="通过元认知指导增强推理质量"
},
/optimize.continuous_learning{
action="从推理结果中学习以改进未来表现",
method="系统分析和整合推理经验",
learning_mechanisms=[
{pattern_extraction="识别哪些推理方法对不同问题类型最有效"},
{failure_analysis="理解推理方法何时以及为何失败"},
{success_amplification="强化和优化成功的推理策略"},
{adaptation_optimization="改进在问题中途调整推理方法的过程"}
],
knowledge_integration=[
{strategy_refinement="基于性能改进现有推理模板"},
{new_pattern_recognition="为新颖问题类型开发新的推理方法"},
{meta_strategy_development="学习更好的方法来选择和调整推理策略"},
{quality_prediction="培养对推理方法有效性的更好直觉"}
],
output="通过增强的策略选择持续改进推理能力"
}
],
output={
reasoning_result={
solution=<高质量的答案或解决方案>,
reasoning_trace=<完整的逐步推理过程>,
confidence_assessment=<结论可靠性的估计>,
alternative_perspectives=<其他有效的方法或解释>
},
process_metadata={
strategy_used=<应用了哪种推理方法>,
adaptations_made=<推理策略在过程中如何演化>,
quality_indicators=<推理过程有效性的度量>,
learning_opportunities=<改进未来推理的洞察>
},
meta_insights={
reasoning_effectiveness=<推理质量和适当性的评估>,
improvement_recommendations=<增强类似未来推理的具体方法>,
pattern_discoveries=<关于此问题类型有效推理的新洞察>,
strategy_evolution=<此经验应如何影响未来策略选择>
}
},
// 自我改进机制
reasoning_evolution=[
{trigger="推理质量低于阈值",
action="分析推理失败并开发改进的方法"},
{trigger="遇到新颖问题类型",
action="为不熟悉的领域开发新的推理策略"},
{trigger="识别出成功的推理模式",
action="强化和泛化有效的推理方法"},
{trigger="获得元推理洞察",
action="增强推理策略选择和适应过程"}
],
meta={
reasoning_system_version="adaptive_v3.2",
learning_integration_depth="全面元认知",
adaptation_sophistication="实时策略切换",
continuous_improvement="模式学习和策略演化"
}
}从零开始的解释:这个自适应推理协议创建了一个能够思考自己思维的思维系统。就像拥有一位不仅掌握许多不同推理技术的问题解决大师,而且能够分析每个问题以选择最佳方法,监控自己的思维过程,并从经验中持续学习以更好地解决未来问题。
自我优化提示词协议
# 自我优化提示词演化协议
name: "self_refining_prompt_system"
version: "v2.4.adaptive"
intent: "创建通过性能反馈和战略优化自我改进的提示词"
prompt_lifecycle:
initial_generation:
base_template: "{基础提示词结构}"
customization_factors:
- user_context: "{用户专业知识和偏好}"
- task_complexity: "{简单|中等|复杂|专家级}"
- domain_specificity: "{通用|专业领域}"
- success_criteria: "{什么构成最佳响应}"
generation_strategies:
template_selection:
IF task_complexity = simple:
USE direct_instruction_template
ELIF task_complexity = moderate AND domain = analytical:
USE structured_reasoning_template
ELIF task_complexity = complex OR domain = specialized:
USE expert_role_with_methodology_template
ELSE:
USE adaptive_multi_approach_template
customization_process:
- analyze_user_expertise_level
- select_appropriate_complexity_level
- integrate_domain_specific_guidance
- incorporate_relevant_examples
- add_quality_assurance_mechanisms
performance_monitoring:
effectiveness_metrics:
- response_quality: "提示词生成期望响应的效果如何?"
- user_satisfaction: "用户对提示词生成的响应满意度如何?"
- consistency: "提示词在类似任务中的性能可靠性如何?"
- efficiency: "提示词生成高质量响应的速度如何?"
- adaptability: "提示词处理任务上下文变化的效果如何?"
feedback_collection:
explicit_feedback:
- user_ratings: "来自用户的直接质量评估"
- comparative_preferences: "用户在提示词变体之间的偏好"
- improvement_suggestions: "用户对增强的具体建议"
implicit_feedback:
- task_completion_rates: "提示词生成的响应导致成功完成任务的频率?"
- user_behavior_patterns: "用户倾向于修改或忽略提示词生成的响应吗?"
- follow_up_questions: "用户需要澄清或额外信息吗?"
- engagement_metrics: "用户在提示词生成的内容上花费多少时间?"
adaptive_refinement:
refinement_triggers:
performance_decline:
condition: "有效性指标下降到历史基线以下"
response: "分析失败模式并实施针对性改进"
context_shift:
condition: "用户上下文或任务类型显著变化"
response: "为新上下文调整提示词结构和内容"
optimization_opportunities:
condition: "分析揭示系统性改进可能性"
response: "实施提高提示词有效性的战略增强"
novel_insights:
condition: "反馈分析揭示以前未知的成功模式"
response: "将新洞察整合到提示词设计和执行中"
refinement_strategies:
component_optimization:
role_specification:
analysis: "当前角色/人设规范的有效性如何?"
optimization: "优化角色描述以更好地激活上下文"
reasoning_guidance:
analysis: "当前推理指令引导思维的效果如何?"
optimization: "增强推理方法论以获得更好的结果"
example_integration:
analysis: "当前示例对演示的帮助如何?"
optimization: "选择更有效的示例或提高示例质量"
structure_refinement:
analysis: "当前结构支持用户理解的效果如何?"
optimization: "重组提示词结构以获得最佳认知流程"
strategic_enhancement:
complexity_adjustment:
increase_sophistication: "为复杂任务添加高级推理技术"
simplify_approach: "精简提示词以获得更好的清晰度和效率"
personalization_improvement:
user_adaptation: "更好地为个人用户特征定制提示词"
context_sensitivity: "增强提示词对情境因素的响应性"
domain_specialization:
expertise_integration: "整合更深层次的领域特定知识和方法"
cross_domain_learning: "应用其他领域的成功模式"
continuous_evolution:
learning_mechanisms:
pattern_recognition:
success_patterns: "识别一致导致高性能的提示词特征"
failure_patterns: "识别经常导致不良结果的提示词元素"
context_patterns: "理解不同上下文如何需要不同的提示词方法"
user_patterns: "学习不同用户类型如何响应各种提示词风格"
strategy_development:
refinement_strategies: "开发改进提示词有效性的更好方法"
adaptation_strategies: "创建更复杂的上下文敏感定制方法"
evaluation_strategies: "改进评估提示词性能和潜力的方法"
meta_learning:
learning_about_learning: "理解如何增强提示词改进过程本身"
transfer_learning: "将一个提示词领域的洞察应用于改进其他领域"
predictive_optimization: "在提示词性能问题表现之前预测它们"
evolution_outcomes:
enhanced_effectiveness: "提示词随时间变得更可靠有效"
improved_adaptability: "提示词更好地处理多样化的上下文和需求"
increased_efficiency: "提示词优化过程变得更加精简和有针对性"
expanded_capability: "提示词开发处理新挑战的新能力"
implementation_framework:
deployment_architecture:
prompt_versioning: "系统跟踪提示词演化和性能"
A_B_testing: "对提示词变体进行受控比较以优化"
gradual_rollout: "谨慎部署提示词改进并监控性能"
fallback_mechanisms: "如果改进失败,能够恢复到以前的提示词版本"
quality_assurance:
pre_deployment_testing: "在发布前对提示词更改进行彻底评估"
performance_monitoring: "在生产中持续跟踪提示词有效性"
user_feedback_integration: "将用户洞察系统地纳入提示词开发"
expert_review: "由领域专家定期评估以验证质量"从零开始的解释:这个自我优化系统创建的提示词像生命系统一样演化。它们从基本形式开始,监控自己的性能,从反馈中学习,并持续适应以变得更加有效。这就像拥有一个能够从每次交互中学习并逐渐成为其特定目的的完美沟通工具的提示词。
高级推理技术实现
多推理路径的自洽性
class SelfConsistencyReasoning:
"""实现具有多路径探索的自洽性推理"""
def __init__(self, num_reasoning_paths: int = 5):
self.num_reasoning_paths = num_reasoning_paths
self.reasoning_templates = [
self._analytical_reasoning_template,
self._creative_reasoning_template,
self._systematic_reasoning_template,
self._intuitive_reasoning_template,
self._critical_reasoning_template
]
def generate_multiple_reasoning_paths(self, problem: str) -> List[Dict]:
"""为同一问题生成多个独立的推理路径"""
reasoning_paths = []
for i in range(self.num_reasoning_paths):
# 使用不同的推理模板以获得多样性
template_func = self.reasoning_templates[i % len(self.reasoning_templates)]
# 生成推理路径
reasoning_path = {
'path_id': i + 1,
'template_used': template_func.__name__,
'reasoning_steps': template_func(problem),
'conclusion': self._extract_conclusion(template_func(problem)),
'confidence': self._assess_path_confidence(template_func(problem))
}
reasoning_paths.append(reasoning_path)
return reasoning_paths
def synthesize_consistent_answer(self, reasoning_paths: List[Dict]) -> Dict:
"""使用一致性分析从多个推理路径综合最终答案"""
# 从所有路径中提取结论
conclusions = [path['conclusion'] for path in reasoning_paths]
# 分析一致性
consistency_analysis = self._analyze_conclusion_consistency(conclusions)
# 通过信心和一致性对路径加权
weighted_paths = self._weight_reasoning_paths(reasoning_paths, consistency_analysis)
# 生成最终综合答案
final_answer = self._synthesize_final_answer(weighted_paths, consistency_analysis)
return {
'final_answer': final_answer,
'reasoning_paths': reasoning_paths,
'consistency_analysis': consistency_analysis,
'synthesis_method': 'weighted_consistency_integration',
'overall_confidence': self._calculate_overall_confidence(weighted_paths)
}
def _analytical_reasoning_template(self, problem: str) -> List[str]:
"""分析推理方法,专注于逐步逻辑分析"""
return [
f"问题分析:{self._analyze_problem_structure(problem)}",
f"相关原则:{self._identify_relevant_principles(problem)}",
f"逻辑推演:{self._apply_logical_reasoning(problem)}",
f"验证:{self._verify_logical_consistency(problem)}",
f"结论:{self._draw_analytical_conclusion(problem)}"
]
def _creative_reasoning_template(self, problem: str) -> List[str]:
"""创造性推理方法,探索新颖的视角和方法"""
return [
f"替代视角:{self._explore_alternative_viewpoints(problem)}",
f"创造性连接:{self._identify_novel_connections(problem)}",
f"创新方法:{self._generate_creative_solutions(problem)}",
f"可行性评估:{self._assess_creative_feasibility(problem)}",
f"综合:{self._synthesize_creative_insights(problem)}"
]
def _systematic_reasoning_template(self, problem: str) -> List[str]:
"""使用结构化方法论的系统推理"""
return [
f"问题分解:{self._decompose_systematically(problem)}",
f"系统分析:{self._apply_systematic_methods(problem)}",
f"全面评估:{self._evaluate_systematically(problem)}",
f"整合:{self._integrate_systematic_findings(problem)}",
f"系统结论:{self._conclude_systematically(problem)}"
]
def _intuitive_reasoning_template(self, problem: str) -> List[str]:
"""直觉推理,结合模式识别和经验"""
return [
f"模式识别:{self._recognize_familiar_patterns(problem)}",
f"直觉洞察:{self._generate_intuitive_insights(problem)}",
f"经验应用:{self._apply_relevant_experience(problem)}",
f"直觉检查:{self._perform_intuitive_validation(problem)}",
f"直觉综合:{self._synthesize_intuitive_understanding(problem)}"
]
def _critical_reasoning_template(self, problem: str) -> List[str]:
"""批判性推理,专注于质疑假设和评估证据"""
return [
f"假设识别:{self._identify_key_assumptions(problem)}",
f"证据评估:{self._critically_evaluate_evidence(problem)}",
f"偏见检测:{self._detect_potential_biases(problem)}",
f"替代假设:{self._consider_alternative_hypotheses(problem)}",
f"批判性综合:{self._synthesize_critical_analysis(problem)}"
]
def _analyze_conclusion_consistency(self, conclusions: List[str]) -> Dict:
"""分析不同推理路径结论的一致性"""
# 简单一致性分析(实践中,将使用NLP相似度)
consistency_matrix = {}
agreement_level = 0.0
# 计算成对相似度(简化版)
for i, conclusion1 in enumerate(conclusions):
for j, conclusion2 in enumerate(conclusions[i+1:], i+1):
similarity = self._calculate_conclusion_similarity(conclusion1, conclusion2)
consistency_matrix[(i, j)] = similarity
agreement_level += similarity
if len(conclusions) > 1:
agreement_level /= len(consistency_matrix)
return {
'agreement_level': agreement_level,
'consistency_matrix': consistency_matrix,
'consensus_conclusion': self._identify_consensus_conclusion(conclusions),
'outlier_conclusions': self._identify_outlier_conclusions(conclusions, agreement_level)
}
def _synthesize_final_answer(self, weighted_paths: List[Dict], consistency_analysis: Dict) -> str:
"""综合整合所有推理路径洞察的最终答案"""
if consistency_analysis['agreement_level'] > 0.8:
# 高一致性 - 使用共识
return consistency_analysis['consensus_conclusion']
elif consistency_analysis['agreement_level'] > 0.5:
# 中等一致性 - 加权综合
return self._create_weighted_synthesis(weighted_paths)
else:
# 低一致性 - 承认不确定性并呈现多个视角
return self._create_multi_perspective_answer(weighted_paths)
# 演示的占位符实现
def _analyze_problem_structure(self, problem: str) -> str:
return f"结构化分析:{problem[:50]}..."
def _calculate_conclusion_similarity(self, conclusion1: str, conclusion2: str) -> float:
# 简化的相似度计算
words1 = set(conclusion1.lower().split())
words2 = set(conclusion2.lower().split())
if not words1 and not words2:
return 1.0
return len(words1.intersection(words2)) / len(words1.union(words2)) if words1.union(words2) else 0.0
class ReflectiveReasoning:
"""实现具有迭代优化的反思推理"""
def __init__(self):
self.reflection_criteria = {
'logical_consistency': self._check_logical_consistency,
'completeness': self._check_completeness,
'accuracy': self._check_accuracy,
'clarity': self._check_clarity,
'bias_awareness': self._check_bias_awareness
}
def reflective_reasoning_process(self, problem: str, max_iterations: int = 3) -> Dict:
"""执行具有迭代改进的反思推理"""
current_reasoning = self._initial_reasoning(problem)
reasoning_history = [current_reasoning.copy()]
for iteration in range(max_iterations):
# 反思当前推理
reflection_results = self._reflect_on_reasoning(current_reasoning)
# 如果推理令人满意,停止迭代
if reflection_results['overall_quality'] > 0.85:
break
# 基于反思优化推理
refined_reasoning = self._refine_reasoning(current_reasoning, reflection_results)
# 更新当前推理
current_reasoning = refined_reasoning
reasoning_history.append(current_reasoning.copy())
return {
'final_reasoning': current_reasoning,
'reasoning_history': reasoning_history,
'improvement_trajectory': self._analyze_improvement_trajectory(reasoning_history),
'reflection_insights': self._extract_reflection_insights(reasoning_history)
}
def _initial_reasoning(self, problem: str) -> Dict:
"""生成初始推理尝试"""
return {
'problem': problem,
'reasoning_steps': [
f"初步分析:{problem}",
f"识别关键考虑因素",
f"得出初步结论"
],
'conclusion': f"初步结论:{problem}",
'confidence': 0.6,
'iteration': 0
}
def _reflect_on_reasoning(self, reasoning: Dict) -> Dict:
"""在多个标准上反思推理质量"""
reflection_results = {}
for criterion, check_function in self.reflection_criteria.items():
score = check_function(reasoning)
reflection_results[criterion] = {
'score': score,
'feedback': self._generate_feedback(criterion, score),
'improvements': self._suggest_improvements(criterion, score, reasoning)
}
# 计算整体质量
overall_quality = np.mean([result['score'] for result in reflection_results.values()])
reflection_results['overall_quality'] = overall_quality
return reflection_results
def _refine_reasoning(self, current_reasoning: Dict, reflection_results: Dict) -> Dict:
"""基于反思反馈优化推理"""
refined_reasoning = current_reasoning.copy()
refined_reasoning['iteration'] += 1
# 基于反思应用改进
for criterion, result in reflection_results.items():
if criterion != 'overall_quality' and result['score'] < 0.7:
# 应用具体改进
refined_reasoning = self._apply_improvements(
refined_reasoning, criterion, result['improvements']
)
# 基于改进更新信心
refined_reasoning['confidence'] = min(1.0, refined_reasoning['confidence'] + 0.1)
return refined_reasoning
def _check_logical_consistency(self, reasoning: Dict) -> float:
"""检查推理的逻辑一致性"""
# 简化的一致性检查
steps = reasoning.get('reasoning_steps', [])
if len(steps) >= 3 and reasoning.get('conclusion'):
return 0.8 # 模拟分数
return 0.5
def _check_completeness(self, reasoning: Dict) -> float:
"""检查推理的完整性"""
steps = reasoning.get('reasoning_steps', [])
return min(1.0, len(steps) / 5.0) # 更多步骤 = 更完整
def _apply_improvements(self, reasoning: Dict, criterion: str, improvements: List[str]) -> Dict:
"""对推理应用具体改进"""
if criterion == 'completeness' and len(improvements) > 0:
reasoning['reasoning_steps'].extend([f"额外分析:{imp}" for imp in improvements])
elif criterion == 'logical_consistency':
reasoning['reasoning_steps'].append("执行逻辑一致性验证")
return reasoning
# 演示用法
def demonstrate_advanced_reasoning():
"""演示高级推理技术"""
problem = "一家公司的销售额在下降。可能的原因是什么,他们应该做什么?"
print("=== 自洽性推理演示 ===")
consistency_reasoner = SelfConsistencyReasoning(num_reasoning_paths=3)
# 生成多个推理路径
reasoning_paths = consistency_reasoner.generate_multiple_reasoning_paths(problem)
print(f"生成了 {len(reasoning_paths)} 条推理路径:")
for path in reasoning_paths:
print(f"路径 {path['path_id']} ({path['template_used']}): {path['conclusion']}")
# 综合一致的答案
synthesis_result = consistency_reasoner.synthesize_consistent_answer(reasoning_paths)
print(f"\n综合答案:{synthesis_result['final_answer']}")
print(f"整体置信度:{synthesis_result['overall_confidence']}")
print("\n=== 反思推理演示 ===")
reflective_reasoner = ReflectiveReasoning()
# 执行反思推理
reflection_result = reflective_reasoner.reflective_reasoning_process(problem, max_iterations=2)
print(f"迭代次数:{len(reflection_result['reasoning_history'])}")
print(f"最终推理质量改进:{reflection_result['improvement_trajectory']}")
print(f"关键洞察:{reflection_result['reflection_insights']}")
return synthesis_result, reflection_result从零开始的解释:这些高级推理技术就像让多位专家顾问独立处理同一问题(自洽性),然后让一位主综合者结合他们的洞察。反思推理就像拥有一位质量控制专家,审查你的思维过程并通过多次迭代帮助你改进它。
现实世界应用和案例研究
案例研究:医疗诊断推理链
def medical_diagnosis_reasoning_example():
"""用于医疗诊断支持的高级提示"""
medical_reasoning_template = """
# 医疗诊断推理框架
你是一位经验丰富的医生,提供诊断推理支持。
应用系统化的临床推理,同时保持适当的医疗谨慎。
## 患者表现分析
**临床情景**:{patient_presentation}
### 步骤 1:信息综合
- **主诉**:识别主要关注点
- **现病史**:分析症状模式、时间线、严重程度
- **相关既往病史**:考虑既往疾病
- **体格检查发现**:解释客观发现
- **实验室/诊断结果**:在临床背景下分析检查结果
### 步骤 2:鉴别诊断生成
使用临床推理模式:
#### 主要鉴别考虑:
1. **最可能的诊断**:[基于流行病学和表现模式]
- 支持证据:[支持此诊断的具体发现]
- 病理生理学依据:[症状/体征如何与潜在病理联系]
2. **替代诊断**:[其他重要可能性]
- 推理:[为何这些仍在考虑中]
- 区分特征:[什么有助于区分]
3. **不可遗漏的诊断**:[需要排除的严重状况]
- 临床意义:[为何排除至关重要]
- 排除策略:[如何安全排除]
### 步骤 3:诊断工作推理
**建议的下一步**:
- **紧急检查/干预**:[基于急迫性和鉴别诊断]
- **确认性研究**:[建立确定诊断]
- **监测参数**:[在评估期间追踪什么]
**风险分层**:[患者急迫性和处置考虑]
### 步骤 4:临床决策
**诊断置信度评估**:
- 高置信度诊断:[附支持理由]
- 中等置信度考虑:[需要进一步评估]
- 低概率但重要的排除:[安全考虑]
**建议综合**:
[将诊断推理整合为可操作的临床计划]
## 重要医疗免责声明
- 此分析仅用于教育/决策支持目的
- 临床判断和直接患者评估仍然至关重要
- 个体患者因素可能显著改变标准方法
- 始终考虑当地实践指南和机构协议
**临床推理摘要**:[诊断方法的简明综合]
"""
# 示例患者案例
patient_case = """
45岁男性患者来急诊科就诊,表现为:
- 主诉:严重胸痛2小时
- 疼痛描述为压榨性、胸骨下、放射至左臂
- 伴有出汗、恶心、呼吸短促
- 无明显既往病史
- 生命体征:血压 160/95,心率 110,呼吸频率 22,室内空气血氧饱和度 94%
- 心电图显示导联 II、III、aVF ST段抬高
- 初始肌钙蛋白升高为 2.5 ng/mL
"""
formatted_prompt = medical_reasoning_template.format(patient_presentation=patient_case)
print("医疗诊断推理提示:")
print("=" * 60)
print(formatted_prompt)
return formatted_prompt
### 案例研究:法律分析推理链
def legal_analysis_reasoning_example():
"""用于法律分析的高级提示"""
legal_reasoning_template = """
# 法律分析推理框架
你是一位经验丰富的法律分析师,提供系统化的案例分析。
应用严格的法律推理方法论,同时承认局限性。
## 案例分析结构
**法律问题**:{legal_question}
**管辖区**:{applicable_jurisdiction}
**案件背景**:{factual_background}
### 步骤 1:问题识别和框架
**主要法律问题**:
1. [识别需要分析的核心法律问题]
2. [框架影响主要问题的子问题]
3. [识别程序法与实体法考虑]
**法律框架选择**:
- 适用法律领域:[宪法、制定法、普通法等]
- 管辖区特定考虑:[联邦与州、巡回法庭差异]
- 程序态势:[审判、上诉、审前动议等]
### 步骤 2:规则识别和分析
**控制法律**:
- **制定法条款**:[相关法规及关键语言]
- **案例法先例**:[控制性和说服性权威]
- **监管框架**:[适用的行政规则]
**规则综合**:
[将多个权威整合为连贯的法律标准]
### 步骤 3:事实到法律的应用
**事实分析**:
- **无争议事实**:[明确确立的事实要素]
- **争议事实**:[事实争议领域及其法律意义]
- **缺失信息**:[完整分析所需的额外事实]
**法律应用**:
- 要素逐一分析:[系统地将法律应用于事实]
- 类比推理:[与先例案例比较]
- 政策考虑:[潜在法律原则和社会利益]
### 步骤 4:反驳论点分析
**对立立场**:
- 最强反驳论点:[最有说服力的对立法律理论]
- 事实争议:[不同事实解释如何影响结果]
- 替代法律框架:[法律问题的其他方法]
**回应策略**:
- 反驳论点反驳:[对对立立场的系统回应]
- 区分先例:[如何区分相反案例]
- 政策反回应:[为何政策支持你的分析]
### 步骤 5:结论和建议
**法律分析摘要**:
- 最可能的结果:[基于法律分析]
- 置信度评估:[法律立场的强度]
- 替代情景:[其他可能结果及其可能性]
**战略建议**:
- 法律策略影响:[分析如何影响案件方法]
- 额外研究需求:[需要进一步调查的领域]
- 风险评估:[潜在不利结果和缓解]
## 法律免责声明
- 分析基于一般法律原则和可用信息
- 具体管辖区差异可能显著影响结果
- 事实发展或法律变化可能改变分析
- 这构成法律研究,而非法律建议从零开始的解释:这个法律推理框架反映了经验丰富的律师如何思考复杂案例——系统地识别问题、研究适用法律、将事实应用于法律标准、考虑对立论点,并得出合理结论,同时对不确定性进行适当警告。
高级模式识别和元提示
基于模式的提示词生成
class PromptPatternLibrary:
"""不同推理任务的经过验证的提示词模式库"""
def __init__(self):
self.patterns = {
'analytical_reasoning': {
'structure': "问题 → 分析 → 综合 → 验证 → 结论",
'key_elements': ['系统化分解', '逻辑进展', '证据评估'],
'use_cases': ['科学问题', '数据分析', '系统评估'],
'template': """
# 分析推理框架
**问题**:{problem_statement}
## 系统分析
1. **问题分解**:分解为关键组件
2. **证据收集**:收集相关数据和信息
3. **逻辑分析**:对每个组件应用推理
4. **综合**:将发现整合为连贯理解
5. **验证**:检查推理有效性和完整性
## 结论
[带置信度评估的综合答案]
"""
},
'creative_exploration': {
'structure': "发散 → 探索 → 收敛 → 选择 → 优化",
'key_elements': ['想法生成', '视角转换', '创造性连接'],
'use_cases': ['创新', '设计思维', '问题重构'],
'template': """
# 创意探索框架
**挑战**:{creative_challenge}
## 发散思维
- **多重视角**:从不同视角考虑
- **类比思维**:与其他领域建立联系
- **假设挑战**:质疑潜在假设
## 收敛综合
- **想法整合**:结合有前景的概念
- **可行性评估**:评估实际实施
- **创新优化**:发展最有前景的方向
## 创意解决方案
[带实施考虑的新颖方法]
"""
},
'strategic_decision': {
'structure': "上下文 → 选项 → 分析 → 权衡 → 决策 → 实施",
'key_elements': ['利益相关者分析', '风险评估', '结果预测'],
'use_cases': ['商业战略', '政策决定', '资源分配'],
'template': """
# 战略决策框架
**决策上下文**:{decision_scenario}
**利益相关者**:{key_stakeholders}
**约束**:{limitations_and_requirements}
## 选项分析
对于每个主要选项:
- **优势**:积极结果和优点
- **风险**:潜在负面后果
- **所需资源**:成本和资源影响
- **时间线**:实施时间框架
- **成功概率**:实现目标的可能性
## 权衡分析
- **关键权衡**:最重要的竞争因素
- **利益相关者影响**:每个选项如何影响不同方
- **长期与短期**:时间考虑平衡
## 推荐决策
[带理由和实施计划的战略选择]
"""
},
'diagnostic_reasoning': {
'structure': "症状 → 假设 → 测试 → 排除 → 诊断",
'key_elements': ['模式识别', '假设测试', '系统排除'],
'use_cases': ['故障排除', '医疗诊断', '根本原因分析'],
'template': """
# 诊断推理框架
**呈现问题**:{problem_symptoms}
**上下文**:{background_information}
## 假设生成
基于症状和上下文:
1. **最可能的原因**:高概率解释
2. **替代可能性**:其他潜在原因
3. **关键排除**:需要排除的严重问题
## 系统调查
- **信息收集**:需要的额外数据
- **测试策略**:如何确认/排除假设
- **模式分析**:什么模式支持每个假设
## 诊断结论
- **主要诊断**:最有支持的解释
- **鉴别考虑**:需要监测的其他可能性
- **行动计划**:基于诊断的下一步
"""
}
}
def select_optimal_pattern(self, task_description: str, context: Dict = None) -> Dict:
"""智能选择最合适的提示词模式"""
# 分析任务特征
task_analysis = self._analyze_task_characteristics(task_description, context)
# 对每个模式的适合度评分
pattern_scores = {}
for pattern_name, pattern_data in self.patterns.items():
score = self._calculate_pattern_fit_score(task_analysis, pattern_data)
pattern_scores[pattern_name] = score
# 选择最适合的模式
best_pattern = max(pattern_scores, key=pattern_scores.get)
return {
'selected_pattern': best_pattern,
'pattern_data': self.patterns[best_pattern],
'fit_score': pattern_scores[best_pattern],
'task_analysis': task_analysis,
'alternative_patterns': {k: v for k, v in pattern_scores.items() if k != best_pattern}
}
def _analyze_task_characteristics(self, task_description: str, context: Dict = None) -> Dict:
"""分析任务以确定最佳推理方法"""
task_lower = task_description.lower()
characteristics = {
'complexity': 'moderate',
'creativity_required': 0.5,
'analysis_depth': 0.5,
'decision_making': 0.5,
'problem_solving': 0.5,
'domain': 'general'
}
# 检测复杂度指标
complexity_indicators = ['complex', 'multiple factors', 'interdependent', 'nuanced', '复杂', '多个因素', '相互依赖', '微妙']
if any(indicator in task_lower for indicator in complexity_indicators):
characteristics['complexity'] = 'high'
elif any(word in task_lower for word in ['simple', 'straightforward', 'basic', '简单', '直接', '基础']):
characteristics['complexity'] = 'low'
# 检测创造力需求
creative_indicators = ['creative', 'innovative', 'novel', 'design', 'brainstorm', 'alternative', '创意', '创新', '新颖', '设计', '头脑风暴', '替代']
characteristics['creativity_required'] = sum(0.2 for indicator in creative_indicators
if indicator in task_lower)
# 检测分析需求
analytical_indicators = ['analyze', 'evaluate', 'assess', 'examine', 'systematic', '分析', '评估', '审查', '检查', '系统']
characteristics['analysis_depth'] = sum(0.2 for indicator in analytical_indicators
if indicator in task_lower)
# 检测决策需求
decision_indicators = ['decide', 'choose', 'select', 'recommend', 'strategy', '决定', '选择', '推荐', '战略']
characteristics['decision_making'] = sum(0.2 for indicator in decision_indicators
if indicator in task_lower)
# 检测问题解决需求
problem_indicators = ['problem', 'issue', 'challenge', 'troubleshoot', 'diagnose', '问题', '挑战', '故障排除', '诊断']
characteristics['problem_solving'] = sum(0.2 for indicator in problem_indicators
if indicator in task_lower)
return characteristics
def _calculate_pattern_fit_score(self, task_analysis: Dict, pattern_data: Dict) -> float:
"""计算模式与分析任务的匹配程度"""
base_score = 0.5
# 模式特定评分逻辑
if 'analytical' in pattern_data.get('structure', ''):
base_score += task_analysis['analysis_depth'] * 0.3
if 'creative' in pattern_data.get('structure', ''):
base_score += task_analysis['creativity_required'] * 0.3
if 'decision' in pattern_data.get('structure', ''):
base_score += task_analysis['decision_making'] * 0.3
if 'diagnostic' in pattern_data.get('structure', ''):
base_score += task_analysis['problem_solving'] * 0.3
return min(1.0, base_score)
def generate_custom_prompt(self, task_description: str, context: Dict = None) -> str:
"""基于最优模式选择生成定制提示词"""
pattern_selection = self.select_optimal_pattern(task_description, context)
selected_pattern = pattern_selection['pattern_data']
# 使用任务特定元素定制模板
template = selected_pattern['template']
# 填充模板占位符
customized_prompt = template.format(
problem_statement=task_description,
creative_challenge=task_description,
decision_scenario=task_description,
problem_symptoms=task_description
)
# 基于上下文添加元指令
if context and context.get('expertise_level') == 'expert':
customized_prompt += "\n\n*注意:提供专家级深度和技术精度。*"
elif context and context.get('expertise_level') == 'beginner':
customized_prompt += "\n\n*注意:清晰解释概念,避免过多技术术语。*"
return customized_prompt
# 基于模式的提示词生成演示
def demonstrate_pattern_selection():
"""演示不同任务的智能模式选择"""
pattern_library = PromptPatternLibrary()
test_tasks = [
"我们如何创新产品设计以更好地服务客户需求?",
"分析销售额下降的数据并识别根本原因",
"我们的软件系统间歇性崩溃——帮助诊断问题",
"我们应该扩展到国际市场还是专注于国内增长?"
]
print("模式选择演示:")
print("=" * 50)
for task in test_tasks:
print(f"\n任务:{task}")
selection = pattern_library.select_optimal_pattern(task)
print(f"选定模式:{selection['selected_pattern']}")
print(f"适合度分数:{selection['fit_score']:.2f}")
print(f"任务分析:{selection['task_analysis']}")
# 生成定制提示词
custom_prompt = pattern_library.generate_custom_prompt(task)
print(f"生成的提示词预览:{custom_prompt[:200]}...")
print("-" * 30)从零开始的解释:这个模式库就像拥有一位能够分析任何任务并自动选择最佳推理框架的大师级提示词设计师。它不使用一刀切的提示词,而是将提示词结构与特定任务的实际需求相匹配——创新的创意探索、数据问题的分析推理、故障排除的诊断框架等。
评估和优化框架
全面的提示词评估系统
import numpy as np
from typing import Dict, List, Tuple, Optional
from dataclasses import dataclass
from collections import defaultdict
@dataclass
class PromptEvaluationResult:
"""提示词的全面评估结果"""
prompt_id: str
prompt_text: str
evaluation_metrics: Dict[str, float]
response_quality_samples: List[float]
user_feedback_data: Dict
optimization_recommendations: List[str]
overall_score: float
class PromptEvaluationFramework:
"""用于评估和优化提示词的全面框架"""
def __init__(self):
self.evaluation_criteria = {
'clarity': self._evaluate_clarity,
'completeness': self._evaluate_completeness,
'effectiveness': self._evaluate_effectiveness,
'consistency': self._evaluate_consistency,
'adaptability': self._evaluate_adaptability,
'efficiency': self._evaluate_efficiency
}
self.benchmark_data = {}
self.evaluation_history = []
def comprehensive_prompt_evaluation(self, prompt_text: str,
test_cases: List[Tuple[str, str]],
user_feedback: Dict = None,
context: Dict = None) -> PromptEvaluationResult:
"""执行提示词有效性的全面评估"""
# 生成评估指标
evaluation_metrics = {}
for criterion, eval_function in self.evaluation_criteria.items():
score = eval_function(prompt_text, test_cases, user_feedback, context)
evaluation_metrics[criterion] = score
# 模拟响应质量采样(实践中,将使用实际LLM响应)
response_quality_samples = self._simulate_response_quality(prompt_text, test_cases)
# 生成优化建议
optimization_recommendations = self._generate_optimization_recommendations(
evaluation_metrics, prompt_text
)
# 计算整体分数
overall_score = self._calculate_overall_score(evaluation_metrics)
# 创建全面结果
result = PromptEvaluationResult(
prompt_id=f"prompt_{len(self.evaluation_history)}",
prompt_text=prompt_text,
evaluation_metrics=evaluation_metrics,
response_quality_samples=response_quality_samples,
user_feedback_data=user_feedback or {},
optimization_recommendations=optimization_recommendations,
overall_score=overall_score
)
self.evaluation_history.append(result)
return result
def _evaluate_clarity(self, prompt_text: str, test_cases: List,
user_feedback: Dict, context: Dict) -> float:
"""评估提示词的清晰度和可理解性"""
clarity_indicators = {
'structure_clarity': self._assess_structural_clarity(prompt_text),
'instruction_clarity': self._assess_instruction_clarity(prompt_text),
'example_clarity': self._assess_example_clarity(prompt_text),
'language_accessibility': self._assess_language_accessibility(prompt_text)
}
# 对清晰度的不同方面加权
weighted_score = (
clarity_indicators['structure_clarity'] * 0.3 +
clarity_indicators['instruction_clarity'] * 0.4 +
clarity_indicators['example_clarity'] * 0.2 +
clarity_indicators['language_accessibility'] * 0.1
)
return weighted_score
def _evaluate_completeness(self, prompt_text: str, test_cases: List,
user_feedback: Dict, context: Dict) -> float:
"""评估提示词是否提供完整指导"""
completeness_factors = {
'instruction_coverage': self._assess_instruction_coverage(prompt_text),
'context_provision': self._assess_context_provision(prompt_text),
'example_sufficiency': self._assess_example_sufficiency(prompt_text),
'output_specification': self._assess_output_specification(prompt_text)
}
return np.mean(list(completeness_factors.values()))
def _evaluate_effectiveness(self, prompt_text: str, test_cases: List,
user_feedback: Dict, context: Dict) -> float:
"""评估提示词生成期望结果的有效性"""
if not test_cases:
return 0.5 # 没有测试数据可用
# 基于提示词特征模拟有效性
effectiveness_score = 0.5 # 基础分数
# 良好推理指导加分
if any(phrase in prompt_text.lower() for phrase in ['step by step', 'think through', 'analyze', '逐步', '思考', '分析']):
effectiveness_score += 0.2
# 角色规范加分
if any(phrase in prompt_text.lower() for phrase in ['you are', 'as an expert', 'acting as', '你是', '作为专家']):
effectiveness_score += 0.15
# 示例加分
if 'example' in prompt_text.lower() or 'for instance' in prompt_text.lower() or '示例' in prompt_text or '例如' in prompt_text:
effectiveness_score += 0.15
# 如果可用,纳入用户反馈
if user_feedback and 'satisfaction_score' in user_feedback:
effectiveness_score = (effectiveness_score + user_feedback['satisfaction_score']) / 2
return min(1.0, effectiveness_score)
def _evaluate_consistency(self, prompt_text: str, test_cases: List,
user_feedback: Dict, context: Dict) -> float:
"""评估提示词在不同输入上的性能一致性"""
if len(test_cases) < 3:
return 0.5 # 一致性评估的数据不足
# 模拟一致性分数(实践中,将分析实际响应变化)
response_scores = self._simulate_response_quality(prompt_text, test_cases)
# 计算一致性为方差的倒数
consistency_score = 1 / (1 + np.var(response_scores))
return consistency_score
def _evaluate_adaptability(self, prompt_text: str, test_cases: List,
user_feedback: Dict, context: Dict) -> float:
"""评估提示词对不同上下文和输入的适应性"""
adaptability_indicators = {
'context_sensitivity': self._assess_context_sensitivity(prompt_text),
'input_flexibility': self._assess_input_flexibility(prompt_text),
'domain_transferability': self._assess_domain_transferability(prompt_text)
}
return np.mean(list(adaptability_indicators.values()))
def _evaluate_efficiency(self, prompt_text: str, test_cases: List,
user_feedback: Dict, context: Dict) -> float:
"""评估提示词效率(信息密度和标记经济性)"""
# 信息密度分数
word_count = len(prompt_text.split())
information_density = self._assess_information_density(prompt_text)
# 最佳长度评估(不太短也不太长)
length_efficiency = 1 - abs(word_count - 150) / 300 # 最佳约150字
length_efficiency = max(0.1, length_efficiency)
# 结合指标
efficiency_score = (information_density * 0.6 + length_efficiency * 0.4)
return efficiency_score
def _generate_optimization_recommendations(self, evaluation_metrics: Dict,
prompt_text: str) -> List[str]:
"""生成提示词改进的具体建议"""
recommendations = []
# 清晰度建议
if evaluation_metrics['clarity'] < 0.7:
if len(prompt_text.split('\n')) < 3:
recommendations.append("使用清晰的章节和格式添加更多结构")
if 'example' not in prompt_text.lower() and '示例' not in prompt_text:
recommendations.append("包含具体示例以说明期望的方法")
if not any(phrase in prompt_text.lower() for phrase in ['step', 'process', 'approach', '步骤', '过程', '方法']):
recommendations.append("添加明确的推理或过程指导")
# 完整性建议
if evaluation_metrics['completeness'] < 0.7:
if 'you are' not in prompt_text.lower() and '你是' not in prompt_text:
recommendations.append("添加角色规范以建立上下文")
if not any(phrase in prompt_text.lower() for phrase in ['format', 'structure', 'organize', '格式', '结构', '组织']):
recommendations.append("指定期望的输出格式或结构")
# 有效性建议
if evaluation_metrics['effectiveness'] < 0.7:
recommendations.append("添加更具体的任务指导和成功标准")
recommendations.append("包含质量检查点或验证步骤")
# 一致性建议
if evaluation_metrics['consistency'] < 0.7:
recommendations.append("添加更明确的指令以减少响应变异性")
recommendations.append("包含一致性检查或验证步骤")
# 适应性建议
if evaluation_metrics['adaptability'] < 0.7:
recommendations.append("使指令对不同输入类型更灵活")
recommendations.append("添加处理边缘情况或变化的指导")
# 效率建议
if evaluation_metrics['efficiency'] < 0.7:
if len(prompt_text.split()) > 300:
recommendations.append("通过删除冗余信息减少提示词长度")
elif len(prompt_text.split()) < 50:
recommendations.append("通过更详细的指导扩展提示词")
return recommendations
def _calculate_overall_score(self, evaluation_metrics: Dict) -> float:
"""从单个指标计算加权整体分数"""
weights = {
'clarity': 0.20,
'completeness': 0.20,
'effectiveness': 0.25,
'consistency': 0.15,
'adaptability': 0.10,
'efficiency': 0.10
}
overall_score = sum(evaluation_metrics[metric] * weight
for metric, weight in weights.items()
if metric in evaluation_metrics)
return overall_score
# 特定评估的辅助方法
def _assess_structural_clarity(self, prompt_text: str) -> float:
"""评估提示词结构的清晰度"""
lines = prompt_text.split('\n')
has_sections = any(line.startswith('#') or line.isupper() for line in lines)
has_bullets = any(line.strip().startswith('-') or line.strip().startswith('*')
for line in lines)
structure_score = 0.5
if has_sections: structure_score += 0.3
if has_bullets: structure_score += 0.2
return min(1.0, structure_score)
def _assess_instruction_clarity(self, prompt_text: str) -> float:
"""评估指令的清晰度"""
imperative_verbs = ['analyze', 'explain', 'describe', 'identify', 'compare', 'evaluate', '分析', '解释', '描述', '识别', '比较', '评估']
clear_instructions = sum(1 for verb in imperative_verbs if verb in prompt_text.lower())
return min(1.0, clear_instructions / 3.0)
def _simulate_response_quality(self, prompt_text: str, test_cases: List) -> List[float]:
"""模拟用于评估目的的响应质量分数"""
# 由提示词特征影响的基础质量
base_quality = 0.5
if 'step by step' in prompt_text.lower() or '逐步' in prompt_text: base_quality += 0.15
if 'example' in prompt_text.lower() or '示例' in prompt_text: base_quality += 0.10
if 'you are' in prompt_text.lower() or '你是' in prompt_text: base_quality += 0.10
if len(prompt_text.split()) > 100: base_quality += 0.05
# 生成带有一些变化的模拟分数
quality_scores = []
for _ in range(len(test_cases)):
score = base_quality + np.random.normal(0, 0.1) # 添加一些噪声
quality_scores.append(max(0.0, min(1.0, score)))
return quality_scores
# 全面提示词评估的演示
def demonstrate_prompt_evaluation():
"""演示全面的提示词评估系统"""
evaluator = PromptEvaluationFramework()
# 具有不同特征的测试提示词
test_prompts = [
"解决这个问题:{problem}",
"""你是一位专家分析师。请逐步分析以下问题:
1. 将问题分解为关键组件
2. 识别相关原则和方法
3. 对每个组件应用系统推理
4. 将你的发现综合为全面的解决方案
问题:{problem}""",
"""# 高级问题解决框架
## 你的角色
你是一位经验丰富的问题解决顾问,具有深厚的分析技能。
## 方法论
1. **问题分析**:理解核心问题和上下文
2. **信息收集**:识别哪些信息可用以及缺少什么
3. **解决方案生成**:开发多个潜在方法
4. **评估**:评估每种方法的优缺点
5. **建议**:选择最有前景的解决方案并说明理由
## 示例过程
对于像销售额下降这样的业务问题:
1. 分析销售数据模式和趋势
2. 收集客户反馈和市场信息
3. 生成解决方案,如改进营销、产品更改、价格调整
4. 评估每个解决方案的可行性和影响
5. 推荐最高影响、最可行的解决方案
## 质量标准
- 为所有结论提供清晰的推理
- 考虑多个视角和替代方案
- 承认局限性和不确定性
- 专注于可操作的建议
## 要解决的问题
{problem}"""
]
# 示例测试案例
test_cases = [
("什么导致客户流失?", "保留因素分析"),
("我们如何提高团队生产力?", "生产力改进策略"),
("为什么我们的产品卖得不好?", "市场分析和改进建议")
]
print("提示词评估演示:")
print("=" * 60)
for i, prompt in enumerate(test_prompts, 1):
print(f"\n提示词 {i} 评估:")
print("-" * 30)
# 评估提示词
evaluation_result = evaluator.comprehensive_prompt_evaluation(
prompt_text=prompt,
test_cases=test_cases,
user_feedback={'satisfaction_score': 0.7 + i * 0.1} # 模拟反馈
)
# 显示结果
print(f"整体分数:{evaluation_result.overall_score:.3f}")
print("详细指标:")
for metric, score in evaluation_result.evaluation_metrics.items():
print(f" {metric}: {score:.3f}")
print(f"平均响应质量:{np.mean(evaluation_result.response_quality_samples):.3f}")
if evaluation_result.optimization_recommendations:
print("优化建议:")
for rec in evaluation_result.optimization_recommendations[:3]: # 显示前3个
print(f" • {rec}")
print()
return evaluator.evaluation_history从零开始的解释:这个评估框架就像拥有一个提示词工程专家团队系统地评估提示词质量的每个方面。它关注清晰度(是否易于理解?)、完整性(是否提供足够的指导?)、有效性(是否运作良好?)、一致性(是否可靠运作?)、适应性(是否处理不同情况?)和效率(是否简洁但完整?)。
系统不仅对提示词评分,还提供具体可操作的改进建议——就像拥有一位个人提示词工程教练。
实践练习和实施挑战
练习 1:思维链实现
目标:构建复杂的思维链推理系统
# 你的实施挑战
class ChainOfThoughtBuilder:
"""构建和定制思维链推理提示词"""
def __init__(self):
# TODO: 初始化推理组件
self.reasoning_steps = []
self.verification_checks = []
self.meta_cognitive_prompts = []
def build_reasoning_chain(self, problem_type: str, complexity: str) -> str:
"""为特定问题类型构建定制的推理链"""
# TODO: 实现智能推理链构建
pass
def add_verification_layer(self, reasoning_chain: str) -> str:
"""为推理链添加验证和质量检查"""
# TODO: 实现推理验证
pass
def optimize_chain_performance(self, feedback_data: List[Dict]) -> str:
"""基于性能反馈优化推理链"""
# TODO: 实现基于性能的优化
pass
# 测试你的实现
builder = ChainOfThoughtBuilder()
# 为不同问题类型构建推理链
# 使用各种复杂度级别进行测试
# 基于模拟反馈进行优化实践练习和实施挑战
练习 2:自适应提示词演化
目标:创建基于性能自动改进提示词的系统
class PromptEvolutionSystem:
"""用于自动演化和改进提示词的系统"""
def __init__(self):
# TODO: 初始化演化组件
self.prompt_population = []
self.mutation_strategies = []
self.fitness_evaluator = None
def evolve_prompt_generation(self, base_prompts: List[str],
generations: int = 10) -> List[str]:
"""在多代中演化提示词种群"""
# TODO: 实现演化式提示词改进
pass
def evaluate_prompt_fitness(self, prompt: str, test_cases: List) -> float:
"""评估提示词在测试案例上的表现"""
# TODO: 实现适应度评估
pass
def apply_intelligent_mutations(self, prompt: str) -> str:
"""应用智能变异来改进提示词"""
# TODO: 实现变异策略
pass
# 测试你的演化系统
evolution_system = PromptEvolutionSystem()练习 3:元提示框架
目标:构建能够为特定任务生成其他提示词的提示词
class MetaPromptGenerator:
"""使用元提示技术生成任务特定的提示词"""
def __init__(self):
# TODO: 初始化元提示组件
self.pattern_library = {}
self.task_analyzer = None
self.prompt_templates = {}
def analyze_task_requirements(self, task_description: str) -> Dict:
"""分析任务以确定最佳提示词特征"""
# TODO: 实现任务分析
pass
def generate_optimal_prompt(self, task_requirements: Dict) -> str:
"""基于任务需求生成最优提示词"""
# TODO: 实现提示词生成
pass
def validate_prompt_quality(self, generated_prompt: str, task: str) -> Dict:
"""验证生成的提示词的质量"""
# TODO: 实现质量验证
pass
# 测试你的元提示生成器
meta_generator = MetaPromptGenerator()与上下文工程框架的整合
上下文组装管道中的提示词工程
def integrate_prompt_engineering_with_context():
"""演示高级提示与上下文组装的整合"""
# 作为上下文组装一部分的高级提示词模板
context_aware_prompts = {
'analytical_with_knowledge': """
# 专家分析框架
你是一位可以访问相关知识来源的领域专家。
## 可用上下文
{retrieved_knowledge}
## 分析方法
1. **知识整合**:将提供的信息与你的专业知识综合
2. **差距分析**:识别哪些额外信息可能有帮助
3. **系统推理**:应用结构化的分析思维
4. **基于证据的结论**:在可用证据中建立建议
## 你的任务
{user_query}
## 质量标准
- 引用提供的上下文中的具体信息
- 在适当的地方承认局限性或不确定性
- 为所有结论提供清晰的推理
- 如果相关,建议进一步调查的领域
""",
'creative_with_constraints': """
# 创意解决方案框架
## 创意挑战
{user_query}
## 可用资源与上下文
{retrieved_knowledge}
## 约束与需求
{task_constraints}
## 创意过程
1. **灵感收集**:从提供的上下文中获取洞察
2. **约束整合**:在给定限制内创造性地工作
3. **发散探索**:生成多种创意方法
4. **可行性评估**:评估实际实施
5. **创新综合**:将最佳元素组合成新颖的解决方案
## 成功标准
- 尚未广泛使用的新颖方法
- 尊重所有声明的约束和要求
- 基于可用上下文的洞察
- 提供清晰的实施路径
"""
}
return context_aware_prompts
# 基于上下文的动态提示词选择示例
def select_optimal_prompt_for_context(query: str, context_type: str,
available_knowledge: str) -> str:
"""基于查询和上下文特征选择和定制提示词"""
prompt_templates = integrate_prompt_engineering_with_context()
# 分析查询特征
if any(word in query.lower() for word in ['analyze', 'evaluate', 'assess', '分析', '评估']):
base_template = prompt_templates['analytical_with_knowledge']
elif any(word in query.lower() for word in ['create', 'design', 'innovate', '创建', '设计', '创新']):
base_template = prompt_templates['creative_with_constraints']
else:
# 默认分析方法
base_template = prompt_templates['analytical_with_knowledge']
# 使用实际上下文定制模板
customized_prompt = base_template.format(
retrieved_knowledge=available_knowledge,
user_query=query,
task_constraints="在提供的上下文内工作并保持准确性"
)
return customized_prompt从零开始的解释:这种整合显示了高级提示技术如何成为更大的上下文工程系统的一部分。我们不使用静态提示词,而是根据查询类型、可用上下文和任务需求进行动态提示词选择。
研究连接和高级应用
与上下文工程研究的连接
思维链和上下文处理(§4.2):
- 我们的推理链实现直接扩展了综述中的CoT研究
- 与自洽性和反思机制的整合
- 高级推理指导作为上下文处理管道的一部分
动态上下文组装整合:
- 提示词成为上下文组装中的智能组件
- 基于信息需求分析的任务感知提示词选择
- 推理指导与知识检索优化整合
超越当前研究的新贡献
自适应提示词演化:我们的演化提示词优化代表了对通过性能反馈和系统变异策略自我改进的提示词的新颖研究。
元认知提示:将元推理整合到提示词设计中,超越了当前的CoT研究,创建了能够监控和改进自己推理过程的提示词。
上下文感知的提示词选择:基于可用上下文和任务特征的动态提示词生成代表了提示词工程的新范式。
性能基准和评估
高级提示词性能指标
class AdvancedPromptBenchmarking:
"""高级提示词技术的全面基准测试系统"""
def __init__(self):
self.benchmark_tasks = {
'reasoning_complexity': [
"解决这个逻辑谜题:三个朋友Alice、Bob和Carol...",
"分析这个场景中的因果关系...",
"这个决定的道德影响是什么..."
],
'knowledge_integration': [
"给定这些技术信息,解释如何...",
"综合多篇研究论文的洞察来...",
"应用领域专业知识评估这种情况..."
],
'creative_problem_solving': [
"为...设计创新解决方案",
"从完全不同的视角重新构想这个过程...",
"为这个挑战生成新颖方法..."
]
}
def benchmark_prompt_techniques(self, prompt_variants: Dict[str, str]) -> Dict:
"""比较不同提示词技术的性能"""
results = {}
for technique_name, prompt_template in prompt_variants.items():
technique_scores = {}
for task_category, tasks in self.benchmark_tasks.items():
category_scores = []
for task in tasks:
# 模拟性能评估
score = self._evaluate_prompt_on_task(prompt_template, task)
category_scores.append(score)
technique_scores[task_category] = {
'average_score': np.mean(category_scores),
'consistency': 1 / (1 + np.std(category_scores)),
'individual_scores': category_scores
}
results[technique_name] = technique_scores
return results
def _evaluate_prompt_on_task(self, prompt_template: str, task: str) -> float:
"""模拟特定任务上的提示词性能评估"""
# 基于提示词特征模拟评分
base_score = 0.5
# 推理指导加分
if any(phrase in prompt_template.lower() for phrase in
['step by step', 'systematic', 'analyze', 'reasoning', '逐步', '系统', '分析', '推理']):
base_score += 0.2
# 角色规范加分
if any(phrase in prompt_template.lower() for phrase in
['you are', 'expert', 'specialist', '你是', '专家', '专业人士']):
base_score += 0.15
# 结构加分
if len(prompt_template.split('\n')) >= 5:
base_score += 0.1
# 如果提示词过于简单,任务复杂度惩罚
if len(prompt_template.split()) < 50 and 'complex' in task.lower():
base_score -= 0.15
# 添加真实变化
score = base_score + np.random.normal(0, 0.08)
return max(0.0, min(1.0, score))
# 对不同提示方法进行基准测试
def run_prompt_technique_benchmark():
"""运行不同提示词技术的全面基准测试"""
benchmarker = AdvancedPromptBenchmarking()
prompt_variants = {
'basic_instruction': "请 {task}",
'chain_of_thought': """
让我们逐步思考:
1. 首先,理解所问的问题
2. 将问题分解为组件
3. 应用相关知识和推理
4. 综合全面的答案
任务:{task}
""",
'expert_role_cot': """
你是这个领域拥有深厚知识的专家。
请系统地处理:
1. 分析核心挑战
2. 应用你的专业知识和经验
3. 考虑多个视角
4. 提供充分推理的解决方案
挑战:{task}
""",
'reflective_reasoning': """
你是一位仔细思考并检查自己推理的专家。
流程:
1. 初步分析和方法
2. 应用系统推理
3. 检查逻辑一致性
4. 考虑替代视角
5. 优化并最终确定响应
对于每个步骤,简要解释你的推理。
任务:{task}
记住验证你的逻辑并考虑是否有更好的方法。
"""
}
# 运行基准测试
results = benchmarker.benchmark_prompt_techniques(prompt_variants)
print("提示词技术基准测试结果:")
print("=" * 50)
for technique, scores in results.items():
print(f"\n{technique.upper()}:")
overall_average = np.mean([category['average_score']
for category in scores.values()])
print(f" 整体平均:{overall_average:.3f}")
for category, metrics in scores.items():
print(f" {category}: {metrics['average_score']:.3f} "
f"(一致性: {metrics['consistency']:.3f})")
return results
# 执行基准测试
benchmark_results = run_prompt_technique_benchmark()从零开始的解释:这个基准测试系统就像为不同的提示方法提供标准化测试。它评估每种技术在不同类型任务(推理、知识整合、创意问题解决)上的表现,并衡量平均性能和一致性。
总结和下一步
掌握的核心概念
高级推理架构:
- 带有系统逐步指导的思维链推理
- 探索多条推理路径的思维树
- 整合互连概念的思维图
- 通过多次推理尝试实现自洽性
- 带有迭代改进的反思推理
战略性提示词设计:
- 用于上下文激活的基于角色的提示
- 带有智能示例选择的小样本学习
- 用于生成任务特定提示词的元提示
- 基于模式的提示词生成和定制
优化和演化:
- 通过性能反馈实现自动化提示词演化
- 全面的评估框架
- 多维度的性能基准测试
- 通过系统优化实现持续改进
软件 3.0 整合
提示词:引导复杂推理过程的高级模板 编程:自动优化提示词有效性的演化系统 协议:基于性能自适应的自我改进推理系统
实施技能
- 设计和实现复杂的推理链架构
- 构建自动化提示词优化和演化系统
- 创建全面的提示词评估和基准测试框架
- 将高级提示与更广泛的上下文工程系统整合
研究基础
直接实现推理指导研究(§4.1),并在以下方面进行新颖扩展:
- 演化提示词优化
- 元认知推理整合
- 基于上下文特征的动态提示词选择
- 性能驱动的提示词优化系统
下一模块:02_external_knowledge.md - 深入探讨RAG基础和外部知识整合,在提示词工程的基础上创建能够动态访问和整合大量知识来源的系统。
本模块将提示词工程从简单的指令编写转变为复杂的推理系统设计学科,为智能上下文编排和动态知识整合奠定基础。