|
通过迭代评估与优化实现自我改进的模式。
评估模式使智能体能够评估和改进自身输出,从单次生成转向迭代优化循环。
生成 → 评估 → 批评 → 优化 → 输出
↑ │
└──────────────────────────────┘
智能体通过自我批评评估和改进自身输出。
python
def reflectandrefine(task: str, criteria: list[str], max_iterations: int = 3) -> str:
通过反思循环生成内容。
output = llm(f完成以下任务:\n{task})
for i in range(max_iterations):
# 自我批评
critique = llm(f
根据以下标准评估此输出:{criteria}
输出:{output}
以JSON格式对每项进行评分:通过/失败,并附上反馈。
)
critique_data = json.loads(critique)
allpass = all(c[status] == PASS for c in critiquedata.values())
if all_pass:
return output
# 根据批评进行优化
failed = {k: v[feedback] for k, v in critique_data.items() if v[status] == FAIL}
output = llm(f针对以下问题进行改进:{failed}\n原始内容:{output})
return output
关键洞察:使用结构化JSON输出,确保批评结果的可解析性。
将生成和评估分离为独立组件,明确职责分工。
python
class EvaluatorOptimizer:
def init(self, score_threshold: float = 0.8):
self.scorethreshold = scorethreshold
def generate(self, task: str) -> str:
return llm(f完成:{task})
def evaluate(self, output: str, task: str) -> dict:
return json.loads(llm(f
评估任务输出:{task}
输出:{output}
返回JSON格式:{{overall_score: 0-1, dimensions: {{accuracy: ..., clarity: ...}}}}
))
def optimize(self, output: str, feedback: dict) -> str:
return llm(f根据反馈进行改进:{feedback}\n输出:{output})
def run(self, task: str, max_iterations: int = 3) -> str:
output = self.generate(task)
for in range(maxiterations):
evaluation = self.evaluate(output, task)
if evaluation[overallscore] >= self.scorethreshold:
break
output = self.optimize(output, evaluation)
return output
面向代码生成的测试驱动优化循环。
python
class CodeReflector:
def reflectandfix(self, spec: str, max_iterations: int = 3) -> str:
code = llm(f为以下需求编写Python代码:{spec})
tests = llm(f为以下需求生成pytest测试:{spec}\n代码:{code})
for in range(maxiterations):
result = run_tests(code, tests)
if result[success]:
return code
code = llm(f修复错误:{result[error]}\n代码:{code})
return code
python
def evaluate_outcome(task: str, output: str, expected: str) -> str:
return llm(f输出是否达到预期结果?任务:{task},预期:{expected},输出:{output})
python
def llmjudge(outputa: str, output_b: str, criteria: str) -> str:
return llm(f根据{criteria}比较输出A和B。哪个更好,为什么?)
python
RUBRIC = {
accuracy: {weight: 0.4},
clarity: {weight: 0.3},
completeness: {weight: 0.3}
}
def evaluatewithrubric(output: str, rubric: dict) -> float:
scores = json.loads(llm(f对每个维度进行1-5分评分:{list(rubric.keys())}\n输出:{output}))
return sum(scores[d] * rubric[d][weight] for d in rubric) / 5
| 实践 | 原理 |
|---|---|
| 明确标准 | 预先定义具体、可衡量的评估标准 |
| 迭代限制 |
markdown
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 agentic-eval-1776185846 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 agentic-eval-1776185846 技能
skillhub install agentic-eval-1776185846
文件大小: 2.79 KB | 发布时间: 2026-4-15 10:35