feat: add support for Anthropic provider, including configuration and conversion utilities

This commit is contained in:
2025-03-26 11:57:52 +00:00
parent b4986e0eb9
commit a4683023ad
7 changed files with 534 additions and 31 deletions

View File

@@ -49,42 +49,43 @@ def init_session_state():
logger.info("Registered MCP Manager shutdown hook.")
# --- LLM Client Setup ---
# Determine provider details (e.g., from an [llm] section)
provider_name = "openai" # Default
model_name = None # Must be provided in config
provider_name = None
model_name = None
api_key = None
base_url = None
# Prioritize [llm] section, fallback to [openai] for compatibility
if config.has_section("llm"):
logger.info("Reading configuration from [llm] section.")
provider_name = config["llm"].get("provider", provider_name)
model_name = config["llm"].get("model")
api_key = config["llm"].get("api_key")
base_url = config["llm"].get("base_url") # Optional
elif config.has_section("openai"):
logger.warning("Using legacy [openai] section for configuration.")
provider_name = "openai" # Force openai if using this section
model_name = config["openai"].get("model")
api_key = config["openai"].get("api_key")
base_url = config["openai"].get("base_url") # Optional
# 1. Determine provider from [base] section
if config.has_section("base") and config["base"].get("provider"):
provider_name = config["base"].get("provider")
logger.info(f"Provider selected from [base] section: {provider_name}")
else:
raise ValueError("Missing [llm] or [openai] section in config.ini")
# Fallback or error if [base] provider is missing? Let's error for now.
raise ValueError("Missing 'provider' setting in [base] section of config.ini")
# 2. Read details from the specific provider's section
if config.has_section(provider_name):
provider_config = config[provider_name]
model_name = provider_config.get("model")
api_key = provider_config.get("api_key")
base_url = provider_config.get("base_url") # Optional
logger.info(f"Read configuration from [{provider_name}] section.")
else:
raise ValueError(f"Missing configuration section '[{provider_name}]' in config.ini for the selected provider.")
# Validate required config
if not api_key:
raise ValueError("Missing 'api_key' in config.ini ([llm] or [openai] section)")
raise ValueError(f"Missing 'api_key' in [{provider_name}] section of config.ini")
if not model_name:
raise ValueError("Missing 'model' name in config.ini ([llm] or [openai] section)")
raise ValueError(f"Missing 'model' name in [{provider_name}] section of config.ini")
logger.info(f"Configuring LLMClient for provider: {provider_name}, model: {model_name}")
st.session_state.client = LLMClient(
provider_name=provider_name,
api_key=api_key,
mcp_manager=mcp_manager,
base_url=base_url, # Pass None if not provided
base_url=base_url,
)
st.session_state.model_name = model_name # Store model name for chat requests
st.session_state.model_name = model_name
logger.info("LLMClient initialized successfully.")
except Exception as e: