返回首页
最新
我只是好奇,对于那些仅掌握基本编程知识并在实践中学习的人,有没有更好的替代方案。
对Claude Code和Codex的技能进行测试是很困难的。我所说的困难是没有标准的方法来做到这一点。你在某个任务上评估一次技能,看起来是有效的。然后你发布它。接着新的超级模型发布(比如GLM 5.2),它可能会在某些方面悄然失效,而你直到用户投诉时才会发现。
我也遇到了同样的问题,因此我尝试构建一个轻量级的工具来解决这个问题,叫做Caliper。
Caliper是一个本地的轻量级测试工具,它在隔离的环境中运行技能k次,并给出一个pass@k评分(在这k次中成功的次数)。作为一种非确定性技术,你不能仅仅说“它成功了一次”。你需要回答在k次中成功的次数。
你可以在YAML规范中定义成功的标准。我选择YAML是为了保持模式的一致性,同时让人类仍然易于阅读。你可以使用LLM评判器、Python断言,或者两者结合:
下面是一个简单的评估示例,涉及JSON提取,你可以在YAML文件中写入如下内容:
```yaml
tasks:
- name: Extracts action items as clean JSON
prompt: "Read /tmp/transcript.txt and write the action items to /tmp/actions.json."
expect: "A valid JSON array where every item has owner, task, due. No markdown fences."
assert: |
import json
items = json.load(open("/tmp/actions.json"))
assert isinstance(items, list)
assert all({"owner","task","due"} <= i.keys() for i in items)
```
然后通过命令行运行它:
```bash
caliper run extract-actions.eval.yaml --k 5 --baseline
```
--baseline标志的酷炫之处在于,它会在没有技能的情况下重新运行所有内容,这样你就可以看到技能是否在发挥作用,或者基础代理是否本来就会通过:
```
ID Task k(5) pass@k
task-1 Extracts action items as JSON 5/5 100% PASS
With skill 100%
No skill 60%
Delta +40%
```
大多数模型在大多数情况下都知道如何正确获取JSON(JSON提取的问题早在两年前就已经解决)。但问题在于,“大多数情况下”就是一个bug。这个增量显示了技能实际上是如何帮助的。(有时是0%,有时是-100%!)
我还创建了两个技能,你可以立即与自己喜欢的工具开始使用,比如Claude Code、Codex或Pi:
- evaluate-skill:在不离开工作流程的情况下运行和管理评估
- grill-skill:读取你的SKILL.md,询问你“好”的标准是什么,编写一个包含3个任务的规范(正常路径、边缘案例、对抗性),并运行它
你可以使用以下命令安装该技能:`npx skills@latest add edonadei/caliper`
目前我支持claude-code、codex、pi、claude-api和openai-api。你可以将代理和评判器作为独立的后端运行,这样你可以在一个后端上运行技能,在另一个后端上进行评判。
GitHub: [https://github.com/edonadei/caliper](https://github.com/edonadei/caliper)
PyPI: [https://pypi.org/project/caliper-eval/](https://pypi.org/project/caliper-eval/)
当然,这只是第一步。我认为自动评分层可以大幅改进,提供更多的指导来创建和迭代评估规范,支持更多的工具,为什么不将这一层纳入一个自我改进的更大系统呢?
如果你也在构建代理评估,我非常感兴趣听听你是如何处理的。
经过几年的强制数字版权管理(DRM)限制,大多数商业书籍来源现在让作者在书籍的DRM方面有了选择。您可以选择无DRM的作者和书籍,或者下载那些已过版权保护期的无DRM经典作品。
<p><a href="https://frequal.com/Perspectives/DrmFreeAuthors.html" rel="nofollow">https://frequal.com/Perspectives/DrmFreeAuthors.html</a>