File tree Expand file tree Collapse file tree 2 files changed +27
-26
lines changed Expand file tree Collapse file tree 2 files changed +27
-26
lines changed Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change 1
1
import azure .functions as func
2
2
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
7
3
from model_invoker import ModelInvoker , ActivityModelInput
8
- import event_loop
9
- from functools import wraps
4
+ from durable_decorators import durable_openai_agent_orchestrator
10
5
11
6
12
7
app = func .FunctionApp (http_auth_level = func .AuthLevel .FUNCTION )
13
8
14
9
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
-
35
10
@app .route (route = "orchestrators/{functionName}" )
36
11
@app .durable_client_input (client_name = "client" )
37
12
async def orchestration_starter (req : func .HttpRequest , client ):
You can’t perform that action at this time.
0 commit comments