patch 20
This commit is contained in:
@@ -441,6 +441,33 @@ final readonly class RetriexEffectiveConfigProvider
|
||||
'product_search_knowledge_chunk_limit' => $this->agentRunnerConfig->getProductSearchKnowledgeChunkLimit(),
|
||||
'advisory_product_search_knowledge_chunk_limit' => $this->agentRunnerConfig->getAdvisoryProductSearchKnowledgeChunkLimit(),
|
||||
'optimized_shop_query_prefix_pattern' => $this->agentRunnerConfig->getOptimizedShopQueryPrefixPattern(),
|
||||
'input_normalization' => [
|
||||
'enabled' => $this->agentRunnerConfig->isInputNormalizationEnabled(),
|
||||
'max_input_chars' => $this->agentRunnerConfig->getInputNormalizationMaxInputChars(),
|
||||
'max_output_chars' => $this->agentRunnerConfig->getInputNormalizationMaxOutputChars(),
|
||||
'max_added_tokens' => $this->agentRunnerConfig->getInputNormalizationMaxAddedTokens(),
|
||||
'max_length_ratio_percent' => $this->agentRunnerConfig->getInputNormalizationMaxLengthRatioPercent(),
|
||||
'heartbeat_message' => $this->agentRunnerConfig->getInputNormalizationHeartbeatMessage(),
|
||||
'output_prefix_pattern' => $this->agentRunnerConfig->getInputNormalizationOutputPrefixPattern(),
|
||||
'skip_patterns' => $this->agentRunnerConfig->getInputNormalizationSkipPatterns(),
|
||||
'prompt' => [
|
||||
'intro' => $this->agentRunnerConfig->getInputNormalizationIntro(),
|
||||
'rules' => $this->agentRunnerConfig->getInputNormalizationRules(),
|
||||
'output_format_block' => $this->agentRunnerConfig->getInputNormalizationOutputFormatBlock(),
|
||||
'current_user_input_label' => $this->agentRunnerConfig->getInputNormalizationCurrentUserInputLabel(),
|
||||
],
|
||||
'fuzzy_routing' => [
|
||||
'enabled' => $this->agentRunnerConfig->isInputNormalizationFuzzyRoutingEnabled(),
|
||||
'min_token_length' => $this->agentRunnerConfig->getInputNormalizationFuzzyRoutingMinTokenLength(),
|
||||
'medium_token_length' => $this->agentRunnerConfig->getInputNormalizationFuzzyRoutingMediumTokenLength(),
|
||||
'long_token_length' => $this->agentRunnerConfig->getInputNormalizationFuzzyRoutingLongTokenLength(),
|
||||
'max_distance_short' => $this->agentRunnerConfig->getInputNormalizationFuzzyRoutingMaxDistanceShort(),
|
||||
'max_distance_medium' => $this->agentRunnerConfig->getInputNormalizationFuzzyRoutingMaxDistanceMedium(),
|
||||
'max_distance_long' => $this->agentRunnerConfig->getInputNormalizationFuzzyRoutingMaxDistanceLong(),
|
||||
'min_similarity_percent' => $this->agentRunnerConfig->getInputNormalizationFuzzyRoutingMinSimilarityPercent(),
|
||||
'terms' => $this->agentRunnerConfig->getInputNormalizationFuzzyRoutingTerms(),
|
||||
],
|
||||
],
|
||||
'messages' => [
|
||||
'empty_prompt' => $this->agentRunnerConfig->getEmptyPromptMessage(),
|
||||
'analyze_request' => $this->agentRunnerConfig->getAnalyzeRequestMessage(),
|
||||
@@ -1027,6 +1054,58 @@ final readonly class RetriexEffectiveConfigProvider
|
||||
$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);
|
||||
|
||||
$normalization = is_array($agent['input_normalization'] ?? null) ? $agent['input_normalization'] : [];
|
||||
$normalizationPrompt = is_array($normalization['prompt'] ?? null) ? $normalization['prompt'] : [];
|
||||
if (($this->asInt($normalization['max_input_chars'] ?? null) ?? 0) < 1) {
|
||||
$errors[] = 'agent.input_normalization.max_input_chars must be greater than 0.';
|
||||
}
|
||||
if (($this->asInt($normalization['max_output_chars'] ?? null) ?? 0) < 1) {
|
||||
$errors[] = 'agent.input_normalization.max_output_chars must be greater than 0.';
|
||||
}
|
||||
if (($this->asInt($normalization['max_added_tokens'] ?? null) ?? -1) < 0) {
|
||||
$errors[] = 'agent.input_normalization.max_added_tokens must be greater than or equal to 0.';
|
||||
}
|
||||
if (($this->asInt($normalization['max_length_ratio_percent'] ?? null) ?? 0) < 100) {
|
||||
$errors[] = 'agent.input_normalization.max_length_ratio_percent must be at least 100.';
|
||||
}
|
||||
$this->validateRegexPattern($normalization['output_prefix_pattern'] ?? null, 'agent.input_normalization.output_prefix_pattern', $errors);
|
||||
$this->validateRegexPatternList($normalization['skip_patterns'] ?? [], 'agent.input_normalization.skip_patterns', $errors);
|
||||
$this->validateStringList($this->toList($normalizationPrompt['rules'] ?? []), 'agent.input_normalization.prompt.rules', $errors, $warnings);
|
||||
|
||||
$fuzzyRouting = is_array($normalization['fuzzy_routing'] ?? null) ? $normalization['fuzzy_routing'] : [];
|
||||
if (($this->asInt($fuzzyRouting['min_token_length'] ?? null) ?? 0) < 1) {
|
||||
$errors[] = 'agent.input_normalization.fuzzy_routing.min_token_length must be greater than 0.';
|
||||
}
|
||||
if (($this->asInt($fuzzyRouting['medium_token_length'] ?? null) ?? 0) < 1) {
|
||||
$errors[] = 'agent.input_normalization.fuzzy_routing.medium_token_length must be greater than 0.';
|
||||
}
|
||||
if (($this->asInt($fuzzyRouting['long_token_length'] ?? null) ?? 0) < 1) {
|
||||
$errors[] = 'agent.input_normalization.fuzzy_routing.long_token_length must be greater than 0.';
|
||||
}
|
||||
if (($this->asInt($fuzzyRouting['max_distance_short'] ?? null) ?? -1) < 0) {
|
||||
$errors[] = 'agent.input_normalization.fuzzy_routing.max_distance_short must be greater than or equal to 0.';
|
||||
}
|
||||
if (($this->asInt($fuzzyRouting['max_distance_medium'] ?? null) ?? -1) < 0) {
|
||||
$errors[] = 'agent.input_normalization.fuzzy_routing.max_distance_medium must be greater than or equal to 0.';
|
||||
}
|
||||
if (($this->asInt($fuzzyRouting['max_distance_long'] ?? null) ?? -1) < 0) {
|
||||
$errors[] = 'agent.input_normalization.fuzzy_routing.max_distance_long must be greater than or equal to 0.';
|
||||
}
|
||||
$minSimilarityPercent = $this->asInt($fuzzyRouting['min_similarity_percent'] ?? null) ?? 0;
|
||||
if ($minSimilarityPercent < 1 || $minSimilarityPercent > 100) {
|
||||
$errors[] = 'agent.input_normalization.fuzzy_routing.min_similarity_percent must be between 1 and 100.';
|
||||
}
|
||||
$this->validateStringList($this->toList($fuzzyRouting['terms'] ?? []), 'agent.input_normalization.fuzzy_routing.terms', $errors, $warnings);
|
||||
if (trim((string) ($normalizationPrompt['intro'] ?? '')) === '') {
|
||||
$errors[] = 'agent.input_normalization.prompt.intro must not be empty.';
|
||||
}
|
||||
if (trim((string) ($normalizationPrompt['output_format_block'] ?? '')) === '') {
|
||||
$errors[] = 'agent.input_normalization.prompt.output_format_block must not be empty.';
|
||||
}
|
||||
if (trim((string) ($normalizationPrompt['current_user_input_label'] ?? '')) === '') {
|
||||
$errors[] = 'agent.input_normalization.prompt.current_user_input_label must not be empty.';
|
||||
}
|
||||
|
||||
$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);
|
||||
|
||||
Reference in New Issue
Block a user