Skip to content

Feat/support hybrid model selection rebase#80

Merged
NeonDaniel merged 18 commits into
devfrom
feat/Support-hybrid-model-selection-rebase
Jun 5, 2026
Merged

Feat/support hybrid model selection rebase#80
NeonDaniel merged 18 commits into
devfrom
feat/Support-hybrid-model-selection-rebase

Conversation

@NeonCharlie-24

@NeonCharlie-24 NeonCharlie-24 commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

Description

Adds per-user LLM backend selection, allowing each user to configure which LLM provider (Gemini, Ollama, vLLM) powers the orchestrator and each individual advisor.

User configurations are persisted to the database via a new llm_config field on the User model. The backend resolves the correct LLM client per-persona at chat time based on the stored config. The frontend exposes this through an AdvisorConfigPanel component in the Settings modal, with backend health checks running periodically to keep the available backends list current.

Admins can now disable individual backends via enabled: false in config.yaml, and the default backend is resolved dynamically at startup — preferring Gemini but falling back to the first available. The frontend no longer hardcodes Gemini as a fallback; all UI selectors are driven by the available backends returned from the API.

BrainForge advisors are excluded from model configuration since they are bound to their own LLM backend.

Issues

Closes #51
Closes #59
Closes #71

Other Notes

  • Backend health checks run on a configurable interval (llm.health_check_interval in config.py), which is currently set to 5 min.
  • Backend config (gemini, ollama, vllm) now supports an enabled flag — defaults to true, set to false to hide from users.
  • If no backends are available at startup, the app raises a RuntimeError with an actionable message rather than failing silently.

NeonRyan and others added 12 commits June 1, 2026 14:48
…fold)

Adds a 4th "Hybrid" option to the provider dropdown with a purple
"Mixed" badge and dark-mode fix, plus a Settings2 configure button
on the selected hybrid row. Passes new `defaultBackend` and
`backendLocked` (BrainForge) fields from `/api/config` personas
through AppConfigContext for the upcoming mapping UI.

Backend needs:
- `default_backend` + `brainforge` flags on persona config
- accept "hybrid" on POST /switch-provider
- GET/POST /hybrid-config for { orchestrator, personas{} } map
- per-persona inference routing; BrainForge hard-pinned
… and hybird (different llm per persona/orchestrator) modes.
- Added HybridConfigModal for configuring hybrid LLM settings.
- Refactored state management to support both uniform and hybrid modes.
-Each adviosr can now have its own model
…me screens and settigns pages once merges are completed.
- Added functionality for updating user profile information (first name, last name).
- Implemented password change and account deletion processes with confirmation.
- Improved modal behavior to prevent accidental closure during text selection.
- Updated ChatPage to integrate new SettingsModal features, including user update and sign-out callbacks.
…revent their underlying models from being changed.
@NeonCharlie-24 NeonCharlie-24 added this to the 2.1 milestone Jun 2, 2026
@NeonCharlie-24 NeonCharlie-24 marked this pull request as ready for review June 2, 2026 19:36
@NeonCharlie-24 NeonCharlie-24 requested a review from NeonDaniel June 2, 2026 19:36

@NeonDaniel NeonDaniel left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Read through backend changes and left some comments

Comment thread multi_llm_chatbot_backend/app/api/routes/provider.py
Comment thread multi_llm_chatbot_backend/app/models/user.py Outdated
Comment thread multi_llm_chatbot_backend/app/tests/unit/test_available_backends.py
Comment thread multi_llm_chatbot_backend/app/config.py Outdated
Comment thread multi_llm_chatbot_backend/app/core/bootstrap.py Outdated
@NeonDaniel

Copy link
Copy Markdown
Member

Couple front-end notes for @NeonRyan

  • The persona names in dark mode are rendered in black text that should be white; only the persona names appear to be affected.
  • Currently, changing the default backend doesn't appear to change any of the personas on that page that are set to the default value. I think we previously discussed having a "default" option in those lists so that its clear they are not overriding the default value and so that changing the default value updates those personas. Alternatively, setting the individual personas to None or "Default" by default would work

