yuga-planner / src /domain.py
blackopsrepl's picture
feat!: add chatbot demo ui
e2685f7
import os, warnings
from dataclasses import dataclass
# Load secrets if environment variables are not set
from utils.load_secrets import load_secrets
if not os.getenv("NEBIUS_API_KEY") or not os.getenv("NEBIUS_MODEL"):
load_secrets("tests/secrets/creds.py")
# =========================
# MOCK PROJECTS
# =========================
MOCK_PROJECTS: dict[str, str] = {
"go-rssagg": """# GO-RSSAGG
## Project Description
RSS aggregator backend written in Go. Features REST API and basic authentication.
## Features
- User authentication and account management
- Fetch and parse RSS feeds
- Store feed content in database
- REST API to access feeds
- Follow/unfollow feed functionality
- Mark posts as read/unread
## Tech Stack
- Go for backend
- PostgreSQL for database
- RESTful API endpoints
- JWT for authentication
""",
"rust-chess-pipeline": """# RUST CHESS PIPELINE
## Project Description
Data Pipeline that extracts chess match metrics and match annotations from Excel files, using AWS Lambda and Step Functions written in Rust.
## Features
- Parse Excel files containing chess match data
- Extract player statistics, game metadata, and move annotations
- Calculate performance metrics and ELO adjustments
- Store results in data warehouse
- Generate analytical reports
## Tech Stack
- Rust for core processing logic
- AWS Lambda for serverless compute
- AWS Step Functions for orchestration
- Amazon S3 for storage
- AWS Glue for ETL processing
""",
"python-ml-forecasting": """# PYTHON ML FORECASTING
## Project Description
Machine learning service for time-series forecasting of inventory demands, with API endpoints for integration with existing systems.
## Features
- Historical data ingestion and preprocessing
- Feature engineering for time-series data
- Multiple forecasting models (ARIMA, Prophet, LSTM)
- Model selection and hyperparameter optimization
- REST API for predictions and model management
- Visualization of forecasts and confidence intervals
## Tech Stack
- Python for core functionality
- FastAPI for REST endpoints
- PyTorch and scikit-learn for ML models
- PostgreSQL for metadata storage
- Docker for containerization
""",
}
# =========================
# AGENTS CONFIG
# =========================
@dataclass
class AgentsConfig:
"""Global configuration for all agents"""
# Model settings
nebius_api_key: str
nebius_model: str
# Prompt templates
task_splitter_prompt: str = "Split the following task into an accurate and concise tree of required subtasks:\n{{query}}\n\nAim for 3 to 15 subtasks.\n\nYour output must be a markdown bullet list, with no additional comments.\n\n"
task_evaluator_prompt: str = "Evaluate the elapsed time, in 30 minute units, for a competent human to complete the following task:\n{{query}}\n\nYour output must be a one integer, with no additional comments.\n\n"
task_deps_matcher_prompt: str = "Given the following task:\n{{task}}\n\nAnd these available skills:\n{{skills}}\n\nIn this context:\n{{context}}\n\nSelect the most appropriate skill to complete this task. Return only the skill name as a string, with no additional comments or formatting.\n\n"
# LLM settings
timeout: int = 30
max_retries: int = 3
verify_ssl: bool = True
request_timeout: int = 30
max_tokens: int = 1024
temperature: float = 0.1
workflow_timeout: int = 300 # 5 minutes for workflow timeout
def __post_init__(self):
"""Validate required configuration"""
if not self.nebius_model or not self.nebius_api_key:
if self.nebius_model == "dev-model" and self.nebius_api_key == "dev-key":
warnings.warn(
"Using development defaults for NEBIUS_MODEL and NEBIUS_API_KEY"
)
else:
raise ValueError(
"NEBIUS_MODEL and NEBIUS_API_KEY environment variables must be set"
)
# Global configuration instance
# For development environments where env vars might not be set, use defaults
AGENTS_CONFIG = AgentsConfig(
nebius_api_key=os.getenv("NEBIUS_API_KEY", "dev-key"),
nebius_model=os.getenv("NEBIUS_MODEL", "dev-model"),
)