feat: add support for Anthropic provider, including configuration and conversion utilities
This commit is contained in:
43
src/app.py
43
src/app.py
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user