Урок 06

Evaluator-Optimizer

Генерация → оценка → улучшение, пока не достигнет стандарта.

Пример: написание текста

function generateWithQuality(string $topic, int $maxIterations = 3): string
{
    $content = agent(instructions: 'You are a content writer.')
        ->prompt("Write about: {$topic}")->text;

    for ($i = 0; $i < $maxIterations; $i++) {
        $evaluation = agent(
            instructions: 'You are a strict editor. Evaluate content quality.',
            schema: fn (JsonSchema $schema) => [
                'score' => $schema->integer()->min(1)->max(10)->required(),
                'issues' => $schema->array()->items($schema->string()),
            ],
        )->prompt($content);

        if ($evaluation['score'] >= 8) {
            return $content;
        }

        $content = agent(instructions: 'You are a content editor.')
            ->prompt("Improve this content. Issues: " . implode(', ', $evaluation['issues']) . "\n\n{$content}")
            ->text;
    }

    return $content;
}

Цикл

  1. Генерация
  2. Оценка (structured output)
  3. Если score < порога — улучшение
  4. Повтор, пока не достигнет или не закончатся итерации

Когда использовать

  • Качество важно
  • Итеративное улучшение
  • Есть чёткие критерии оценки

Итоги

  • Цикл генерация-оценка-улучшение
  • Structured output для оценки
  • Лимит итераций
  • Для quality-critical задач