🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install github/awesome-copilot/agentic-eval
💡 提示:需要 Node.js 和 NPM
代理评估模式
通过迭代评估和优化实现自我改进的模式。
概述
评估模式使代理能够评估和改进自己的输出,超越单次生成,进入迭代优化循环。
生成 → 评估 → 评判 → 优化 → 输出
↑ │
└──────────────────────────────┘
何时使用
- 质量关键的生成:代码、报告、分析,需要高精度
- 具有清晰评估标准的任务:存在明确的成功指标
- 需要特定标准的内容:样式指南、合规性、格式
模式 1:基础反思
代理通过自我评判来评估和改进自己的输出。
def reflect_and_refine(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}
将每项评为 PASS/FAIL,并提供反馈,格式为 JSON。
""") # 翻译提示词
critique_data = json.loads(critique)
all_pass = all(c["status"] == "PASS" for c in critique_data.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 输出以可靠地解析评判结果。
模式 2:评估器-优化器
将生成和评估分离为不同的组件,使职责更清晰。
class EvaluatorOptimizer:
def __init__(self, score_threshold: float = 0.8):
self.score_threshold = score_threshold
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(max_iterations):
evaluation = self.evaluate(output, task)
if evaluation["overall_score"] >= self.score_threshold:
break
output = self.optimize(output, evaluation)
return output
模式 3:代码特定反思
用于代码生成的测试驱动优化循环。
class CodeReflector:
def reflect_and_fix(self, spec: str, max_iterations: int = 3) -> str:
code = llm(f"为以下需求编写 Python 代码:{spec}") # 翻译提示词
tests = llm(f"为以下需求生成 pytest 测试:{spec}\n代码:{code}") # 翻译提示词
for _ in range(max_iterations):
result = run_tests(code, tests)
if result["success"]:
return code
code = llm(f"修复错误:{result['error']}\n代码:{code}") # 翻译提示词
return code
评估策略
基于结果
评估输出是否达到预期结果。
def evaluate_outcome(task: str, output: str, expected: str) -> str:
return llm(f"输出是否达到了预期结果?任务:{task},预期:{expected},输出:{output}") # 翻译提示词
LLM 作为评判者
使用 LLM 比较和排序输出。
def llm_judge(output_a: str, output_b: str, criteria: str) -> str:
return llm(f"比较输出 A 和 B 在{criteria}方面的表现。哪个更好,为什么?") # 翻译提示词
基于量规
根据加权维度对输出进行评分。
RUBRIC = {
"accuracy": {"weight": 0.4}, # 准确性
"clarity": {"weight": 0.3}, # 清晰度
"completeness": {"weight": 0.3} # 完整性
}
def evaluate_with_rubric(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
最佳实践
| 实践 | 原理 |
|---|---|
| 清晰的标准 | 预先定义具体、可衡量的评估标准 |
| 迭代限制 | 设置最大迭代次数(3-5)以防止无限循环 |
| 收敛检查 | 如果迭代间输出分数没有提高,则停止 |
| 记录历史 | 保存完整轨迹以便调试和分析 |
| 结构化输出 | 使用 JSON 可靠地解析评估结果 |
快速启动检查清单
## 评估实施检查清单 # 翻译
### 设置 # 翻译
- [ ] 定义评估标准/量规
- [ ] 设置“足够好”的分数阈值
- [ ] 配置最大迭代次数(默认:3)
### 实施 # 翻译
- [ ] 实现 generate() 函数
- [ ] 实现 evaluate() 函数并生成结构化输出
- [ ] 实现 optimize() 函数
- [ ] 连接优化循环
### 安全措施 # 翻译
- [ ] 添加收敛检测
- [ ] 记录所有迭代以便调试
- [ ] 优雅地处理评估解析失败
📄 原始文档
完整文档(英文):
https://skills.sh/github/awesome-copilot/agentic-eval
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)