Agentic AIPHPverifiedVerified

Evaluator-Optimizer Agent Pattern in PHP

An iterative refinement loop where an 'Evaluator' provides granular feedback on an 'Optimizer’s' output until quality thresholds are met.

How to Implement the Evaluator-Optimizer Agent Pattern in PHP

1Step 1: Define the Feedback value object and interfaces

class Feedback
{
    public function __construct(
        public readonly bool $isPass,
        public readonly string $critique,
        public readonly float $score,
    ) {}
}

interface Optimizer
{
    public function generate(string $task): string;
    public function refine(string $current, string $feedback): string;
}

interface Evaluator
{
    public function check(string $output): Feedback;
}

2Step 2: Implement the iterative refinement loop

const MAX_ITERATIONS = 5;

function refinementLoop(
    string $task,
    Optimizer $optimizer,
    Evaluator $evaluator,
): string {
    $currentOutput = $optimizer->generate($task);

    for ($i = 0; $i < MAX_ITERATIONS; $i++) {
        $feedback = $evaluator->check($currentOutput);

        if ($feedback->isPass) {
            return $currentOutput;
        }

        $currentOutput = $optimizer->refine(
            $currentOutput,
            $feedback->critique,
        );
    }

    return $currentOutput;
}

Evaluator-Optimizer Agent Pattern Architecture

hourglass_empty

Rendering diagram...

lightbulb

Evaluator-Optimizer Agent Pattern in the Real World

Think of a student writing an essay (Optimizer) and a teacher grading it with detailed feedback (Evaluator). The student revises based on the red-ink comments and resubmits. This cycle repeats until the essay meets the teacher’s standards—or the deadline (max iterations) is reached.