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 11import azure .functions as func
22from 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
73from 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
127app = 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" )
3712async def orchestration_starter (req : func .HttpRequest , client ):
You can’t perform that action at this time.
0 commit comments