Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

22 Commits

Repository files navigation

agentevals Community Evaluators

Community-maintained evaluators for agentevals -- the agent evaluation framework built on Google ADK.

Evaluators are standalone scoring programs that evaluate agent traces. They read EvalInput JSON from stdin and write EvalResult JSON to stdout. This repository is the official index of community-contributed evaluators.

Using community evaluators

Browse available evaluators

agentevals evaluator list --source github

Reference a community evaluator in your eval config

Add a type: remote entry to your eval_config.yaml:

metrics:
- tool_trajectory_avg_score
- name: response_qualitytype: remotesource: githubref: evaluators/response_quality/response_quality.pythreshold: 0.7config:
min_response_length: 20
- name: tool_coveragetype: remotesource: githubref: evaluators/tool_coverage/tool_coverage.pythreshold: 1.0config:
min_tool_calls: 1

Then run as usual:

agentevals run traces/my_trace.json \
--config eval_config.yaml \
--eval-set eval_set.json

The evaluator is downloaded automatically and cached in ~/.cache/agentevals/evaluators/.

Contributing an evaluator

1. Scaffold a new evaluator

pip install agentevals
agentevals evaluator init my_evaluator

This creates a directory ready to be added to this repo:

my_evaluator/
├── my_evaluator.py # your scoring logic
└── evaluator.yaml # metadata manifest

2. Implement your scoring logic

Edit my_evaluator.py. Your function receives an EvalInput with the agent's invocations and returns an EvalResult with a score between 0.0 and 1.0.

fromagentevals_grader_sdkimportgrader, EvalInput, EvalResult@graderdefmy_evaluator(input: EvalInput) ->EvalResult:
scores= []
forinvininput.invocations:
# Your scoring logic herescores.append(1.0)
returnEvalResult(
score=sum(scores) /len(scores) ifscoreselse0.0,
per_invocation_scores=scores,
)
if__name__=="__main__":
my_evaluator.run()

Install the SDK standalone with pip install agentevals-grader-sdk (no heavy dependencies).

3. Update the manifest

Edit evaluator.yaml with a description, tags, and your name:

name: my_evaluatordescription: What this evaluator checkslanguage: pythonentrypoint: my_evaluator.pytags: [quality, tools]author: your-github-username

4. Validate locally

Run the validation script to catch issues before submitting:

pip install pyyaml agentevals-evaluator-sdk
python scripts/validate_evaluator.py evaluators/my_evaluator

This checks:

  • Manifest schema -- required fields, entrypoint exists, name matches directory
  • Syntax and imports -- compiles cleanly, uses @evaluator decorator
  • Smoke run -- runs the evaluator with synthetic input and validates the EvalResult output (correct types for score, details, status, etc.)

You can also test with a full eval run:

metrics:
- name: my_evaluatortype: codepath: ./evaluators/my_evaluator/my_evaluator.pythreshold: 0.5
agentevals run traces/sample.json --config eval_config.yaml --eval-set eval_set.json

5. Submit a pull request

  1. Fork this repository
  2. Copy your evaluator directory into evaluators/:
evaluators/
├── my_evaluator/
│ ├── evaluator.yaml
│ └── my_evaluator.py
├── response_quality/
│ └── ...
└── tool_coverage/
└── ...
  1. Open a PR against main

CI will automatically validate your evaluator (manifest, syntax, and smoke run). Once merged, a separate workflow regenerates index.yaml, and your evaluator becomes available to everyone via agentevals evaluator list.

Supported languages

Evaluators can be written in any language that reads JSON from stdin and writes JSON to stdout.

LanguageExtensionSDK available
Python.pypip install agentevals-grader-sdk
JavaScript.jsNo SDK yet -- just read stdin, write stdout
TypeScript.tsNo SDK yet -- just read stdin, write stdout

See the custom evaluators documentation for the full protocol reference.

About

Collection of evaluators for agentevals

Topics

Resources

Stars

56 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages