Observed since 20 Oct, 22:15 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
A multi-agent system for evaluating and refining labels on text data
A multi-agent system for evaluating and refining labels on text data using the smolagent framework. The system employs a manager-worker architecture where multiple agents collaborate to reach consensus on label quality.
ThreadPoolExecutor┌─────────────────────────────────────────────────────────┐
│ Input JSON File │
│ { "task_config": {...}, "items": [...] } │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ MANAGER AGENT (smolagent) │
│ • Samples items to assess difficulty │
│ • Creates worker agents with specific roles │
│ • Plans evaluation strategy │
│ • Tie-breaker when consensus fails │
└─────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Worker 1 │ │ Worker 2 │ │ Worker N │
│ (strict) │◄──┤ (creative)│◄──┤ (domain) │
└───────────┘ └───────────┘ └───────────┘
│ │ │
└───────────────┴───────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ CONSENSUS ENGINE │
│ • Check consensus threshold (configurable, default 60%)│
│ • Resolve via majority vote, union, or discussion │
│ • Manager tie-break if still disagreement │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Output JSON File │
│ [{ "id": "...", "labels": {...}, "evaluation": {...} }]│
└─────────────────────────────────────────────────────────┘
pip install agentic-eval-team
pip install -e .
Create an input JSON file with task_config and items:
{
"task_config": {
"description": "Evaluate whether the assigned categories and sentiments are accurate",
"evaluation_criteria": ["accuracy", "consistency", "completeness"],
"consensus_strategy": "discussion_then_vote",
"consensus_threshold": 0.6,
"max_discussion_rounds": 2
},
"items": [
{
"id": "sample_001",
"text": "The recent advancement in AI has revolutionized healthcare diagnostics.",
"labels": {
"category": "technology",
"sentiment": "positive"
}
}
]
}
# Using the CLI command (after installation)
agentic-eval input.json -o output.json --mock
# Or using Python module
python -m agentic_eval_team input.json -o output.json --mock
# With a real model
agentic-eval input.json -o output.json --endpoint http://localhost:8000/v1 --model llama-3.1-8b
| Argument | Description |
|---|---|
input | Input JSON file path (required) |
-o, --output | Output JSON file path |
--endpoint | vLLM/OpenAI-compatible endpoint |
--model | Model identifier |
--mock | Use mock model for testing |
--parallel | Max parallel workers for item processing (default: 4) |
| Field | Default | Description |
|---|---|---|
description | "Evaluate labels for accuracy and quality" | Task description |
evaluation_criteria | ["accuracy", "reasonableness"] | What to evaluate |
consensus_strategy | "discussion_then_vote" | Resolution strategy |
consensus_threshold | 0.6 | Threshold for consensus (0.0-1.0) |
max_discussion_rounds | 2 | Max rounds before tie-break |
| Strategy | Description |
|---|---|
majority_vote | Simple majority wins |
discussion_then_vote | Discuss until threshold agreement, then vote |
full_consensus | Require unanimous agreement |
union | Combine all extractions (for keywords) |
agentic-eval-team/
├── agentic_eval_team/ # Main package
│ ├── __init__.py
│ ├── __main__.py # CLI entry point
│ ├── config.py # Configuration
│ ├── models/
│ │ ├── manager.py # Manager agent
│ │ ├── worker.py # Worker agents (with retry logic)
│ │ ├── tools.py # Manager tools
│ │ ├── schema.py # Pydantic models
│ │ └── mock_model.py # Mock model for testing
│ ├── consensus/
│ │ ├── engine.py # Consensus orchestration
│ │ └── strategies.py # Resolution strategies
│ ├── evaluation/
│ │ └── runner.py # Parallel processing runner
│ ├── tasks/
│ │ ├── router.py # Task type detection
│ │ └── prompts.py # Prompt templates
│ └── utils/
│ ├── io.py # JSON I/O utilities
│ ├── retry.py # Retry decorator
│ └── errors.py # Custom exceptions
├── samples/
│ └── input_sample.json # Sample input
├── tests/
│ └── test_core.py # Unit tests
├── pyproject.toml # Package configuration
└── README.md
python -m unittest discover tests -v
Use --mock flag to test without a running LLM server:
agentic-eval samples/input_sample.json -o output.json --mock --parallel 2
Worker agents automatically retry failed API calls with exponential backoff:
Items can be processed in parallel using ThreadPoolExecutor:
agentic-eval input.json --parallel 4 # Process 4 items concurrently
The consensus_threshold in task_config controls when consensus is reached:
The manager samples items from the dataset and assesses:
Based on difficulty and task, workers are created with specific roles:
strict_evaluator: Focuses on accuracy and correctnesscreative_reviewer: Looks for edge cases and alternativesdomain_expert: Checks technical/domain accuracy (for high difficulty)lenient_reviewer: Evaluates practical acceptability (for high difficulty)For each item:
Each item in the output includes:
id and textlabels (possibly modified)evaluation_summary with consensus info{
"id": "sample_001",
"text": "The recent advancement in AI...",
"labels": {
"category": "technology",
"sentiment": "positive"
},
"evaluation_summary": {
"consensus": "correct",
"reasoning": "Threshold reached: correct (2/2 >= 0.6)",
"resolved_by": "workers",
"worker_count": 2,
"discussion_rounds": 0
}
}
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 24 Apr 2026 | 4 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:15 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:c5f4a007f61a229ce774896c43fd94fa638e20ccf310488c09d3f537c73508fc