Spaces:
Running
Running
| 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 | |
| } | |