Skip to content

feat: dynamic custom model IDs and flexible model mapping - #331

Open
hitesharma wants to merge 1 commit into
badrisnarayanan:mainfrom
hitesharma:main
Open

feat: dynamic custom model IDs and flexible model mapping#331
hitesharma wants to merge 1 commit into
badrisnarayanan:mainfrom
hitesharma:main

Conversation

@hitesharma

Copy link
Copy Markdown

Summary

This PR introduces the ability for users to dynamically add, remove, and map custom model IDs through the Web UI. It removes the reliance on a hardcoded list of supported models, allowing for easier
integration of new or specialized model variants without requiring a server restart or code changes.

Key Changes

  • Dynamic Model Management: Added backend API endpoints (/api/models) and UI controls to add or delete custom model IDs that persist across sessions.
  • Flexible Model Mapping: Converted the "Target Model ID" mapping in settings from a strict dropdown to a text input with autocomplete support, enabling redirection to any arbitrary model ID.
  • Enhanced Validation: Updated server-side validation logic to automatically trust user-defined custom models.
  • UI/UX Polishing: Integrated the model management controls into the existing filter bar with matching dimensions and typography for a cohesive look.

Test Plan

  • Add a new custom model ID via the "Models" tab and verify it appears in the quota list.
  • Delete a custom model and verify it is removed from the list and the configuration file.
  • Go to "Settings" and map an existing model to a custom string; verify the change persists.
  • Verify that autocomplete still works for pre-existing models in the mapping field.
  • Run npm test to ensure no regressions in core proxy logic.

  - Added backend support for custom model IDs in config and model validation logic
  - Implemented POST and DELETE /api/models endpoints for custom model management
  - Added "Add Custom Model ID" UI to the Models view with integrated filter styling
  - Converted Model Mapping from a strict dropdown to a flexible text input with autocomplete
  - Updated the frontend data store to persist and cache custom model state
  - Included custom model data in the /account-limits API response

  Summary of Changes by Component:

  - Backend Core:
    - src/config.js: Added customModels to the default configuration.
    - src/server.js: Exposes customModels to the frontend and includes them in unique model detection.
    - src/cloudcode/model-api.js: Overrides strict validation to support custom models.
    - src/webui/index.js: New REST API endpoints for model management.
  - Frontend UI:
    - public/views/models.html: Integrated the new "Add" textbox and button into the filter bar.
    - public/views/settings.html: Switched Mapping to a text input with <datalist> autocomplete.
    - public/js/components/models.js: Logic for async model addition/deletion and toast notifications.
    - public/js/data-store.js: Global state management for custom models and caching.

Signed-off-by: hitesharma <hitesharma3899@gmail.com>
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.

1 participant