From 345f1651a6cbaf9cee43b45f164a714d1d43eac8 Mon Sep 17 00:00:00 2001 From: Deep Koluguri Date: Mon, 29 Jun 2026 10:20:09 -0400 Subject: [PATCH] Refactor orchestrator: add LLM fallbacks and Temporal workflow integration --- src/agent.py | 4 +++- src/api.py | 15 ++++++++++----- src/worker.py | 4 ++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/agent.py b/src/agent.py index c672569..fae066c 100644 --- a/src/agent.py +++ b/src/agent.py @@ -109,7 +109,9 @@ def run_agent_activity(payload: dict) -> str: target_jid = payload.get("targetJid", "default") sender = payload.get("sender", "Unknown") - llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash") + primary_llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash") + fallback_llm = ChatGoogleGenerativeAI(model="gemini-1.5-pro") + llm = primary_llm.with_fallbacks([fallback_llm]) system_prompt = f"""You are a highly capable AI assistant operating as an orchestrator. diff --git a/src/api.py b/src/api.py index 3083e98..ed907e6 100644 --- a/src/api.py +++ b/src/api.py @@ -15,11 +15,16 @@ from src.agent import run_agent_activity async def trigger_workflow(payload: dict): try: - # Bypass Temporal for now since it's not deployed in the cluster - print(f"Directly invoking agent for payload: {payload}") - # run_agent_activity is a synchronous function, so run in thread or just call it directly - result = await asyncio.to_thread(run_agent_activity, payload) - print(f"Agent finished. Result: {result}") + print(f"Connecting to Temporal and dispatching workflow for payload: {payload}") + client = await Client.connect("temporal-frontend.ai-core.svc.cluster.local:7233") + + result = await client.execute_workflow( + CentralOrchestratorWorkflow.run, + payload, + id=f"orchestrator-workflow-{payload.get('sender', 'unknown')}-{asyncio.get_event_loop().time()}", + task_queue="agents-orchestrator", + ) + print(f"Workflow finished. Result: {result}") except Exception as e: import traceback print(f"Failed to trigger workflow: {e}") diff --git a/src/worker.py b/src/worker.py index 37af42f..7d7a57c 100644 --- a/src/worker.py +++ b/src/worker.py @@ -5,10 +5,10 @@ from src.orchestrator import CentralOrchestratorWorkflow from src.agent import run_agent_activity async def main(): - client = await Client.connect("localhost:7233") + client = await Client.connect("temporal-frontend.ai-core.svc.cluster.local:7233") worker = Worker( client, - task_queue="agent-task-queue", + task_queue="agents-orchestrator", workflows=[CentralOrchestratorWorkflow], activities=[run_agent_activity], )