Add MiniMax LLM integration and local .env support
- Add .env to .gitignore (API keys stay local) - Add LLM client with MiniMax and OpenAI support - Update config to load from environment variables - Wire up Architect agent to actually call the LLM - Add MiniMax API key to local .env file
This commit is contained in:
@@ -1,10 +1,16 @@
|
||||
"""Opus Orchestrator AI - Configuration."""
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
def _load_env(key: str, default: Optional[str] = None) -> Optional[str]:
|
||||
"""Load from environment variable."""
|
||||
return os.environ.get(key, default)
|
||||
|
||||
|
||||
class FortressConfig(BaseModel):
|
||||
"""Configuration for Fortress integration."""
|
||||
|
||||
@@ -18,10 +24,14 @@ class FortressConfig(BaseModel):
|
||||
class AgentConfig(BaseModel):
|
||||
"""Configuration for AI agents."""
|
||||
|
||||
model: str = Field(default="gpt-4o", description="Default model for agents")
|
||||
model: str = Field(default="MiniMax/MiniMax-M2.1", description="Default model for agents")
|
||||
temperature: float = Field(default=0.7, ge=0.0, le=2.0)
|
||||
max_tokens: Optional[int] = Field(default=None, description="Max tokens per response")
|
||||
max_iterations: int = Field(default=10, description="Max iterations per agent task")
|
||||
|
||||
# Provider configuration
|
||||
provider: str = Field(default="minimax", description="LLM provider: minimax, openai, anthropic")
|
||||
api_key: Optional[str] = Field(default=None, description="API key for LLM provider")
|
||||
|
||||
|
||||
class IterationConfig(BaseModel):
|
||||
@@ -57,6 +67,37 @@ class OpusConfig(BaseModel):
|
||||
frozen = False
|
||||
|
||||
|
||||
def load_config_from_env() -> OpusConfig:
|
||||
"""Load configuration from environment variables.
|
||||
|
||||
Reads:
|
||||
- MINIMAX_API_KEY or OPENAI_API_KEY for LLM
|
||||
- GITHUB_TOKEN for GitHub operations
|
||||
"""
|
||||
# Load API keys
|
||||
api_key = _load_env("MINIMAX_API_KEY") or _load_env("OPENAI_API_KEY")
|
||||
github_token = _load_env("GITHUB_TOKEN")
|
||||
|
||||
# Determine provider
|
||||
if _load_env("MINIMAX_API_KEY"):
|
||||
provider = "minimax"
|
||||
default_model = "MiniMax/MiniMax-M2.1"
|
||||
else:
|
||||
provider = "openai"
|
||||
default_model = "gpt-4o"
|
||||
|
||||
agent_config = AgentConfig(
|
||||
model=default_model,
|
||||
provider=provider,
|
||||
api_key=api_key,
|
||||
)
|
||||
|
||||
return OpusConfig(
|
||||
agent=agent_config,
|
||||
github_token=github_token,
|
||||
)
|
||||
|
||||
|
||||
# Global config instance
|
||||
_config: Optional[OpusConfig] = None
|
||||
|
||||
@@ -65,7 +106,11 @@ def get_config() -> OpusConfig:
|
||||
"""Get the global configuration instance."""
|
||||
global _config
|
||||
if _config is None:
|
||||
_config = OpusConfig()
|
||||
# Try to load from environment
|
||||
try:
|
||||
_config = load_config_from_env()
|
||||
except Exception:
|
||||
_config = OpusConfig()
|
||||
return _config
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user