Evals #808
Replies: 8 comments
|
promptfoo from your list is probably the move here. It lets you write simple test cases like "given this input, the output should contain X / not contain Y" and run them across multiple models in one command. Supports OpenRouter too. I'd start small - pick one skill, write a handful of test cases for the behaviors you care about most, and see how different models do. Once that works, you can wire it into CI later. Happy to help set up a first pass if useful. |
|
Great @mvanhorn yes if you could set something up that would be awesome. Here's my agent's report (it's okay if you disagree with him!) Agent Evals Framework PlanDate: 2026-03-13 ContextWe need evals for the thing Paperclip actually ships:
We do not primarily need a fine-tuning pipeline.
This plan is based on:
RecommendationPaperclip should take a two-stage approach:
So the recommendation is no longer “skip Promptfoo.” It is:
More specifically:
A bundle is:
That is the right unit because that is what actually changes behavior in Paperclip. Why This Is The Right Shape1. We need to evaluate system behavior, not only prompt outputPrompt-only tools are useful, but Paperclip’s real failure modes are often:
Those are control-plane behaviors. They require scenario setup, execution, and trace inspection. 2. The repo is already TypeScript-firstThe existing monorepo already uses:
A TypeScript-first harness will fit the repo and CI better than introducing a Python-first test subsystem as the default path. Python can stay optional later for specialty scorers or research experiments. 3. We need provider/model comparison without vendor lock-inOpenAI’s guidance is directionally right:
But OpenAI’s Evals API is not the right control plane for Paperclip as the primary system because our target is explicitly multi-model and multi-provider. 4. Hosted eval products are useful, and Promptfoo is the right bootstrap toolThe current tradeoff:
The community suggestion is directionally right:
That makes it the best But Paperclip should still avoid making a hosted platform or a third-party config format the core abstraction before we have our own stable eval model. The right move is:
What We Should EvaluateWe should split evals into four layers. Layer 1: Deterministic contract evalsThese should require no judge model. Examples:
These are cheap, reliable, and should be the first line of defense. Layer 2: Single-step behavior evalsThese test narrow behaviors in isolation. Examples:
These are the closest thing to prompt evals, but still framed in Paperclip terms. Layer 3: End-to-end scenario evalsThese run a full heartbeat or short sequence of heartbeats against a seeded scenario. Examples:
These should evaluate both final state and trace quality. Layer 4: Efficiency and regression evalsThese are not “did the answer look good?” evals. They are “did we preserve quality while improving cost/latency?” evals. Examples:
This layer is especially important for token optimization work. Core Design1. Canonical object:
|
|
The bundle concept is spot on. Evaluating model + prompt template + skills as a unit is the only way to get meaningful results. Changing the model without re-evaluating the prompt is how you get false regressions. One thing that makes prompt evals painful: when the prompt is a single monolithic string, you can not isolate what changed. Did the regression come from the new constraints section or from the reworded role definition? If the prompt is structured into typed blocks (role, objective, constraints, output format, etc.), you can diff and eval at the block level. Swap one block, run the suite, see exactly what moved. I have been building https://github.com/Nyrok/flompt for this kind of structured prompt authoring. It decomposes prompts into 12 semantic block types and compiles them into XML. Not an eval tool itself, but it makes the "what changed in this prompt" question much easier to answer, which is half the eval problem. promptfoo + structured prompts where each section is versioned independently would give you really granular regression tracking. |
|
PR is up: #832 Went with promptfoo as the bootstrap layer per the plan in #817. Eight test cases covering the core heartbeat behaviors (assignment pickup, blocked reporting, approval flow, checkout-before-work, 409 handling, etc.) with deterministic assertions across four models via OpenRouter. To run it locally: export OPENROUTER_API_KEY=sk-or-...
pnpm evals:smokeKept it intentionally small - just Phase 0. Happy to iterate on the case coverage or model matrix based on what you're seeing in practice. |
|
looking good - will get to this this week. Also found https://www.promptfoo.dev/docs/getting-started/ |
|
Good find on the agent-skill docs. I restructured the PR to follow those patterns - tests are now split into |
|
@/tmp/comment_evals.txt |
|
I would start with evals that test workflow behavior, not only response wording. Prompt and skill changes can look fine in one transcript while quietly breaking assignment pickup, checkout discipline, or blocked-state reporting. A useful first structure:
For skills specifically, I would pin evals to a bundle: model + system prompt + skill version + tool policy. A skill that works well with one model can fail with another, so the unit under test should be the deployed bundle rather than the text file alone. Starting with 8-12 high-value cases is better than building a large fragile suite immediately. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
It would be good to start doing some evals on Paperclip prompts, anyone have a suggestion on how to get started?
For example, right now we're tweaking the Paperclip Skills for token efficiency or adding new functionality, but it strikes me: how do we know if our changes hurt or help besides just "use the app and find out"?
Also, maybe it works for codex 5.4 but fails on spark etc. So we need both evals for expected quality on revisions, but also across a set of models.
I think that if we get a solid structure in place, this will help the project grow especially as we involve LLMs more in Onboarding, CEO chat, and the like. We need to know which models are good, and if our prompt changes are helping or hurting UX.
Anyone have experience with evals? Anyone have a good structure we can use?
I imagine something like an eval suite that uses openrouter or the like and smart github actions / local runs so we don't waste tokens.
Some unfiltered links from my bookmarks:
All reactions