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;
}
Цикл
- Генерация
- Оценка (structured output)
- Если score < порога — улучшение
- Повтор, пока не достигнет или не закончатся итерации
Когда использовать
- Качество важно
- Итеративное улучшение
- Есть чёткие критерии оценки
Итоги
- Цикл генерация-оценка-улучшение
- Structured output для оценки
- Лимит итераций
- Для quality-critical задач