78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
"""Typed settings for GCP Solution Architecture Agent."""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Application Settings."""
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=".env",
|
|
env_file_encoding="utf-8",
|
|
extra="ignore",
|
|
)
|
|
|
|
# Agent Identity
|
|
AGENT_NAME: str = "gcp_solution_architecture_agent"
|
|
AGENT_VERSION: str = "1.0.0"
|
|
LOG_LEVEL: str = "INFO"
|
|
|
|
# Server Configuration
|
|
HOST: str = "0.0.0.0"
|
|
PORT: int = 8080
|
|
|
|
# LLM Settings
|
|
OPENAI_API_KEY: str | None = None
|
|
AZURE_OPENAI_API_KEY: str | None = None
|
|
AZURE_OPENAI_ENDPOINT: str | None = None
|
|
AZURE_OPENAI_DEPLOYMENT: str = "gpt-4o"
|
|
AZURE_OPENAI_API_VERSION: str = "2024-02-15-preview"
|
|
LLM_TEMPERATURE: float = 0.2
|
|
|
|
# Google Cloud Environment & Scanner Credentials
|
|
GOOGLE_APPLICATION_CREDENTIALS: str | None = None
|
|
GCP_PROJECT_ID: str | None = None
|
|
GCP_REGION: str = "us-central1"
|
|
|
|
# Database & Storage Settings (External PostgreSQL)
|
|
POSTGRES_HOST: str = "localhost"
|
|
POSTGRES_PORT: int = 5432
|
|
POSTGRES_DB: str = "gcp_agent_db"
|
|
POSTGRES_USER: str = "postgres"
|
|
POSTGRES_PASSWORD: str = "postgres"
|
|
DATABASE_URL: str | None = None
|
|
SQLITE_FALLBACK_DB: str = "gcp_agent_local.db"
|
|
|
|
# ADK Multi-Agent Orchestrator Settings
|
|
ADK_MAX_LOOP_ITERATIONS: int = 5
|
|
ADK_ENABLE_ARTIFACT_STORE: bool = True
|
|
|
|
# Google Developer Knowledge MCP Server Settings
|
|
DEVELOPER_KNOWLEDGE_MCP_URL: str = "https://developerknowledge.googleapis.com/mcp"
|
|
DEVELOPER_KNOWLEDGE_MCP_ENABLED: bool = True
|
|
|
|
# Paths
|
|
BASE_DIR: Path = Path(__file__).resolve().parent.parent
|
|
SKILLS_DIR: Path = Path(__file__).resolve().parent / "skills"
|
|
EVAL_DATASET_PATH: Path = Path(__file__).resolve().parent.parent / "eval" / "datasets" / "benchmark_cases.json"
|
|
|
|
def get_database_url(self) -> str:
|
|
"""Construct database connection URL (PostgreSQL or SQLite fallback)."""
|
|
if self.DATABASE_URL:
|
|
return self.DATABASE_URL
|
|
return f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@{self.POSTGRES_HOST}:{self.POSTGRES_PORT}/{self.POSTGRES_DB}"
|
|
|
|
|
|
_settings: Settings | None = None
|
|
|
|
|
|
def get_settings() -> Settings:
|
|
"""Get singleton Settings instance."""
|
|
global _settings
|
|
if _settings is None:
|
|
_settings = Settings()
|
|
return _settings
|
|
|