Files
MtoRagSystem/src/Eval/AgentEvalRunner.php
team 1 3d0092b753 p99
2026-05-12 08:25:59 +02:00

54 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Eval;
use App\Eval\Dto\EvalCase;
use App\Eval\Dto\EvalResult;
final readonly class AgentEvalRunner
{
public function __construct(
private RetrievalDebugRunner $retrievalDebugRunner,
private ShopQueryEvalRunner $shopQueryEvalRunner,
private AnswerGuardEvalRunner $answerGuardEvalRunner,
) {
}
public function run(EvalCase $case): EvalResult
{
if ($case->isRetrievalCase()) {
return $this->retrievalDebugRunner->run($case);
}
if ($case->isShopQueryCase() || $case->isFollowUpCase()) {
return $this->shopQueryEvalRunner->run($case);
}
if ($case->isAnswerGuardCase()) {
return $this->answerGuardEvalRunner->run($case);
}
throw new \InvalidArgumentException(sprintf(
'Unsupported eval case type: %s',
$case->type
));
}
/**
* @param array<int, EvalCase> $cases
* @return array<int, EvalResult>
*/
public function runAll(array $cases): array
{
$results = [];
foreach ($cases as $case) {
$results[] = $this->run($case);
}
return $results;
}
}