@NeonCharlie-24 NeonCharlie-24 requested a review from NeonDaniel June 3, 2026 17:36
Comment thread multi_llm_chatbot_backend/app/api/routes/provider.py
@NeonDaniel NeonDaniel merged commit 300ed29 into dev Jun 5, 2026
3 checks passed
@NeonDaniel NeonDaniel deleted the feat/Support-hybrid-model-selection-rebase branch June 5, 2026 19:46
@NeonDaniel NeonDaniel mentioned this pull request Jun 9, 2026
NeonDaniel added a commit that referenced this pull request Jun 10, 2026
# Changelog
  
## [2.0.1a11](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a11)
(2026-06-09)
  
[Full
Changelog](2.0.1a10...2.0.1a11)
  
  **Fixed bugs:**
  
- \[BUG\] Disable all advisors button throwing 400 error
[\#83](#83)
  
  **Merged pull requests:**
  
- Fix/disable all error
[\#84](#84)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
  
## [2.0.1a10](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a10)
(2026-06-09)
  
[Full
Changelog](2.0.1a9...2.0.1a10)
  
  **Fixed bugs:**
  
- \[BUG\] Advisor images are broken in production
[\#79](#79)
  
  **Merged pull requests:**
  
- fixed path for bundled avatar URIs.
[\#82](#82)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
  
## [2.0.1a9](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a9)
(2026-06-09)
  
[Full
Changelog](2.0.1a8...2.0.1a9)
  
  **Implemented enhancements:**
  
- \[FEAT\] Different Response Modes
[\#50](#50)
  
  **Merged pull requests:**
  
- Enhance chat functionality with response mode toggle
[\#61](#61)
([NeonRyan](https://github.com/NeonRyan))
  
## [2.0.1a8](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a8)
(2026-06-05)
  
[Full
Changelog](2.0.1a7...2.0.1a8)
  
  **Implemented enhancements:**
  
- \[FEAT\] Filter available LLM Backends based on config
[\#71](#71)
- \[FEAT\] Support "Hybrid" model selection
[\#51](#51)
  
  **Merged pull requests:**
  
- Feat/support hybrid model selection rebase
[\#80](#80)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
  
## [2.0.1a7](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a7)
(2026-05-30)
  
[Full
Changelog](2.0.1a6...2.0.1a7)
  
  **Implemented enhancements:**
  
- \[FEAT\] Move all message persistence from frontend to backend
[\#46](#46)
  
  **Merged pull requests:**
  
- persist advisor responses to db in /chat-stream endpoint.
[\#78](#78)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
  
## [2.0.1a6](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a6)
(2026-05-29)
  
[Full
Changelog](2.0.1a5...2.0.1a6)
  
  **Implemented enhancements:**
  
- \[FEAT\] Support BrainForge LLM Backend
[\#49](#49)
  
  **Merged pull requests:**
  
- BrainForge LLM Integration
[\#62](#62)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
  
## [2.0.1a5](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a5)
(2026-05-29)
  
[Full
Changelog](2.0.1a4...2.0.1a5)
  
  **Implemented enhancements:**
  
- \[FEAT\] Evaluate old\_routes.py for deprecation
[\#74](#74)
  
  **Merged pull requests:**
  
- deprecated old\_routes.py
[\#77](#77)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
  
## [2.0.1a4](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a4)
(2026-05-28)
  
[Full
Changelog](2.0.1a3...2.0.1a4)
  
  **Implemented enhancements:**
  
- \[FEAT\] Disable Specific Personas
[\#64](#64)
- \[FEAT\] User Tutorial
[\#29](#29)
  
  **Merged pull requests:**
  
- Disable Specific User Personas
[\#65](#65)
([NeonRyan](https://github.com/NeonRyan))
  
## [2.0.1a3](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a3)
(2026-05-21)
  
[Full
Changelog](2.0.1a2...2.0.1a3)
  
  **Merged pull requests:**
  
- Add Onboarding tour
[\#48](#48)
([NeonRyan](https://github.com/NeonRyan))
  
## [2.0.1a2](https://github.com/NeonGeckoCom/CCAI-Demo/tree/2.0.1a2)
(2026-05-19)
  
[Full
Changelog](33862e6...2.0.1a2)
  
  **Implemented enhancements:**
  
- \[FEAT\] Clear User Data
[\#52](#52)
- \[FEAT\] Support tools
[\#34](#34)
- \[FEAT\] Add endpoint and UI for User Account updates
[\#26](#26)
- \[FEAT\] Support advisor avatar images
[\#25](#25)
- \[FEAT\] Configurable User Guide
[\#24](#24)
- \[FEAT\] Support vLLM endpoints
[\#22](#22)
- \[FEAT\] Improved persona configuration handling
[\#8](#8)
- \[FEAT\] Implement automatic color picker for personas
[\#7](#7)
- \[FEAT\] Validate configured icons
[\#6](#6)
- \[FEAT\] Improved Checks for "Clarification Needed"
[\#5](#5)
- \[FEAT\] Versioning and release automation
[\#4](#4)
  
  **Fixed bugs:**
  
- \[BUG\] Deleting a chat in the UI causes an empty chat to be created
[\#45](#45)
- \[BUG\] User inputs are sometimes repeated
[\#42](#42)
- \[BUG\] Improved method for LLM JSON Generation
[\#13](#13)
  
  **Closed issues:**
  
- Pin the requirements.txt to stable versions
[\#37](#37)
  
  **Merged pull requests:**
  
- feat/Added front end support for settings page
[\#60](#60)
([NeonRyan](https://github.com/NeonRyan))
- Clear User Data
[\#58](#58)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Feat/improve clarification check
[\#57](#57)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- UI Improvements
[\#56](#56)
([NeonRyan](https://github.com/NeonRyan))
- Fix bug around chat deletion
[\#54](#54)
([NeonRyan](https://github.com/NeonRyan))
- Add User Guide
[\#53](#53)
([NeonRyan](https://github.com/NeonRyan))
- Add versioning automation
[\#47](#47)
([NeonDaniel](https://github.com/NeonDaniel))
- Fix/dup first message
[\#44](#44)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Feat/persona avatars
[\#43](#43)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Feat/account management
[\#41](#41)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Fix/json output
[\#40](#40)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Feat/advisor tools
[\#38](#38)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Feat/vllm endpoints
[\#36](#36)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Refactor/unittests
[\#33](#33)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Support Voice Interaction
[\#32](#32)
([NeonDaniel](https://github.com/NeonDaniel))
- Fix/structured json output
[\#30](#30)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Feat/auto persona colors
[\#23](#23)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Feat/validate lucide icons
[\#21](#21)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Initial setup of GitHub Actions workflow
[\#20](#20)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Refactor chat UI layout
[\#19](#19)
([NeonDaniel](https://github.com/NeonDaniel))
- Stream LLM Responses
[\#18](#18)
([NeonDaniel](https://github.com/NeonDaniel))
- Feat/improve persona config
[\#16](#16)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Add Neon AI Branding
[\#15](#15)
([NeonDaniel](https://github.com/NeonDaniel))
- Docs/update readme repo URL
[\#14](#14)
([NeonCharlie-24](https://github.com/NeonCharlie-24))
- Improve backend logic around user input parsing
[\#12](#12)
([NeonDaniel](https://github.com/NeonDaniel))
- Fix Home navigation to prevent logging out
[\#11](#11)
([NeonDaniel](https://github.com/NeonDaniel))
- Add configuration for Undergrad Advisor Panel
[\#10](#10)
([NeonDaniel](https://github.com/NeonDaniel))
- Add configuration support
[\#3](#3)
([NeonDaniel](https://github.com/NeonDaniel))
- Docker optimization by Cursor
[\#2](#2)
([NeonDaniel](https://github.com/NeonDaniel))
- Implement Docker deployment
[\#1](#1)
([NeonDaniel](https://github.com/NeonDaniel))
  
  
  
\* *This Changelog was automatically generated by
[github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] Filter available LLM Backends based on config [FEAT] Support "Hybrid" model selection

3 participants