-
Notifications
You must be signed in to change notification settings - Fork 242
Allow semantic cache similarity threshold to be set at the category level #493
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
✅ Deploy Preview for vllm-semantic-router ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com>
Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com>
👥 vLLM Semantic Team NotificationThe following members have been identified for the changed files in this PR and have been automatically assigned: 📁
|
|
@copilot please update other config yamls under config directory to adjust these new semantic cache configuration. Then update the doc under website directory about this change |
- Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com>
Updated all config YAML files and documentation: Config files updated (7 files):
All configs now include commented examples showing category-level cache settings. Documentation updated (3 files):
Commit: Updated config files and documentation for category-level cache settings (latest commit) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements category-level semantic cache configuration, allowing fine-grained control over caching behavior per category. Previously, cache settings were global only, creating a trade-off between high thresholds for sensitive categories and low thresholds for better cache hit rates in general categories. This change enables each category to specify its own cache enabled/disabled setting and similarity threshold.
Key Changes:
- Added
semantic_cache_enabledandsemantic_cache_similarity_thresholdfields to Category struct with hierarchical fallback to global settings - Implemented
FindSimilarWithThreshold()method in cache backends to support category-specific thresholds - Modified request handling to classify category before cache lookup and use category-specific settings
Reviewed Changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/semantic-router/pkg/config/config.go | Added category-level cache fields and helper methods with fallback logic |
| src/semantic-router/pkg/cache/cache_interface.go | Added FindSimilarWithThreshold method to CacheBackend interface |
| src/semantic-router/pkg/cache/inmemory_cache.go | Implemented FindSimilarWithThreshold for in-memory cache backend |
| src/semantic-router/pkg/cache/milvus_cache.go | Implemented FindSimilarWithThreshold for Milvus cache backend |
| src/semantic-router/pkg/extproc/request_handler.go | Modified to classify category early and use category-specific cache settings |
| src/semantic-router/pkg/config/config_test.go | Added tests for category-level cache configuration |
| src/semantic-router/pkg/extproc/caching_test.go | Added integration tests for category-specific caching |
| config/*.yaml | Updated all config files with commented examples of category-level cache settings |
| website/docs/*.md | Enhanced documentation with category-level configuration examples and best practices |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| var classificationText string | ||
| if len(userContent) > 0 { | ||
| classificationText = userContent | ||
| } else if len(nonUserMessages) > 0 { | ||
| classificationText = strings.Join(nonUserMessages, " ") | ||
| } |
Copilot
AI
Oct 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The classification text construction logic appears duplicated from elsewhere in the codebase. Consider extracting this pattern into a helper function to avoid code duplication and ensure consistent classification text handling across different parts of the request processing flow.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot please address this
| // FindSimilarWithThreshold searches for semantically similar cached requests using a specific threshold | ||
| func (c *InMemoryCache) FindSimilarWithThreshold(model string, query string, threshold float32) ([]byte, bool, error) { |
Copilot
AI
Oct 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The FindSimilarWithThreshold method duplicates significant logic from the existing FindSimilar method. Consider refactoring FindSimilar to call FindSimilarWithThreshold with the default threshold to eliminate code duplication and ensure consistent behavior between both methods.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot please address this and other duplicate functions
| // FindSimilarWithThreshold searches for semantically similar cached requests using a specific threshold | ||
| func (c *MilvusCache) FindSimilarWithThreshold(model string, query string, threshold float32) ([]byte, bool, error) { |
Copilot
AI
Oct 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The FindSimilarWithThreshold method duplicates significant logic from the existing FindSimilar method. Consider refactoring FindSimilar to call FindSimilarWithThreshold with the default threshold to eliminate code duplication and ensure consistent behavior between both methods.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot please address this and other duplicate functions
|
@copilot please don't create duplicate functions. |
Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com>
Fixed. Refactored |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 18 out of 18 changed files in this pull request and generated 2 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| 2. Global `semantic_cache.similarity_threshold` (if set) | ||
| 3. `bert_model.threshold` (final fallback) |
Copilot
AI
Oct 21, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The documented fallback hierarchy doesn't accurately reflect the code implementation. According to GetCacheSimilarityThresholdForCategory() in config.go (lines 808-817), the fallback is category-specific → GetCacheSimilarityThreshold(). The method GetCacheSimilarityThreshold() handles the global semantic_cache vs bert_model fallback internally, but that detail isn't directly part of the category lookup hierarchy.
| 2. Global `semantic_cache.similarity_threshold` (if set) | |
| 3. `bert_model.threshold` (final fallback) | |
| 2. Otherwise, falls back to the global `semantic_cache.similarity_threshold` (if set) | |
| 3. If neither is set, the global threshold logic internally falls back to `bert_model.threshold` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot Is there a global threshold? please check config/config.yaml first
|
@copilot please check the latest review comments |
I don't have access to view GitHub review comments directly. Could you please share the specific review feedback you'd like me to address? You can either:
I'm ready to make any necessary updates once I know what needs to be changed. |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
@copilot sign the last commit |
I cannot directly sign commits with GPG signatures using the available tools. The commit If you need a new commit from me that includes the Co-authored-by attribution, I would need to make an actual code change and use the report_progress tool, which automatically adds co-authorship. Alternatively, you can amend the commit signature through git directly if needed. Is there a specific change you'd like me to make to warrant a new commit? |
|
@copilot revert the unsigned commit |
Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com>
Reverted the unsigned commit. Restored the |
|
@copilot good to go |
…evel (vllm-project#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Huamin Chen <hchen@redhat.com>
* Update test description from Math to General (#483) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: add HuggingChat support (#477) * add chat ui to dashboard and docker compose & refactor dashboard/backend/ Signed-off-by: JaredforReal <w13431838023@gmail.com> * try fix network error Signed-off-by: JaredforReal <w13431838023@gmail.com> * more --------- Signed-off-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> * project: 2025 Q4 roadmap (#487) * project: q4 roadmap * project: q4 roadmap * project: q4 roadmap * more * more * more * more * feat: add shelleck precommit hook (#488) * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> --------- Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * project: add q4 roadmap news (#495) * fix missing shellcheck in pre-commit image (#497) Signed-off-by: carlory <baofa.fan@daocloud.io> * infra: update tools (#501) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat(demo): enhance OpenShift demo scripts with improved UX (#478) - Reduce model selection test to 4 categories (2×Model-A, 2×Model-B) - Add new "Classification Examples" option calling curl-examples.sh - Update reasoning examples to avoid cache hits from previous tests - Remove benign examples from PII and Jailbreak tests (show only attacks) - Enhance live-semantic-router-logs.sh with better color visibility: - Fix duplicate "WITH SCORE" text in classification output - Fix CACHE HIT background color extending over timestamp - Distinguish reasoning enabled vs disabled messages - Remove redundant "(standard routing)" text - Add background colors for Model-A/Model-B routing display These improvements make the live demo clearer and more impactful for presentations and demonstrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> * fix: fix precommit Argument list too long error (#502) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: enforce milvus dial timeout if set (#503) Signed-off-by: cryo <zdtna412@gmail.com> * Add IETF draft publication: Multi-Provider Extensions for Agentic AI Inference APIs (#506) * Initial plan * Add new IETF draft publication for Multi-Provider Extensions for Agentic AI Inference APIs Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Allow semantic cache similarity threshold to be set at the category level (#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Allow jailbreak detection and threshold to be configured at the category level (#508) * Initial plan * Add category-level jailbreak detection configuration Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add documentation for category-level jailbreak settings Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation for category-level jailbreak detection - Add category-level jailbreak configuration to jailbreak-protection.md - Update category configuration docs with jailbreak_enabled parameter - Add security-focused configuration example - Update global configuration docs with category override notes - Update README to mention fine-grained security control Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add category-level jailbreak threshold configuration - Add JailbreakThreshold field to Category struct - Add GetJailbreakThresholdForCategory helper method - Create CheckForJailbreakWithThreshold and AnalyzeContentForJailbreakWithThreshold methods - Update performSecurityChecks to use category-specific threshold - Add 5 comprehensive tests for threshold configuration - Update example configs with threshold tuning examples - Update documentation with threshold configuration and tuning guidelines - Add threshold tuning guide with recommendations for different category types Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Allow PII detection threshold to be set at the category level (#510) * Initial plan * Add category-level PII threshold support Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation with API integration notes Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix markdown linting issues Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix: The caller information points to the wrapper function instead of the actual call location (#518) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: Implement hybrid cache that use in-memory index and milvus based doc store (#504) * feat: add HNSW index to inmemory semantic cache and implement hybrid cache that use in-memory index and milvus based doc store Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: run go mod tidy to clean up module dependencies Signed-off-by: Huamin Chen <hchen@redhat.com> * conditionally build candle cuda support Signed-off-by: Huamin Chen <hchen@redhat.com> * rebuild index upon restart Signed-off-by: Huamin Chen <hchen@redhat.com> * precommit fix Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * disable cuda build on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com>
* Update test description from Math to General (#483) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: add HuggingChat support (#477) * add chat ui to dashboard and docker compose & refactor dashboard/backend/ Signed-off-by: JaredforReal <w13431838023@gmail.com> * try fix network error Signed-off-by: JaredforReal <w13431838023@gmail.com> * more --------- Signed-off-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> * project: 2025 Q4 roadmap (#487) * project: q4 roadmap * project: q4 roadmap * project: q4 roadmap * more * more * more * more * feat: add shelleck precommit hook (#488) * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> --------- Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * project: add q4 roadmap news (#495) * fix missing shellcheck in pre-commit image (#497) Signed-off-by: carlory <baofa.fan@daocloud.io> * infra: update tools (#501) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat(demo): enhance OpenShift demo scripts with improved UX (#478) - Reduce model selection test to 4 categories (2×Model-A, 2×Model-B) - Add new "Classification Examples" option calling curl-examples.sh - Update reasoning examples to avoid cache hits from previous tests - Remove benign examples from PII and Jailbreak tests (show only attacks) - Enhance live-semantic-router-logs.sh with better color visibility: - Fix duplicate "WITH SCORE" text in classification output - Fix CACHE HIT background color extending over timestamp - Distinguish reasoning enabled vs disabled messages - Remove redundant "(standard routing)" text - Add background colors for Model-A/Model-B routing display These improvements make the live demo clearer and more impactful for presentations and demonstrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> * fix: fix precommit Argument list too long error (#502) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: enforce milvus dial timeout if set (#503) Signed-off-by: cryo <zdtna412@gmail.com> * Add IETF draft publication: Multi-Provider Extensions for Agentic AI Inference APIs (#506) * Initial plan * Add new IETF draft publication for Multi-Provider Extensions for Agentic AI Inference APIs Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Allow semantic cache similarity threshold to be set at the category level (#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Allow jailbreak detection and threshold to be configured at the category level (#508) * Initial plan * Add category-level jailbreak detection configuration Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add documentation for category-level jailbreak settings Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation for category-level jailbreak detection - Add category-level jailbreak configuration to jailbreak-protection.md - Update category configuration docs with jailbreak_enabled parameter - Add security-focused configuration example - Update global configuration docs with category override notes - Update README to mention fine-grained security control Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add category-level jailbreak threshold configuration - Add JailbreakThreshold field to Category struct - Add GetJailbreakThresholdForCategory helper method - Create CheckForJailbreakWithThreshold and AnalyzeContentForJailbreakWithThreshold methods - Update performSecurityChecks to use category-specific threshold - Add 5 comprehensive tests for threshold configuration - Update example configs with threshold tuning examples - Update documentation with threshold configuration and tuning guidelines - Add threshold tuning guide with recommendations for different category types Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Allow PII detection threshold to be set at the category level (#510) * Initial plan * Add category-level PII threshold support Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation with API integration notes Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix markdown linting issues Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix: The caller information points to the wrapper function instead of the actual call location (#518) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: Implement hybrid cache that use in-memory index and milvus based doc store (#504) * feat: add HNSW index to inmemory semantic cache and implement hybrid cache that use in-memory index and milvus based doc store Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: run go mod tidy to clean up module dependencies Signed-off-by: Huamin Chen <hchen@redhat.com> * conditionally build candle cuda support Signed-off-by: Huamin Chen <hchen@redhat.com> * rebuild index upon restart Signed-off-by: Huamin Chen <hchen@redhat.com> * precommit fix Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * disable cuda build on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com>
* Update test description from Math to General (#483) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: add HuggingChat support (#477) * add chat ui to dashboard and docker compose & refactor dashboard/backend/ Signed-off-by: JaredforReal <w13431838023@gmail.com> * try fix network error Signed-off-by: JaredforReal <w13431838023@gmail.com> * more --------- Signed-off-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> * project: 2025 Q4 roadmap (#487) * project: q4 roadmap * project: q4 roadmap * project: q4 roadmap * more * more * more * more * feat: add shelleck precommit hook (#488) * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> --------- Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * project: add q4 roadmap news (#495) * fix missing shellcheck in pre-commit image (#497) Signed-off-by: carlory <baofa.fan@daocloud.io> * infra: update tools (#501) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat(demo): enhance OpenShift demo scripts with improved UX (#478) - Reduce model selection test to 4 categories (2×Model-A, 2×Model-B) - Add new "Classification Examples" option calling curl-examples.sh - Update reasoning examples to avoid cache hits from previous tests - Remove benign examples from PII and Jailbreak tests (show only attacks) - Enhance live-semantic-router-logs.sh with better color visibility: - Fix duplicate "WITH SCORE" text in classification output - Fix CACHE HIT background color extending over timestamp - Distinguish reasoning enabled vs disabled messages - Remove redundant "(standard routing)" text - Add background colors for Model-A/Model-B routing display These improvements make the live demo clearer and more impactful for presentations and demonstrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> * fix: fix precommit Argument list too long error (#502) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: enforce milvus dial timeout if set (#503) Signed-off-by: cryo <zdtna412@gmail.com> * Add IETF draft publication: Multi-Provider Extensions for Agentic AI Inference APIs (#506) * Initial plan * Add new IETF draft publication for Multi-Provider Extensions for Agentic AI Inference APIs Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Allow semantic cache similarity threshold to be set at the category level (#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Allow jailbreak detection and threshold to be configured at the category level (#508) * Initial plan * Add category-level jailbreak detection configuration Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add documentation for category-level jailbreak settings Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation for category-level jailbreak detection - Add category-level jailbreak configuration to jailbreak-protection.md - Update category configuration docs with jailbreak_enabled parameter - Add security-focused configuration example - Update global configuration docs with category override notes - Update README to mention fine-grained security control Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add category-level jailbreak threshold configuration - Add JailbreakThreshold field to Category struct - Add GetJailbreakThresholdForCategory helper method - Create CheckForJailbreakWithThreshold and AnalyzeContentForJailbreakWithThreshold methods - Update performSecurityChecks to use category-specific threshold - Add 5 comprehensive tests for threshold configuration - Update example configs with threshold tuning examples - Update documentation with threshold configuration and tuning guidelines - Add threshold tuning guide with recommendations for different category types Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Allow PII detection threshold to be set at the category level (#510) * Initial plan * Add category-level PII threshold support Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation with API integration notes Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix markdown linting issues Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix: The caller information points to the wrapper function instead of the actual call location (#518) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: Implement hybrid cache that use in-memory index and milvus based doc store (#504) * feat: add HNSW index to inmemory semantic cache and implement hybrid cache that use in-memory index and milvus based doc store Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: run go mod tidy to clean up module dependencies Signed-off-by: Huamin Chen <hchen@redhat.com> * conditionally build candle cuda support Signed-off-by: Huamin Chen <hchen@redhat.com> * rebuild index upon restart Signed-off-by: Huamin Chen <hchen@redhat.com> * precommit fix Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * disable cuda build on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> * merge main to feat branch Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com>
* Update test description from Math to General (#483) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: add HuggingChat support (#477) * add chat ui to dashboard and docker compose & refactor dashboard/backend/ Signed-off-by: JaredforReal <w13431838023@gmail.com> * try fix network error Signed-off-by: JaredforReal <w13431838023@gmail.com> * more --------- Signed-off-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> * project: 2025 Q4 roadmap (#487) * project: q4 roadmap * project: q4 roadmap * project: q4 roadmap * more * more * more * more * feat: add shelleck precommit hook (#488) * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> --------- Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * project: add q4 roadmap news (#495) * fix missing shellcheck in pre-commit image (#497) Signed-off-by: carlory <baofa.fan@daocloud.io> * infra: update tools (#501) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat(demo): enhance OpenShift demo scripts with improved UX (#478) - Reduce model selection test to 4 categories (2×Model-A, 2×Model-B) - Add new "Classification Examples" option calling curl-examples.sh - Update reasoning examples to avoid cache hits from previous tests - Remove benign examples from PII and Jailbreak tests (show only attacks) - Enhance live-semantic-router-logs.sh with better color visibility: - Fix duplicate "WITH SCORE" text in classification output - Fix CACHE HIT background color extending over timestamp - Distinguish reasoning enabled vs disabled messages - Remove redundant "(standard routing)" text - Add background colors for Model-A/Model-B routing display These improvements make the live demo clearer and more impactful for presentations and demonstrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> * fix: fix precommit Argument list too long error (#502) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: enforce milvus dial timeout if set (#503) Signed-off-by: cryo <zdtna412@gmail.com> * Add IETF draft publication: Multi-Provider Extensions for Agentic AI Inference APIs (#506) * Initial plan * Add new IETF draft publication for Multi-Provider Extensions for Agentic AI Inference APIs Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Allow semantic cache similarity threshold to be set at the category level (#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Allow jailbreak detection and threshold to be configured at the category level (#508) * Initial plan * Add category-level jailbreak detection configuration Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add documentation for category-level jailbreak settings Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation for category-level jailbreak detection - Add category-level jailbreak configuration to jailbreak-protection.md - Update category configuration docs with jailbreak_enabled parameter - Add security-focused configuration example - Update global configuration docs with category override notes - Update README to mention fine-grained security control Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add category-level jailbreak threshold configuration - Add JailbreakThreshold field to Category struct - Add GetJailbreakThresholdForCategory helper method - Create CheckForJailbreakWithThreshold and AnalyzeContentForJailbreakWithThreshold methods - Update performSecurityChecks to use category-specific threshold - Add 5 comprehensive tests for threshold configuration - Update example configs with threshold tuning examples - Update documentation with threshold configuration and tuning guidelines - Add threshold tuning guide with recommendations for different category types Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Allow PII detection threshold to be set at the category level (#510) * Initial plan * Add category-level PII threshold support Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation with API integration notes Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix markdown linting issues Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix: The caller information points to the wrapper function instead of the actual call location (#518) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: Implement hybrid cache that use in-memory index and milvus based doc store (#504) * feat: add HNSW index to inmemory semantic cache and implement hybrid cache that use in-memory index and milvus based doc store Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: run go mod tidy to clean up module dependencies Signed-off-by: Huamin Chen <hchen@redhat.com> * conditionally build candle cuda support Signed-off-by: Huamin Chen <hchen@redhat.com> * rebuild index upon restart Signed-off-by: Huamin Chen <hchen@redhat.com> * precommit fix Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * disable cuda build on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com>
* Update test description from Math to General (#483) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: add HuggingChat support (#477) * add chat ui to dashboard and docker compose & refactor dashboard/backend/ Signed-off-by: JaredforReal <w13431838023@gmail.com> * try fix network error Signed-off-by: JaredforReal <w13431838023@gmail.com> * more --------- Signed-off-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> * project: 2025 Q4 roadmap (#487) * project: q4 roadmap * project: q4 roadmap * project: q4 roadmap * more * more * more * more * feat: add shelleck precommit hook (#488) * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> --------- Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * project: add q4 roadmap news (#495) * fix missing shellcheck in pre-commit image (#497) Signed-off-by: carlory <baofa.fan@daocloud.io> * infra: update tools (#501) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat(demo): enhance OpenShift demo scripts with improved UX (#478) - Reduce model selection test to 4 categories (2×Model-A, 2×Model-B) - Add new "Classification Examples" option calling curl-examples.sh - Update reasoning examples to avoid cache hits from previous tests - Remove benign examples from PII and Jailbreak tests (show only attacks) - Enhance live-semantic-router-logs.sh with better color visibility: - Fix duplicate "WITH SCORE" text in classification output - Fix CACHE HIT background color extending over timestamp - Distinguish reasoning enabled vs disabled messages - Remove redundant "(standard routing)" text - Add background colors for Model-A/Model-B routing display These improvements make the live demo clearer and more impactful for presentations and demonstrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> * fix: fix precommit Argument list too long error (#502) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: enforce milvus dial timeout if set (#503) Signed-off-by: cryo <zdtna412@gmail.com> * Add IETF draft publication: Multi-Provider Extensions for Agentic AI Inference APIs (#506) * Initial plan * Add new IETF draft publication for Multi-Provider Extensions for Agentic AI Inference APIs Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Allow semantic cache similarity threshold to be set at the category level (#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Allow jailbreak detection and threshold to be configured at the category level (#508) * Initial plan * Add category-level jailbreak detection configuration Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add documentation for category-level jailbreak settings Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation for category-level jailbreak detection - Add category-level jailbreak configuration to jailbreak-protection.md - Update category configuration docs with jailbreak_enabled parameter - Add security-focused configuration example - Update global configuration docs with category override notes - Update README to mention fine-grained security control Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add category-level jailbreak threshold configuration - Add JailbreakThreshold field to Category struct - Add GetJailbreakThresholdForCategory helper method - Create CheckForJailbreakWithThreshold and AnalyzeContentForJailbreakWithThreshold methods - Update performSecurityChecks to use category-specific threshold - Add 5 comprehensive tests for threshold configuration - Update example configs with threshold tuning examples - Update documentation with threshold configuration and tuning guidelines - Add threshold tuning guide with recommendations for different category types Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Allow PII detection threshold to be set at the category level (#510) * Initial plan * Add category-level PII threshold support Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation with API integration notes Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix markdown linting issues Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix: The caller information points to the wrapper function instead of the actual call location (#518) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: Implement hybrid cache that use in-memory index and milvus based doc store (#504) * feat: add HNSW index to inmemory semantic cache and implement hybrid cache that use in-memory index and milvus based doc store Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: run go mod tidy to clean up module dependencies Signed-off-by: Huamin Chen <hchen@redhat.com> * conditionally build candle cuda support Signed-off-by: Huamin Chen <hchen@redhat.com> * rebuild index upon restart Signed-off-by: Huamin Chen <hchen@redhat.com> * precommit fix Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * disable cuda build on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com>
* Update test description from Math to General (#483) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: add HuggingChat support (#477) * add chat ui to dashboard and docker compose & refactor dashboard/backend/ Signed-off-by: JaredforReal <w13431838023@gmail.com> * try fix network error Signed-off-by: JaredforReal <w13431838023@gmail.com> * more --------- Signed-off-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> * project: 2025 Q4 roadmap (#487) * project: q4 roadmap * project: q4 roadmap * project: q4 roadmap * more * more * more * more * feat: add shelleck precommit hook (#488) * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> --------- Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * project: add q4 roadmap news (#495) * fix missing shellcheck in pre-commit image (#497) Signed-off-by: carlory <baofa.fan@daocloud.io> * infra: update tools (#501) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat(demo): enhance OpenShift demo scripts with improved UX (#478) - Reduce model selection test to 4 categories (2×Model-A, 2×Model-B) - Add new "Classification Examples" option calling curl-examples.sh - Update reasoning examples to avoid cache hits from previous tests - Remove benign examples from PII and Jailbreak tests (show only attacks) - Enhance live-semantic-router-logs.sh with better color visibility: - Fix duplicate "WITH SCORE" text in classification output - Fix CACHE HIT background color extending over timestamp - Distinguish reasoning enabled vs disabled messages - Remove redundant "(standard routing)" text - Add background colors for Model-A/Model-B routing display These improvements make the live demo clearer and more impactful for presentations and demonstrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> * fix: fix precommit Argument list too long error (#502) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: enforce milvus dial timeout if set (#503) Signed-off-by: cryo <zdtna412@gmail.com> * Add IETF draft publication: Multi-Provider Extensions for Agentic AI Inference APIs (#506) * Initial plan * Add new IETF draft publication for Multi-Provider Extensions for Agentic AI Inference APIs Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Allow semantic cache similarity threshold to be set at the category level (#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Allow jailbreak detection and threshold to be configured at the category level (#508) * Initial plan * Add category-level jailbreak detection configuration Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add documentation for category-level jailbreak settings Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation for category-level jailbreak detection - Add category-level jailbreak configuration to jailbreak-protection.md - Update category configuration docs with jailbreak_enabled parameter - Add security-focused configuration example - Update global configuration docs with category override notes - Update README to mention fine-grained security control Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add category-level jailbreak threshold configuration - Add JailbreakThreshold field to Category struct - Add GetJailbreakThresholdForCategory helper method - Create CheckForJailbreakWithThreshold and AnalyzeContentForJailbreakWithThreshold methods - Update performSecurityChecks to use category-specific threshold - Add 5 comprehensive tests for threshold configuration - Update example configs with threshold tuning examples - Update documentation with threshold configuration and tuning guidelines - Add threshold tuning guide with recommendations for different category types Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Allow PII detection threshold to be set at the category level (#510) * Initial plan * Add category-level PII threshold support Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation with API integration notes Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix markdown linting issues Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix: The caller information points to the wrapper function instead of the actual call location (#518) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: Implement hybrid cache that use in-memory index and milvus based doc store (#504) * feat: add HNSW index to inmemory semantic cache and implement hybrid cache that use in-memory index and milvus based doc store Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: run go mod tidy to clean up module dependencies Signed-off-by: Huamin Chen <hchen@redhat.com> * conditionally build candle cuda support Signed-off-by: Huamin Chen <hchen@redhat.com> * rebuild index upon restart Signed-off-by: Huamin Chen <hchen@redhat.com> * precommit fix Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * disable cuda build on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> * merge main to feat branch Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com>
* refactor: Implement modular candle-binding architecture (#254) - Restructure codebase into modular layers (core/, ffi/, model_architectures/, classifiers/) - Add unified error handling and configuration loading systems - Implement dual-path architecture for traditional and LoRA models - Add comprehensive FFI layer with memory safety Maintains backward compatibility while enabling future model integrations. refactor: Implement modular candle-binding architecture - Restructure codebase into modular layers (core/, ffi/, model_architectures/, classifiers/) - Add unified error handling and configuration loading systems - Implement dual-path architecture for traditional and LoRA models - Add comprehensive FFI layer with memory safety Maintains backward compatibility while enabling future model integrations. Signed-off-by: OneZero-Y <aukovyps@163.com> * feat:unit tests for candle refactoring (#296) feat:unit tests for candle refactoring feat:unit tests for candle refactoring Signed-off-by: OneZero-Y <aukovyps@163.com> Signed-off-by: Huamin Chen <hchen@redhat.com> * feat:support for two long-context embedding models (Qwen3-Embedding-0.6B and EmbeddingGemma-300M) (#453) feat:support for two long-context embedding models (Qwen3-Embedding-0.6B and EmbeddingGemma-300M) Signed-off-by: OneZero-Y <aukovyps@163.com> Signed-off-by: Huamin Chen <hchen@redhat.com> * fix:Implement Comprehensive Rayon Parallelization for LoRA Classifiers (#464) Signed-off-by: OneZero-Y <aukovyps@163.com> Signed-off-by: Huamin Chen <hchen@redhat.com> * fix:Improve rust unit test and optimize concurrent tests with rayon (#471) - Add 6 new unit test files - Replace std::thread::spawn with rayon::par_iter Signed-off-by: OneZero-Y <aukovyps@163.com> Signed-off-by: Huamin Chen <hchen@redhat.com> * fix: resolve syntax errors after rebase Signed-off-by: Huamin Chen <hchen@redhat.com> * add additional update Signed-off-by: Huamin Chen <hchen@redhat.com> * Change label count params to c_int (#494) Signed-off-by: carlory <baofa.fan@daocloud.io> * update embedding setting in config (#489) Signed-off-by: Huamin Chen <hchen@redhat.com> * make CUDA and Flash Attention 2 optional features (#511) Signed-off-by: OneZero-Y <aukovyps@163.com> * fix: Fix duplicate UNIFIED_CLASSIFIER definition and optimize lock contention (#516) - Remove duplicate UNIFIED_CLASSIFIER global state - Optimize PARALLEL_LORA_ENGINE lock contention by using Arc clone Signed-off-by: OneZero-Y <aukovyps@163.com> * Merge main to candle refactoring (#523) * Update test description from Math to General (#483) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: add HuggingChat support (#477) * add chat ui to dashboard and docker compose & refactor dashboard/backend/ Signed-off-by: JaredforReal <w13431838023@gmail.com> * try fix network error Signed-off-by: JaredforReal <w13431838023@gmail.com> * more --------- Signed-off-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> * project: 2025 Q4 roadmap (#487) * project: q4 roadmap * project: q4 roadmap * project: q4 roadmap * more * more * more * more * feat: add shelleck precommit hook (#488) * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> --------- Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * project: add q4 roadmap news (#495) * fix missing shellcheck in pre-commit image (#497) Signed-off-by: carlory <baofa.fan@daocloud.io> * infra: update tools (#501) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat(demo): enhance OpenShift demo scripts with improved UX (#478) - Reduce model selection test to 4 categories (2×Model-A, 2×Model-B) - Add new "Classification Examples" option calling curl-examples.sh - Update reasoning examples to avoid cache hits from previous tests - Remove benign examples from PII and Jailbreak tests (show only attacks) - Enhance live-semantic-router-logs.sh with better color visibility: - Fix duplicate "WITH SCORE" text in classification output - Fix CACHE HIT background color extending over timestamp - Distinguish reasoning enabled vs disabled messages - Remove redundant "(standard routing)" text - Add background colors for Model-A/Model-B routing display These improvements make the live demo clearer and more impactful for presentations and demonstrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> * fix: fix precommit Argument list too long error (#502) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: enforce milvus dial timeout if set (#503) Signed-off-by: cryo <zdtna412@gmail.com> * Add IETF draft publication: Multi-Provider Extensions for Agentic AI Inference APIs (#506) * Initial plan * Add new IETF draft publication for Multi-Provider Extensions for Agentic AI Inference APIs Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Allow semantic cache similarity threshold to be set at the category level (#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Allow jailbreak detection and threshold to be configured at the category level (#508) * Initial plan * Add category-level jailbreak detection configuration Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add documentation for category-level jailbreak settings Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation for category-level jailbreak detection - Add category-level jailbreak configuration to jailbreak-protection.md - Update category configuration docs with jailbreak_enabled parameter - Add security-focused configuration example - Update global configuration docs with category override notes - Update README to mention fine-grained security control Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add category-level jailbreak threshold configuration - Add JailbreakThreshold field to Category struct - Add GetJailbreakThresholdForCategory helper method - Create CheckForJailbreakWithThreshold and AnalyzeContentForJailbreakWithThreshold methods - Update performSecurityChecks to use category-specific threshold - Add 5 comprehensive tests for threshold configuration - Update example configs with threshold tuning examples - Update documentation with threshold configuration and tuning guidelines - Add threshold tuning guide with recommendations for different category types Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Allow PII detection threshold to be set at the category level (#510) * Initial plan * Add category-level PII threshold support Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation with API integration notes Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix markdown linting issues Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix: The caller information points to the wrapper function instead of the actual call location (#518) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: Implement hybrid cache that use in-memory index and milvus based doc store (#504) * feat: add HNSW index to inmemory semantic cache and implement hybrid cache that use in-memory index and milvus based doc store Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: run go mod tidy to clean up module dependencies Signed-off-by: Huamin Chen <hchen@redhat.com> * conditionally build candle cuda support Signed-off-by: Huamin Chen <hchen@redhat.com> * rebuild index upon restart Signed-off-by: Huamin Chen <hchen@redhat.com> * precommit fix Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * disable cuda build on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Candle refactoring to main (#524) * Update test description from Math to General (#483) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: add HuggingChat support (#477) * add chat ui to dashboard and docker compose & refactor dashboard/backend/ Signed-off-by: JaredforReal <w13431838023@gmail.com> * try fix network error Signed-off-by: JaredforReal <w13431838023@gmail.com> * more --------- Signed-off-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> * project: 2025 Q4 roadmap (#487) * project: q4 roadmap * project: q4 roadmap * project: q4 roadmap * more * more * more * more * feat: add shelleck precommit hook (#488) * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> --------- Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * project: add q4 roadmap news (#495) * fix missing shellcheck in pre-commit image (#497) Signed-off-by: carlory <baofa.fan@daocloud.io> * infra: update tools (#501) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat(demo): enhance OpenShift demo scripts with improved UX (#478) - Reduce model selection test to 4 categories (2×Model-A, 2×Model-B) - Add new "Classification Examples" option calling curl-examples.sh - Update reasoning examples to avoid cache hits from previous tests - Remove benign examples from PII and Jailbreak tests (show only attacks) - Enhance live-semantic-router-logs.sh with better color visibility: - Fix duplicate "WITH SCORE" text in classification output - Fix CACHE HIT background color extending over timestamp - Distinguish reasoning enabled vs disabled messages - Remove redundant "(standard routing)" text - Add background colors for Model-A/Model-B routing display These improvements make the live demo clearer and more impactful for presentations and demonstrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> * fix: fix precommit Argument list too long error (#502) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: enforce milvus dial timeout if set (#503) Signed-off-by: cryo <zdtna412@gmail.com> * Add IETF draft publication: Multi-Provider Extensions for Agentic AI Inference APIs (#506) * Initial plan * Add new IETF draft publication for Multi-Provider Extensions for Agentic AI Inference APIs Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Allow semantic cache similarity threshold to be set at the category level (#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Allow jailbreak detection and threshold to be configured at the category level (#508) * Initial plan * Add category-level jailbreak detection configuration Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add documentation for category-level jailbreak settings Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation for category-level jailbreak detection - Add category-level jailbreak configuration to jailbreak-protection.md - Update category configuration docs with jailbreak_enabled parameter - Add security-focused configuration example - Update global configuration docs with category override notes - Update README to mention fine-grained security control Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add category-level jailbreak threshold configuration - Add JailbreakThreshold field to Category struct - Add GetJailbreakThresholdForCategory helper method - Create CheckForJailbreakWithThreshold and AnalyzeContentForJailbreakWithThreshold methods - Update performSecurityChecks to use category-specific threshold - Add 5 comprehensive tests for threshold configuration - Update example configs with threshold tuning examples - Update documentation with threshold configuration and tuning guidelines - Add threshold tuning guide with recommendations for different category types Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Allow PII detection threshold to be set at the category level (#510) * Initial plan * Add category-level PII threshold support Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation with API integration notes Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix markdown linting issues Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix: The caller information points to the wrapper function instead of the actual call location (#518) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: Implement hybrid cache that use in-memory index and milvus based doc store (#504) * feat: add HNSW index to inmemory semantic cache and implement hybrid cache that use in-memory index and milvus based doc store Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: run go mod tidy to clean up module dependencies Signed-off-by: Huamin Chen <hchen@redhat.com> * conditionally build candle cuda support Signed-off-by: Huamin Chen <hchen@redhat.com> * rebuild index upon restart Signed-off-by: Huamin Chen <hchen@redhat.com> * precommit fix Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * disable cuda build on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Merge candle refactoring 3 (#525) * Update test description from Math to General (#483) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: add HuggingChat support (#477) * add chat ui to dashboard and docker compose & refactor dashboard/backend/ Signed-off-by: JaredforReal <w13431838023@gmail.com> * try fix network error Signed-off-by: JaredforReal <w13431838023@gmail.com> * more --------- Signed-off-by: JaredforReal <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> * project: 2025 Q4 roadmap (#487) * project: q4 roadmap * project: q4 roadmap * project: q4 roadmap * more * more * more * more * feat: add shelleck precommit hook (#488) * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: add shelleck precommit hook Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> --------- Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * project: add q4 roadmap news (#495) * fix missing shellcheck in pre-commit image (#497) Signed-off-by: carlory <baofa.fan@daocloud.io> * infra: update tools (#501) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat(demo): enhance OpenShift demo scripts with improved UX (#478) - Reduce model selection test to 4 categories (2×Model-A, 2×Model-B) - Add new "Classification Examples" option calling curl-examples.sh - Update reasoning examples to avoid cache hits from previous tests - Remove benign examples from PII and Jailbreak tests (show only attacks) - Enhance live-semantic-router-logs.sh with better color visibility: - Fix duplicate "WITH SCORE" text in classification output - Fix CACHE HIT background color extending over timestamp - Distinguish reasoning enabled vs disabled messages - Remove redundant "(standard routing)" text - Add background colors for Model-A/Model-B routing display These improvements make the live demo clearer and more impactful for presentations and demonstrations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> * fix: fix precommit Argument list too long error (#502) Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> * feat: enforce milvus dial timeout if set (#503) Signed-off-by: cryo <zdtna412@gmail.com> * Add IETF draft publication: Multi-Provider Extensions for Agentic AI Inference APIs (#506) * Initial plan * Add new IETF draft publication for Multi-Provider Extensions for Agentic AI Inference APIs Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Allow semantic cache similarity threshold to be set at the category level (#493) * Initial plan * Add category-level cache settings: enabled and similarity_threshold Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Add comprehensive tests for category-level cache settings Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update config files and documentation for category-level cache settings - Updated 7 config YAML files (development, production, testing, e2e, and 3 recipes) with commented examples of category-level cache settings - Added comprehensive documentation section explaining category-level cache configuration - Updated semantic cache overview and in-memory cache docs with category-level examples - Added best practices for threshold selection and privacy considerations Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Remove duplicate code in FindSimilar functions Refactored FindSimilar() to delegate to FindSimilarWithThreshold() with default threshold instead of duplicating the entire implementation. This eliminates 226 lines of duplicate code across inmemory_cache.go and milvus_cache.go. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> * Update src/semantic-router/pkg/extproc/request_handler.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Revert changes from unsigned commit ae39fe2 Restored the classificationText empty check that was removed in the previous commit. Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Huamin Chen <rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Allow jailbreak detection and threshold to be configured at the category level (#508) * Initial plan * Add category-level jailbreak detection configuration Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add documentation for category-level jailbreak settings Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation for category-level jailbreak detection - Add category-level jailbreak configuration to jailbreak-protection.md - Update category configuration docs with jailbreak_enabled parameter - Add security-focused configuration example - Update global configuration docs with category override notes - Update README to mention fine-grained security control Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Add category-level jailbreak threshold configuration - Add JailbreakThreshold field to Category struct - Add GetJailbreakThresholdForCategory helper method - Create CheckForJailbreakWithThreshold and AnalyzeContentForJailbreakWithThreshold methods - Update performSecurityChecks to use category-specific threshold - Add 5 comprehensive tests for threshold configuration - Update example configs with threshold tuning examples - Update documentation with threshold configuration and tuning guidelines - Add threshold tuning guide with recommendations for different category types Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Allow PII detection threshold to be set at the category level (#510) * Initial plan * Add category-level PII threshold support Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Update documentation with API integration notes Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix markdown linting issues Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * Fix: The caller information points to the wrapper function instead of the actual call location (#518) Signed-off-by: carlory <baofa.fan@daocloud.io> * feat: Implement hybrid cache that use in-memory index and milvus based doc store (#504) * feat: add HNSW index to inmemory semantic cache and implement hybrid cache that use in-memory index and milvus based doc store Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: run go mod tidy to clean up module dependencies Signed-off-by: Huamin Chen <hchen@redhat.com> * conditionally build candle cuda support Signed-off-by: Huamin Chen <hchen@redhat.com> * rebuild index upon restart Signed-off-by: Huamin Chen <hchen@redhat.com> * precommit fix Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * fix precommit Signed-off-by: Huamin Chen <hchen@redhat.com> * disable cuda build on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> * review feedback Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> * merge main to feat branch Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com> * chore: fix unit test (#527) * chore: fix unit test Signed-off-by: Huamin Chen <hchen@redhat.com> * fix go vet Signed-off-by: Huamin Chen <hchen@redhat.com> * fix ci Signed-off-by: Huamin Chen <hchen@redhat.com> * fix ci Signed-off-by: Huamin Chen <hchen@redhat.com> * split test-binding to two stages on ci Signed-off-by: Huamin Chen <hchen@redhat.com> * ignore test failure due to embeddinggemma restriction Signed-off-by: Huamin Chen <hchen@redhat.com> * reorder ci test sequences to avoid missing models Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> * refactor: Replace lazy_static with OnceLock for zero-cost concurrent reads based on review (#528) * refactor: Replace lazy_static with OnceLock for zero-cost concurrent reads based on review #266 (comment) Signed-off-by: Huamin Chen <hchen@redhat.com> * update tests Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: fix lint error (#530) Signed-off-by: Huamin Chen <hchen@redhat.com> * Fix lint error2 (#531) * chore: fix lint error Signed-off-by: Huamin Chen <hchen@redhat.com> * chore: fix lint error Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: Huamin Chen <hchen@redhat.com> --------- Signed-off-by: OneZero-Y <aukovyps@163.com> Signed-off-by: Huamin Chen <hchen@redhat.com> Signed-off-by: carlory <baofa.fan@daocloud.io> Signed-off-by: JaredforReal <w13431838023@gmail.com> Signed-off-by: yuluo-yx <yuluo08290126@gmail.com> Signed-off-by: Yossi Ovadia <yovadia@redhat.com> Signed-off-by: cryo <zdtna412@gmail.com> Co-authored-by: OneZero-Y <aukovyps@163.com> Co-authored-by: 杨朱 · Kiki <baofa.fan@daocloud.io> Co-authored-by: Jared <w13431838023@gmail.com> Co-authored-by: bitliu <bitliu@tencent.com> Co-authored-by: shown <yuluo08290126@gmail.com> Co-authored-by: Yossi Ovadia <yovadia@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: cryo <zdtna412@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: rootfs <7062400+rootfs@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xunzhuo <48784001+Xunzhuo@users.noreply.github.com>

Task: Allow cache similarity to be set at the category level ✅
Status: COMPLETE - All requirements met, tested, documented, and code deduplicated
Summary
Successfully implemented category-level semantic cache configuration, allowing
enabledandsimilarity_thresholdto be set per category while keeping global cache infrastructure unchanged.✅ Completed Tasks:
📝 Latest Changes:
Reverted unsigned commit (commit: latest):
classificationText != ""check before callingfindCategoryForClassification()🎯 Key Features:
Flexibility: Each category can have its own cache settings
Fallback: Categories without settings use global defaults
Granular Control:
Clean Code: No code duplication - FindSimilar delegates to FindSimilarWithThreshold
Files Changed: 20 files total
Total: 760 insertions, 241 deletions across 20 files (includes removing 226 lines of duplicated code)
✅ All Tests Pass:
Ready for merge! 🚀
Original prompt
Fixes #492
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.