harden history find tokens and shops earch
This commit is contained in:
@@ -192,6 +192,47 @@ final readonly class RetriexEffectiveConfigProvider
|
||||
$errors[] = 'Shop query optimizer prompt no longer contains the original query.';
|
||||
}
|
||||
|
||||
$metaOnlyTerms = $this->agentRunnerConfig->getShopQueryMetaOnlyTerms();
|
||||
foreach (['shop', 'suche'] as $term) {
|
||||
$key = 'shop_query_meta_guard_term_' . $term;
|
||||
$checks[$key] = in_array($term, $metaOnlyTerms, true);
|
||||
if (!$checks[$key]) {
|
||||
$errors[] = 'Missing shop query meta guard term: ' . $term;
|
||||
}
|
||||
}
|
||||
$checks['shop_query_context_fallback_enabled'] = $this->agentRunnerConfig->isShopQueryContextFallbackEnabled();
|
||||
if (!$checks['shop_query_context_fallback_enabled']) {
|
||||
$errors[] = 'Shop query context fallback is disabled.';
|
||||
}
|
||||
|
||||
$contextFallbackFilterTerms = $this->agentRunnerConfig->getShopQueryContextFallbackFilterTerms();
|
||||
foreach (['welchem', 'kann', 'messen'] as $term) {
|
||||
$key = 'shop_query_context_fallback_filter_' . $term;
|
||||
$checks[$key] = in_array($term, $contextFallbackFilterTerms, true);
|
||||
if (!$checks[$key]) {
|
||||
$errors[] = 'Missing shop query context fallback filter term: ' . $term;
|
||||
}
|
||||
}
|
||||
$checks['shop_query_context_fallback_history_budget_positive'] = $this->agentRunnerConfig->getShopQueryContextFallbackHistoryBudgetChars() > 0;
|
||||
if (!$checks['shop_query_context_fallback_history_budget_positive']) {
|
||||
$errors[] = 'Shop query context fallback history budget must be greater than zero.';
|
||||
}
|
||||
|
||||
$checks['shop_query_context_fallback_full_history_enabled'] = $this->agentRunnerConfig->shouldUseFullHistoryForShopQueryContextFallback();
|
||||
if (!$checks['shop_query_context_fallback_full_history_enabled']) {
|
||||
$errors[] = 'Shop query context fallback full-history fallback is disabled.';
|
||||
}
|
||||
|
||||
$checks['shop_query_context_fallback_question_limit_minimum'] = $this->agentRunnerConfig->getShopQueryContextFallbackQuestionLimit() >= 6;
|
||||
if (!$checks['shop_query_context_fallback_question_limit_minimum']) {
|
||||
$errors[] = 'Shop query context fallback question limit is too low for repeated meta follow-ups.';
|
||||
}
|
||||
|
||||
$checks['shop_query_context_fallback_max_terms_positive'] = $this->agentRunnerConfig->getShopQueryContextFallbackMaxTerms() > 0;
|
||||
if (!$checks['shop_query_context_fallback_max_terms_positive']) {
|
||||
$errors[] = 'Shop query context fallback max terms must be greater than zero.';
|
||||
}
|
||||
|
||||
$status = $errors === [] ? 'OK' : 'ERROR';
|
||||
|
||||
return [
|
||||
@@ -362,6 +403,7 @@ final readonly class RetriexEffectiveConfigProvider
|
||||
'check_internet_sources' => $this->agentRunnerConfig->getCheckInternetSourcesMessage(),
|
||||
'retrieve_knowledge' => $this->agentRunnerConfig->getRetrieveKnowledgeMessage(),
|
||||
'optimize_search' => $this->agentRunnerConfig->getOptimizeSearchMessage(),
|
||||
'no_concrete_shop_query' => $this->agentRunnerConfig->getNoConcreteShopQueryMessage(),
|
||||
'fetch_search_data_template' => $this->agentRunnerConfig->getFetchSearchDataMessageTemplate(),
|
||||
'analyze_all_information' => $this->agentRunnerConfig->getAnalyzeAllInformationMessage(),
|
||||
'thinking_while_streaming' => $this->agentRunnerConfig->getThinkingWhileStreamingMessage(),
|
||||
@@ -392,6 +434,28 @@ final readonly class RetriexEffectiveConfigProvider
|
||||
'output_format_block' => $this->agentRunnerConfig->getShopPromptOutputFormatBlock(),
|
||||
'recent_conversation_context_label' => $this->agentRunnerConfig->getRecentConversationContextLabel(),
|
||||
'current_user_input_label' => $this->agentRunnerConfig->getCurrentUserInputLabel(),
|
||||
'language_preservation' => [
|
||||
'enabled' => $this->agentRunnerConfig->isShopQueryLanguagePreservationEnabled(),
|
||||
'language_markers' => $this->agentRunnerConfig->getShopQueryLanguageMarkers(),
|
||||
'translation_replacements_de' => $this->agentRunnerConfig->getShopQueryTranslationReplacements('de'),
|
||||
],
|
||||
'context_anchor_enrichment' => [
|
||||
'enabled' => $this->agentRunnerConfig->isShopQueryContextAnchorEnrichmentEnabled(),
|
||||
'max_query_terms' => $this->agentRunnerConfig->getShopQueryContextAnchorEnrichmentMaxQueryTerms(),
|
||||
'trigger_terms' => $this->agentRunnerConfig->getShopQueryContextAnchorEnrichmentTriggerTerms(),
|
||||
'anchor_patterns' => $this->agentRunnerConfig->getShopQueryContextAnchorEnrichmentPatterns(),
|
||||
'template' => $this->agentRunnerConfig->getShopQueryContextAnchorEnrichmentTemplate(),
|
||||
],
|
||||
'meta_query_guard' => [
|
||||
'enabled' => $this->agentRunnerConfig->isShopQueryMetaGuardEnabled(),
|
||||
'context_fallback_use_full_history' => $this->agentRunnerConfig->shouldUseFullHistoryForShopQueryContextFallback(),
|
||||
'meta_only_terms' => $this->agentRunnerConfig->getShopQueryMetaOnlyTerms(),
|
||||
'context_fallback_enabled' => $this->agentRunnerConfig->isShopQueryContextFallbackEnabled(),
|
||||
'context_fallback_question_limit' => $this->agentRunnerConfig->getShopQueryContextFallbackQuestionLimit(),
|
||||
'context_fallback_history_budget_chars' => $this->agentRunnerConfig->getShopQueryContextFallbackHistoryBudgetChars(),
|
||||
'context_fallback_max_terms' => $this->agentRunnerConfig->getShopQueryContextFallbackMaxTerms(),
|
||||
'context_fallback_filter_terms' => $this->agentRunnerConfig->getShopQueryContextFallbackFilterTerms(),
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
@@ -795,6 +859,15 @@ final readonly class RetriexEffectiveConfigProvider
|
||||
$this->validateStringListMap($agent['html_templates'] ?? [], 'agent.html_templates', $errors, $warnings);
|
||||
$this->validateStringListMap($agent['shop_query_optimizer'] ?? [], 'agent.shop_query_optimizer', $errors, $warnings);
|
||||
$this->validateRegexPattern($agent['optimized_shop_query_prefix_pattern'] ?? null, 'agent.optimized_shop_query_prefix_pattern', $errors);
|
||||
|
||||
$anchorEnrichment = $agent['shop_query_optimizer']['context_anchor_enrichment'] ?? [];
|
||||
if (is_array($anchorEnrichment)) {
|
||||
$this->validateStringList($this->toList($anchorEnrichment['trigger_terms'] ?? []), 'agent.shop_query_optimizer.context_anchor_enrichment.trigger_terms', $errors, $warnings);
|
||||
$this->validateRegexPatternList($anchorEnrichment['anchor_patterns'] ?? [], 'agent.shop_query_optimizer.context_anchor_enrichment.anchor_patterns', $errors);
|
||||
if (trim((string) ($anchorEnrichment['template'] ?? '')) === '') {
|
||||
$errors[] = 'agent.shop_query_optimizer.context_anchor_enrichment.template must not be empty.';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user