Application configuration loaded from environment.
| 21 | |
| 22 | |
| 23 | class Config: |
| 24 | """Application configuration loaded from environment.""" |
| 25 | |
| 26 | # ADB Configuration |
| 27 | ADB_PATH: str = os.environ.get("ADB_PATH", "adb") |
| 28 | SCREEN_DUMP_PATH: str = DEVICE_DUMP_PATH |
| 29 | LOCAL_DUMP_PATH: str = LOCAL_DUMP_PATH |
| 30 | |
| 31 | # Agent Configuration |
| 32 | MAX_STEPS: int = int(os.environ.get("MAX_STEPS", str(DEFAULT_MAX_STEPS))) |
| 33 | STEP_DELAY: float = float(os.environ.get("STEP_DELAY", str(DEFAULT_STEP_DELAY))) |
| 34 | |
| 35 | # LLM Provider: "groq", "openai", or "bedrock" |
| 36 | LLM_PROVIDER: str = os.environ.get("LLM_PROVIDER", "groq") |
| 37 | |
| 38 | # Groq Configuration |
| 39 | GROQ_API_KEY: str = os.environ.get("GROQ_API_KEY", "") |
| 40 | GROQ_MODEL: str = os.environ.get("GROQ_MODEL", DEFAULT_GROQ_MODEL) |
| 41 | |
| 42 | # OpenAI Configuration |
| 43 | OPENAI_API_KEY: str = os.environ.get("OPENAI_API_KEY", "") |
| 44 | OPENAI_MODEL: str = os.environ.get("OPENAI_MODEL", DEFAULT_OPENAI_MODEL) |
| 45 | |
| 46 | # AWS Bedrock Configuration |
| 47 | AWS_REGION: str = os.environ.get("AWS_REGION", "us-east-1") |
| 48 | BEDROCK_MODEL: str = os.environ.get("BEDROCK_MODEL", DEFAULT_BEDROCK_MODEL) |
| 49 | |
| 50 | @classmethod |
| 51 | def get_model(cls) -> str: |
| 52 | """Get the model name based on the selected provider.""" |
| 53 | if cls.LLM_PROVIDER == "groq": |
| 54 | return cls.GROQ_MODEL |
| 55 | elif cls.LLM_PROVIDER == "bedrock": |
| 56 | return cls.BEDROCK_MODEL |
| 57 | else: |
| 58 | return cls.OPENAI_MODEL |
| 59 | |
| 60 | @classmethod |
| 61 | def validate(cls) -> None: |
| 62 | """Validate that required configuration is present.""" |
| 63 | if cls.LLM_PROVIDER == "groq" and not cls.GROQ_API_KEY: |
| 64 | raise ValueError("GROQ_API_KEY is required when using Groq provider") |
| 65 | elif cls.LLM_PROVIDER == "openai" and not cls.OPENAI_API_KEY: |
| 66 | raise ValueError("OPENAI_API_KEY is required when using OpenAI provider") |
| 67 | # Bedrock uses AWS credential chain, no explicit validation needed |
nothing calls this directly
no outgoing calls
no test coverage detected