p24
This commit is contained in:
@@ -8,6 +8,7 @@ use App\Commerce\Dto\ShopProductResult;
|
||||
use App\Commerce\SearchRepairService;
|
||||
use App\Commerce\ShopSearchService;
|
||||
use App\Config\AgentRunnerConfig;
|
||||
use App\Config\LanguageCleanupConfig;
|
||||
use App\Context\ContextService;
|
||||
use App\Context\UrlAnalyzer;
|
||||
use App\Infrastructure\OllamaClient;
|
||||
@@ -33,6 +34,7 @@ final readonly class AgentRunner
|
||||
private OllamaClient $ollamaClient,
|
||||
private LoggerInterface $agentLogger,
|
||||
private AgentRunnerConfig $agentRunnerConfig,
|
||||
private LanguageCleanupConfig $languageCleanupConfig,
|
||||
private bool $debug,
|
||||
private bool $logPrompt,
|
||||
private bool $logContext,
|
||||
@@ -2710,7 +2712,7 @@ final readonly class AgentRunner
|
||||
$normalizedPrompt = $this->normalizeRagEvidenceText($prompt);
|
||||
$stopTerms = [];
|
||||
|
||||
foreach ($this->agentRunnerConfig->getRagEvidenceStopTerms() as $term) {
|
||||
foreach ($this->getRagEvidenceCleanupStopTerms() as $term) {
|
||||
$term = $this->normalizeRagEvidenceText($term);
|
||||
if ($term !== '') {
|
||||
$stopTerms[$term] = true;
|
||||
@@ -2743,6 +2745,35 @@ final readonly class AgentRunner
|
||||
return $groups;
|
||||
}
|
||||
|
||||
/** @return string[] */
|
||||
private function getRagEvidenceCleanupStopTerms(): array
|
||||
{
|
||||
return $this->mergeUniqueStrings(
|
||||
$this->languageCleanupConfig->getStopWordsForProfile($this->agentRunnerConfig->getRagEvidenceCleanupProfile()),
|
||||
$this->agentRunnerConfig->getRagEvidenceStopTerms()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $left
|
||||
* @param string[] $right
|
||||
* @return string[]
|
||||
*/
|
||||
private function mergeUniqueStrings(array $left, array $right): array
|
||||
{
|
||||
$out = [];
|
||||
foreach (array_merge($left, $right) as $item) {
|
||||
$item = trim((string) $item);
|
||||
if ($item === '' || isset($out[$item])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$out[$item] = $item;
|
||||
}
|
||||
|
||||
return array_values($out);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, string[]>
|
||||
*/
|
||||
|
||||
@@ -503,6 +503,11 @@ final class AgentRunnerConfig
|
||||
return $this->getRequiredInt('no_llm_fallback.max_shop_results');
|
||||
}
|
||||
|
||||
public function getRagEvidenceCleanupProfile(): string
|
||||
{
|
||||
return $this->getRequiredString('rag_evidence_guard.cleanup_profile');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
|
||||
@@ -496,6 +496,7 @@ final readonly class RetriexEffectiveConfigProvider
|
||||
'debug_internal_error_prefix' => $this->agentRunnerConfig->getDebugInternalErrorPrefix(),
|
||||
],
|
||||
'rag_evidence_guard' => [
|
||||
'cleanup_profile' => $this->agentRunnerConfig->getRagEvidenceCleanupProfile(),
|
||||
'stop_terms' => $this->agentRunnerConfig->getRagEvidenceStopTerms(),
|
||||
'synonyms' => $this->agentRunnerConfig->getRagEvidenceSynonyms(),
|
||||
'aggregate_query_patterns' => $this->agentRunnerConfig->getRagEvidenceAggregateQueryPatterns(),
|
||||
@@ -1076,6 +1077,13 @@ final readonly class RetriexEffectiveConfigProvider
|
||||
}
|
||||
|
||||
$ragEvidence = is_array($agent['rag_evidence_guard'] ?? null) ? $agent['rag_evidence_guard'] : [];
|
||||
$ragEvidenceCleanupProfile = $ragEvidence['cleanup_profile'] ?? null;
|
||||
if (!is_string($ragEvidenceCleanupProfile) || trim($ragEvidenceCleanupProfile) === '') {
|
||||
$errors[] = 'agent.rag_evidence_guard.cleanup_profile must be a non-empty string.';
|
||||
} elseif (!in_array($ragEvidenceCleanupProfile, $this->languageCleanupConfig->getCleanupProfileNames(), true)) {
|
||||
$errors[] = 'agent.rag_evidence_guard.cleanup_profile references unknown language cleanup profile: ' . $ragEvidenceCleanupProfile . '.';
|
||||
}
|
||||
|
||||
$this->validateStringList($this->toList($ragEvidence['stop_terms'] ?? []), 'agent.rag_evidence_guard.stop_terms', $errors, $warnings);
|
||||
$this->validateStringListMap($ragEvidence['synonyms'] ?? [], 'agent.rag_evidence_guard.synonyms', $errors, $warnings);
|
||||
$this->validateRegexPatternList($ragEvidence['aggregate_query_patterns'] ?? [], 'agent.rag_evidence_guard.aggregate_query_patterns', $errors);
|
||||
|
||||
Reference in New Issue
Block a user