Spaces:
Paused
Paused
| import os | |
| from dotenv import load_dotenv | |
| from typing import Dict, Any | |
| load_dotenv() | |
| class Config: | |
| """Configuration management for A2A agents.""" | |
| GPT_KEY = os.getenv("GPT_KEY") | |
| CLAUDE_API_KEY = os.getenv("CLAUDE_API_KEY") | |
| HF_KEY = os.getenv("HF_KEY") | |
| TAVILY_API_KEY = os.getenv("TAVILY_API_KEY") | |
| LANGSMITH_API_KEY = os.getenv("LANGSMITH_API_KEY") | |
| GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY") | |
| SCORER_URL = os.getenv("SCORER_URL", "https://agents-course-unit4-scoring.hf.space") | |
| LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") | |
| def __init__(self): | |
| """Initialize config and ensure API keys are properly set.""" | |
| # Set ANTHROPIC_API_KEY environment variable if not already set | |
| if not os.getenv("ANTHROPIC_API_KEY") and self.CLAUDE_API_KEY: | |
| os.environ["ANTHROPIC_API_KEY"] = self.CLAUDE_API_KEY | |
| print(f"✅ Set ANTHROPIC_API_KEY from CLAUDE_API_KEY for Claude client compatibility") | |
| # Set OPENAI_API_KEY environment variable if not already set (for fallback tools) | |
| if not os.getenv("OPENAI_API_KEY") and self.GPT_KEY: | |
| os.environ["OPENAI_API_KEY"] = self.GPT_KEY | |
| print(f"✅ Set OPENAI_API_KEY from GPT_KEY for OpenAI client compatibility") | |
| # Set up LangSmith tracing if API key is available | |
| if self.LANGSMITH_API_KEY: | |
| os.environ["LANGCHAIN_TRACING_V2"] = "true" | |
| os.environ["LANGCHAIN_API_KEY"] = self.LANGSMITH_API_KEY | |
| os.environ["LANGCHAIN_PROJECT"] = "Grux-2.0-Agent-Claude" | |
| print(f"✅ LangSmith tracing enabled for project: Grux-2.0-Agent-Claude") | |
| # Ensure OpenAI API key is available under both names | |
| def OPENAI_API_KEY(self): | |
| """Get OpenAI API key - try OPENAI_API_KEY first, then GPT_KEY""" | |
| return os.getenv("OPENAI_API_KEY") or self.GPT_KEY | |
| # Model configurationscan you please locally run python and test the imports because this is getting frustrating | |
| GPT_MODEL = "gpt-4o" | |
| # A2A Protocol settings | |
| MAX_DISCUSSION_ROUNDS = 2 # Reduce from 5 to 2 for debugging | |
| CONSENSUS_THRESHOLD = 0.55 | |
| TIMEOUT_SECONDS = 300 | |
| # Performance optimizations | |
| AGENT_TIMEOUT_SECONDS = 15 # Reduce from 30 to 15 | |
| CONSENSUS_TIMEOUT_SECONDS = 180 # Reduce from 300 to 180 | |
| # Model-specific settings | |
| GPT_MAX_TOKENS = 256 # Reduce from 512 | |
| GEMMA_MAX_TOKENS = 256 | |
| # Retry settings | |
| MAX_RETRIES = 2 | |
| RETRY_DELAY = 1.0 | |
| # Caching | |
| ENABLE_RESPONSE_CACHE = True | |
| CACHE_TTL_SECONDS = 3600 | |
| def validate(cls) -> bool: | |
| """Validate required environment variables.""" | |
| required = ["CLAUDE_API_KEY", "HF_KEY"] | |
| missing = [key for key in required if not getattr(cls, key)] | |
| if missing: | |
| raise ValueError(f"Missing required environment variables: {missing}") | |
| return True | |
| # Create config instance and ensure OpenAI API key is set | |
| config = Config() |