Skip to content

Commit 0add9aa

Browse files
committed
Move durable_openai_agent_orchestrator to a separate file
1 parent 62c13c7 commit 0add9aa

File tree

2 files changed

+27
-26
lines changed

2 files changed

+27
-26
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from functools import wraps
2+
from agents.run import set_default_agent_runner
3+
from durable_openai_runner import DurableOpenAIRunner
4+
from yield_exception import YieldException
5+
from activity_call_tracker import ActivityCallTracker
6+
import event_loop
7+
8+
9+
def durable_openai_agent_orchestrator(func):
10+
@wraps(func)
11+
def wrapper(context):
12+
event_loop.ensure_event_loop()
13+
activity_call_tracker = ActivityCallTracker(context)
14+
durable_openai_runner = DurableOpenAIRunner(activity_call_tracker=activity_call_tracker)
15+
set_default_agent_runner(durable_openai_runner)
16+
17+
try:
18+
result = func(context)
19+
return result
20+
except YieldException as e:
21+
yield from activity_call_tracker.yield_and_clear_tasks()
22+
yield e.task
23+
finally:
24+
yield from activity_call_tracker.yield_and_clear_tasks()
25+
26+
return wrapper

samples-v2/openai_agents/function_app.py

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,12 @@
11
import azure.functions as func
22
from agents import ModelResponse
3-
from agents.run import set_default_agent_runner
4-
from durable_openai_runner import DurableOpenAIRunner
5-
from yield_exception import YieldException
6-
from activity_call_tracker import ActivityCallTracker
73
from model_invoker import ModelInvoker, ActivityModelInput
8-
import event_loop
9-
from functools import wraps
4+
from durable_decorators import durable_openai_agent_orchestrator
105

116

127
app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)
138

149

15-
def durable_openai_agent_orchestrator(func):
16-
@wraps(func)
17-
def wrapper(context):
18-
event_loop.ensure_event_loop()
19-
activity_call_tracker = ActivityCallTracker(context)
20-
durable_openai_runner = DurableOpenAIRunner(activity_call_tracker=activity_call_tracker)
21-
set_default_agent_runner(durable_openai_runner)
22-
23-
try:
24-
result = func(context)
25-
return result
26-
except YieldException as e:
27-
yield from activity_call_tracker.yield_and_clear_tasks()
28-
yield e.task
29-
finally:
30-
yield from activity_call_tracker.yield_and_clear_tasks()
31-
32-
return wrapper
33-
34-
3510
@app.route(route="orchestrators/{functionName}")
3611
@app.durable_client_input(client_name="client")
3712
async def orchestration_starter(req: func.HttpRequest, client):

0 commit comments

Comments
 (0)