返回资讯中心
外部精选
软件工程
#开发者实时流

开源工具 Promptcheckup 发布:用 95% 置信区间判断提示词改动是否真的更好

来源标题:Show HN: Promptcheckup – pass/fail check for prompt changes, with 95% intervals

Promptcheckup 是一款零依赖的提示词变更检测工具,通过在同一批案例上对比新旧提示词并给出 95% 置信区间,判断改动是更好、更差还是尚无定论。该工具可接入 CI,支持 Python 3.11+,作者提供了一个模拟显示:配对回放中误判“更好”的概率约为 2.2%–2.7%。

Hacker News 最新gael55x2026/11/7 · 今天30 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

你的提示词改动看起来更好了。是真的更好,还是只是那一周恰好更容易? 一个针对提示词改动的通过/失败检查工具。让旧提示词和新提示词跑同一批用例,给出“更好”“更差”或“还不确定”的结论,并附带 95% 置信区间。可在 CI 中运行。无外部依赖。 在模拟中,用上周的提示词与本周的提示词对比,有 41.3% 的情况下选中了更差的那个 模拟,2,000 次运行 2,000 次运行中,配对回放选中更差提示词的次数为 0 同一模拟 两个提示词实际相同时,误报“更好”的概率为 2.2–2.7% 目标为 2.5% Python 标准库之外的依赖数量为 0 适用于任何 agent 语言 30 秒试用(无需 API key) git clone https://github.com/gael55x/promptcheckup && cd promptcheckup PYTHONPATH=src python3 examples/planted/planted.py 朴素对比(不同周):B - A = -1.56 -> 选中 A 配对回放(相同日期):B - A 均值 = +0.36,95% CI [+0.17, +0.55] -> 更好 提示词 B 确实更好。但拿它和上周运行的提示词 A 对比,结论却相反,因为变化的是那一周,不是提示词。让两个提示词在同一天运行,就能把周与周之间的差异抵消掉。 pip install promptcheckup # 需要 Python 3.11+ promptcheckup init # 生成配置、示例用例和两个 GitHub workflow promptcheckup doctor # 检查配置是否正确并提示需要修复的地方 promptcheckup gate --old-ref origin/main --out report.md B 更好:30 个用例中有 28 个改善(95% CI +0.78 到 +0.99)。 gate 在“更好”时退出码为 0,在“更差”时为 1,在“还不确定”时为 2,因此如果 pull request 让 agent 变差,CI 就会失败。你的 agent 可以是一个 Python 函数,也可以是任何从 stdin 读取 JSON、向 stdout 写出 JSON 的程序。普通 Python、OpenAI 和 Anthropic SDK 以及 Node.js 的连接指南见文档。 上周的运行不能作为对照组。模型更新、市场波动和流量构成的变化都会影响每一个答案。promptcheckup 会在相同输入上背靠背运行两个提示词,从而抵消这些变化。 20 个用例可能骗你。它给出的是区间而非单一分数,并且会明确说“还不确定”,而不是靠猜。它还能发现隐藏在大量小幅收益中的少数大幅损失。 LLM 评审也有偏好。在评审的结论被采信之前,会先用旧提示词对旧提示词来校验评审,这种情况本应打平;并且每一对答案都会以两种顺序各看一遍。 在这个模拟中,每周的条件会让每个答案偏移相同的量,而当两个提示词在相同输入上运行时,这种偏移会被抵消。拿上周的提示词和本周的提示词对比,在 41.3% 的运行中选中了更差的提示词。在相同输入上运行两个提示词,在 91.7% 的运行中选中了更好的那个,2,000 次运行中从未选中更差的,其余 8.4% 则给出“还不确定”。 promptcheckup init 这会写出 promptcheckup.toml、几个示例用例和两个 GitHub workflow。编辑配置,让它指向你的 agent、提示词文件和用例。agent 可以是一个 Python 函数 run(case, prompts),也可以是任何从 stdin 读取 JSON、向 stdout 写出 JSON 的程序。连接指南中有普通 Python、OpenAI 和 Anthropic SDK 以及 Node.js 的适配器。 检查配置,然后把你的工作树与 main 对比: promptcheckup doctor promptcheckup gate --old-ref origin/main --out report.md 报告的第一行就是结论: B 更好:30 个用例中有 28 个改善(95% CI +0.78 到 +0.99)。 gate 在“更好”时退出码为 0,在“更差”时为 1,在“还不确定”时为 2,在出错时为 3,因此可以在 CI 中运行。开始前,它会显示计划发起多少次 agent 和评审调用,并请求确认。传入 --yes 可跳过确认。 checkup 和 propose 默认会留出一半用例作为保留集(run.holdout)。一个 gate 默认需要 20 个用例,因此一个提案大约需要 40 个用例才能被测试。用例更少时,报告只展示提议的修改而不测试或写入,doctor 也会提醒你。哪些用例被保留,只取决于其 ID 的哈希值。 只有当漂移对比无错误运行时,检查报告才会说“Stable”。如果所有 agent 调用都失败,报告会说明这一点,命令以 3 退出。 这些命令都不会合并任何东西。通过测试的修改会被写入你的提示词文件,workflow 模板会为你打开一个 pull request 供你审阅。 from promptcheckup.testing import assert_better, assert_no_lookahead def test_new_prompt_is_better(): assert_better(run, cases, old_prompts, new_prompts, score=score) def test_agent_cannot_see_the_future(): assert_no_lookahead(build_input, history, decision_times, time_key="date") assert_no_lookahead 适用于处理时间序列的 agent。对每个决策时间点,它会对之后的数值重新缩放、随机改动每一个、并删除后面的行,如果 agent 的输入发生变化就判定失败。它能捕捉常见的泄漏;但它是检查,不是证明。 如果你能计算出答案有多好,就传入一个 score(case, output) 函数。对交易 agent 来说,这可以是次日盈亏。否则,写下评判标准,让模型对成对的答案进行评审。评审会以两种顺序各看一遍两个答案,并且在结论被采信之前,会用旧提示词对旧提示词进行自校验,这种情况本应打平。gate 报告还会显示评审在两种顺序下给出相同答案的频率。 对每个用例,promptcheckup 用新提示词的分数减去旧提示词的分数,然后用配对 t 检验计算平均差异的 95% 置信区间。 两个提示词会在每个用例上背靠背运行,各自使用输入的独立副本。只有当缓存中同时存有该用例两个提示词的答案时,才会复用缓存答案。 这些数据来自对发布代码的固定种子模拟,以及对真实模型的少量运行。复现它们的命令见本节末尾。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →