CivicAI / agents /analyst.py
mahammadaftab's picture
Initial Uodated
7415e01
"""
CivicAI Analyst Agent
Interfaces with the environment to summarize real-world context,
historical trends, and current emergencies for the Policy maker.
"""
from __future__ import annotations
from civicai.models import SocietyState, AgentMessage
class AnalystAgent:
def __init__(self, name: str = "AnalystAgent", role: str = "📊 Chief Analyst"):
self.name = name
self.role = role
def analyze_state(self, state: SocietyState) -> AgentMessage:
"""Analyze current state and active events."""
warnings = []
if state.inflation > 0.08:
warnings.append(f"Inflation is extremely high ({state.inflation:.1%}). Fiscal tightening needed.")
if state.employment_rate < 0.80:
warnings.append(f"High unemployment ({1-state.employment_rate:.1%}). Consider stimulus or education.")
if state.public_satisfaction < 0.40:
warnings.append("Public satisfaction critically low. Risk of severe unrest.")
events_str = ", ".join(state.active_events) if state.active_events else "None"
reasoning = (
f"GDP Growth: {state.gdp_growth:.2%}, Inflation: {state.inflation:.2%}, "
f"Active Events: {events_str}. "
f"Warnings: {' '.join(warnings) if warnings else 'None.'}"
)
return AgentMessage(
agent_name=self.name,
agent_role=self.role,
proposal="Data Analysis Complete. Awaiting Policy action.",
reasoning=reasoning
)