File size: 2,148 Bytes
9d21bf8 cd7c282 9d21bf8 cd7c282 9d21bf8 cd7c282 9d21bf8 cd7c282 9d21bf8 cd7c282 9d21bf8 cd7c282 9d21bf8 cd7c282 9d21bf8 cd7c282 9d21bf8 c881895 9d21bf8 cd7c282 9d21bf8 c881895 9d21bf8 cd7c282 915b009 9d21bf8 cd7c282 9d21bf8 cd7c282 9d21bf8 cd7c282 9d21bf8 cd7c282 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
"""Centralized LLM client factory.
This module provides factory functions for creating LLM clients.
DEPRECATED: Prefer src.clients.factory.get_chat_client() directly.
"""
from typing import Any
from src.clients.base import BaseChatClient
from src.clients.factory import get_chat_client
from src.utils.config import settings
from src.utils.exceptions import ConfigurationError
def get_magentic_client() -> BaseChatClient:
"""
Get the chat client for Magentic agents.
Now unified to support OpenAI, Gemini, and HuggingFace.
"""
return get_chat_client()
def get_pydantic_ai_model() -> Any:
"""
Get the appropriate model for pydantic-ai based on configuration.
Used by legacy Simple Mode components.
"""
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.openai import OpenAIProvider
# Normalize provider for case-insensitive matching
provider_lower = settings.llm_provider.lower() if settings.llm_provider else ""
if provider_lower == "openai":
if not settings.openai_api_key:
raise ConfigurationError("OPENAI_API_KEY not set for pydantic-ai")
provider = OpenAIProvider(api_key=settings.openai_api_key)
return OpenAIChatModel(settings.openai_model, provider=provider)
if provider_lower == "anthropic":
raise ConfigurationError("Anthropic is not supported (no embeddings API). See P3 doc.")
raise ConfigurationError(f"Unknown LLM provider for simple mode: {settings.llm_provider}")
def check_magentic_requirements() -> None:
"""
Check if Magentic mode requirements are met.
Now supports multiple providers via ChatClientFactory.
"""
# Advanced/Magentic mode now works with ANY provider (including free HF)
pass
def check_simple_mode_requirements() -> None:
"""
Check if simple mode requirements are met.
"""
if not settings.has_any_llm_key:
# Simple mode still requires explicit keys?
# Actually, simple mode also had HF support but it was brittle.
# We are deleting simple mode later, so let's leave this as is for now.
pass
|