mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-02 12:05:54 +00:00
* feat(provider): add rerank model management as a core model type * feat(provider): add rerank support to existing requesters and new rerank providers * feat(web): add rerank model management UI and pipeline config * fix(provider): correct rerank support_type after verification - Add rerank to OpenRouter (confirmed /api/v1/rerank endpoint) - Remove rerank from Ollama (no native support, PR #7219 unmerged) - Remove rerank from JiekouAI (no rerank docs found, URL path mismatch) * fix(provider): remove alru_cache from model getters and add rerank param hints * fix: resolve lint errors - Remove unused alru_cache import from modelmgr.py - Remove unused error_message variable in invoke_rerank - Fix prettier formatting in frontend files Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix: remove unused exception variable - Change `except Exception as e:` to `except Exception:` since e is not used - Fix prettier formatting in ProviderCard.tsx Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix: apply ruff format Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * feat(template): add rerank config fields to default pipeline config Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * chore: remove PR.md Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(ui): remove duplicate rerank model form in AddModelPopover The form was being rendered twice: once in TabsContent manual mode and again in a separate conditional block for rerank tab. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
81 lines
3.1 KiB
Python
81 lines
3.1 KiB
Python
import sqlalchemy
|
|
|
|
from .base import Base
|
|
|
|
|
|
class ModelProvider(Base):
|
|
"""Model provider"""
|
|
|
|
__tablename__ = 'model_providers'
|
|
|
|
uuid = sqlalchemy.Column(sqlalchemy.String(255), primary_key=True, unique=True)
|
|
name = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
|
requester = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
|
base_url = sqlalchemy.Column(sqlalchemy.String(512), nullable=False)
|
|
api_keys = sqlalchemy.Column(sqlalchemy.JSON, nullable=False, default=[])
|
|
created_at = sqlalchemy.Column(sqlalchemy.DateTime, nullable=False, server_default=sqlalchemy.func.now())
|
|
updated_at = sqlalchemy.Column(
|
|
sqlalchemy.DateTime,
|
|
nullable=False,
|
|
server_default=sqlalchemy.func.now(),
|
|
onupdate=sqlalchemy.func.now(),
|
|
)
|
|
|
|
|
|
class LLMModel(Base):
|
|
"""LLM model"""
|
|
|
|
__tablename__ = 'llm_models'
|
|
|
|
uuid = sqlalchemy.Column(sqlalchemy.String(255), primary_key=True, unique=True)
|
|
name = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
|
provider_uuid = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
|
abilities = sqlalchemy.Column(sqlalchemy.JSON, nullable=False, default=[])
|
|
extra_args = sqlalchemy.Column(sqlalchemy.JSON, nullable=False, default={})
|
|
prefered_ranking = sqlalchemy.Column(sqlalchemy.Integer, nullable=False, default=0)
|
|
created_at = sqlalchemy.Column(sqlalchemy.DateTime, nullable=False, server_default=sqlalchemy.func.now())
|
|
updated_at = sqlalchemy.Column(
|
|
sqlalchemy.DateTime,
|
|
nullable=False,
|
|
server_default=sqlalchemy.func.now(),
|
|
onupdate=sqlalchemy.func.now(),
|
|
)
|
|
|
|
|
|
class EmbeddingModel(Base):
|
|
"""Embedding model"""
|
|
|
|
__tablename__ = 'embedding_models'
|
|
|
|
uuid = sqlalchemy.Column(sqlalchemy.String(255), primary_key=True, unique=True)
|
|
name = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
|
provider_uuid = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
|
extra_args = sqlalchemy.Column(sqlalchemy.JSON, nullable=False, default={})
|
|
prefered_ranking = sqlalchemy.Column(sqlalchemy.Integer, nullable=False, default=0)
|
|
created_at = sqlalchemy.Column(sqlalchemy.DateTime, nullable=False, server_default=sqlalchemy.func.now())
|
|
updated_at = sqlalchemy.Column(
|
|
sqlalchemy.DateTime,
|
|
nullable=False,
|
|
server_default=sqlalchemy.func.now(),
|
|
onupdate=sqlalchemy.func.now(),
|
|
)
|
|
|
|
|
|
class RerankModel(Base):
|
|
"""Rerank model"""
|
|
|
|
__tablename__ = 'rerank_models'
|
|
|
|
uuid = sqlalchemy.Column(sqlalchemy.String(255), primary_key=True, unique=True)
|
|
name = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
|
provider_uuid = sqlalchemy.Column(sqlalchemy.String(255), nullable=False)
|
|
extra_args = sqlalchemy.Column(sqlalchemy.JSON, nullable=False, default={})
|
|
prefered_ranking = sqlalchemy.Column(sqlalchemy.Integer, nullable=False, default=0)
|
|
created_at = sqlalchemy.Column(sqlalchemy.DateTime, nullable=False, server_default=sqlalchemy.func.now())
|
|
updated_at = sqlalchemy.Column(
|
|
sqlalchemy.DateTime,
|
|
nullable=False,
|
|
server_default=sqlalchemy.func.now(),
|
|
onupdate=sqlalchemy.func.now(),
|
|
)
|