grantforge-api / backend /agents /planner.py
GrantForge Bot
Deploy to Hugging Face
afd56bc
from typing import Dict, Any
from core.llm_router import get_llm
from schemas import AgentState, PlanOutput
def planner_node(state: AgentState) -> Dict[str, Any]:
"""
Tworzy dynamiczny plan sesji i osadza go w Blackboard.
Uruchamiany jako pierwszy lub wywo艂ywany w przypadku drastycznej zmiany intencji.
"""
llm = get_llm(task_type="standard", structured_output_schema=PlanOutput)
prompt = f"""
Jeste艣 Planner Agentem. Skonstruuj plan dzialania dla klienta w systemie decyzyjnym dotycz膮cym dotacji.
Cel: Na podstawie konwersacji, stw贸rz list臋 max 5 krok贸w, co nale偶y zrobi膰 dalej.
Ostatnia wiadomo艣膰 od klienta: {state.messages[-1].content if state.messages else 'Nowa sesja'}
Obecny profil firmy: {state.profile.model_dump() if state.profile else 'Brak'}
Zwr贸膰 wynik jako uporz膮dkowan膮 list臋 krok贸w w formacie schematu ustrukturyzowanego. PISZ ZAWSZE I WY艁膭CZNIE W J臉ZYKU POLSKIM.
"""
try:
response = llm.invoke(prompt)
steps = response.steps
except Exception as e:
print(f"B艂膮d plannera: {e}")
steps = []
# Prze艂膮cznik awaryjny - je艣li nie uda si臋 sparsowa膰 to u偶ywamy domy艣lnego
if not steps:
steps = [
"Zebra膰 pe艂en profil firmy (Profiler)",
"Znale藕膰 dopasowane dotacje (Matcher)",
]
return {
"task_plan": steps,
"current_agent": "supervisor", # Handoff back to supervisor
}