mirror of
https://github.com/arc53/DocsGPT.git
synced 2025-11-29 00:23:17 +00:00
* feat: Implement model registry and capabilities for multi-provider support - Added ModelRegistry to manage available models and their capabilities. - Introduced ModelProvider enum for different LLM providers. - Created ModelCapabilities dataclass to define model features. - Implemented methods to load models based on API keys and settings. - Added utility functions for model management in model_utils.py. - Updated settings.py to include provider-specific API keys. - Refactored LLM classes (Anthropic, OpenAI, Google, etc.) to utilize new model registry. - Enhanced utility functions to handle token limits and model validation. - Improved code structure and logging for better maintainability. * feat: Add model selection feature with API integration and UI component * feat: Add model selection and default model functionality in agent management * test: Update assertions and formatting in stream processing tests * refactor(llm): Standardize model identifier to model_id * fix tests --------- Co-authored-by: Alex <a@tushynski.me>
56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
import logging
|
|
|
|
from application.llm.anthropic import AnthropicLLM
|
|
from application.llm.docsgpt_provider import DocsGPTAPILLM
|
|
from application.llm.google_ai import GoogleLLM
|
|
from application.llm.groq import GroqLLM
|
|
from application.llm.huggingface import HuggingFaceLLM
|
|
from application.llm.llama_cpp import LlamaCpp
|
|
from application.llm.novita import NovitaLLM
|
|
from application.llm.openai import AzureOpenAILLM, OpenAILLM
|
|
from application.llm.premai import PremAILLM
|
|
from application.llm.sagemaker import SagemakerAPILLM
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class LLMCreator:
|
|
llms = {
|
|
"openai": OpenAILLM,
|
|
"azure_openai": AzureOpenAILLM,
|
|
"sagemaker": SagemakerAPILLM,
|
|
"huggingface": HuggingFaceLLM,
|
|
"llama.cpp": LlamaCpp,
|
|
"anthropic": AnthropicLLM,
|
|
"docsgpt": DocsGPTAPILLM,
|
|
"premai": PremAILLM,
|
|
"groq": GroqLLM,
|
|
"google": GoogleLLM,
|
|
"novita": NovitaLLM,
|
|
}
|
|
|
|
@classmethod
|
|
def create_llm(
|
|
cls, type, api_key, user_api_key, decoded_token, model_id=None, *args, **kwargs
|
|
):
|
|
from application.core.model_utils import get_base_url_for_model
|
|
|
|
llm_class = cls.llms.get(type.lower())
|
|
if not llm_class:
|
|
raise ValueError(f"No LLM class found for type {type}")
|
|
|
|
# Extract base_url from model configuration if model_id is provided
|
|
base_url = None
|
|
if model_id:
|
|
base_url = get_base_url_for_model(model_id)
|
|
|
|
return llm_class(
|
|
api_key,
|
|
user_api_key,
|
|
decoded_token=decoded_token,
|
|
model_id=model_id,
|
|
base_url=base_url,
|
|
*args,
|
|
**kwargs,
|
|
)
|