Skip to content

Commit 0e534bc

Browse files
authored
Apply new activity name for model invocations (#9)
* Change name of model activity. Signed-off-by: Phillip Hoff <[email protected]> * Push activity name down from DF app. Signed-off-by: Phillip Hoff <[email protected]> * Resolve linter warnings. Signed-off-by: Phillip Hoff <[email protected]> * Fixup merge. * Fixup merge more. --------- Signed-off-by: Phillip Hoff <[email protected]>
1 parent 1b3ac4c commit 0e534bc

File tree

5 files changed

+21
-13
lines changed

5 files changed

+21
-13
lines changed

azure/durable_functions/decorators/durable_app.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -253,21 +253,21 @@ def decorator():
253253

254254
return wrap
255255

256-
def _create_invoke_model_activity(self, model_provider):
256+
def _create_invoke_model_activity(self, model_provider, activity_name):
257257
"""Create and register the invoke_model_activity function with the provided FunctionApp."""
258258

259-
@self.activity_trigger(input_name="input")
260-
async def invoke_model_activity(input: str):
259+
@self.activity_trigger(input_name="input", activity=activity_name)
260+
async def run_model_activity(input: str):
261261
from azure.durable_functions.openai_agents.orchestrator_generator\
262262
import durable_openai_agent_activity
263263

264264
return await durable_openai_agent_activity(input, model_provider)
265265

266-
return invoke_model_activity
266+
return run_model_activity
267267

268-
def _setup_durable_openai_agent(self, model_provider):
268+
def _setup_durable_openai_agent(self, model_provider, activity_name):
269269
if not self._is_durable_openai_agent_setup:
270-
self._create_invoke_model_activity(model_provider)
270+
self._create_invoke_model_activity(model_provider, activity_name)
271271
self._is_durable_openai_agent_setup = True
272272

273273
def durable_openai_agent_orchestrator(
@@ -294,14 +294,16 @@ def durable_openai_agent_orchestrator(
294294
if model_provider is not None and type(model_provider) is not ModelProvider:
295295
raise TypeError("Provided model provider must be of type ModelProvider")
296296

297-
self._setup_durable_openai_agent(model_provider)
297+
activity_name = "run_model"
298+
299+
self._setup_durable_openai_agent(model_provider, activity_name)
298300

299301
def generator_wrapper_wrapper(func):
300302

301303
@wraps(func)
302304
def generator_wrapper(context):
303305
return durable_openai_agent_orchestrator_generator(
304-
func, context, model_retry_options
306+
func, context, model_retry_options, activity_name
305307
)
306308

307309
return generator_wrapper

azure/durable_functions/openai_agents/model_invocation_activity.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,10 +291,12 @@ def __init__(
291291
model_name: Optional[str],
292292
task_tracker: TaskTracker,
293293
retry_options: Optional[RetryOptions],
294+
activity_name: str,
294295
) -> None:
295296
self.model_name = model_name
296297
self.task_tracker = task_tracker
297298
self.retry_options = retry_options
299+
self.activity_name = activity_name
298300

299301
async def get_response(
300302
self,
@@ -382,13 +384,13 @@ def make_tool_info(tool: Tool) -> ToolInput:
382384

383385
if self.retry_options:
384386
response = self.task_tracker.get_activity_call_result_with_retry(
385-
"invoke_model_activity",
387+
self.activity_name,
386388
self.retry_options,
387389
activity_input_json,
388390
)
389391
else:
390392
response = self.task_tracker.get_activity_call_result(
391-
"invoke_model_activity", activity_input_json
393+
self.activity_name, activity_input_json
392394
)
393395

394396
json_response = json.loads(response)

azure/durable_functions/openai_agents/orchestrator_generator.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,16 @@ def durable_openai_agent_orchestrator_generator(
2626
func,
2727
durable_orchestration_context: DurableOrchestrationContext,
2828
model_retry_options: Optional[RetryOptions],
29+
activity_name: str,
2930
):
3031
"""Adapts the synchronous OpenAI Agents function to an Durable orchestrator generator."""
3132
ensure_event_loop()
3233
task_tracker = TaskTracker(durable_orchestration_context)
3334
durable_ai_agent_context = DurableAIAgentContext(
3435
durable_orchestration_context, task_tracker, model_retry_options
3536
)
36-
durable_openai_runner = DurableOpenAIRunner(context=durable_ai_agent_context)
37+
durable_openai_runner = DurableOpenAIRunner(
38+
context=durable_ai_agent_context, activity_name=activity_name)
3739
set_default_agent_runner(durable_openai_runner)
3840

3941
func_with_context = partial(func, durable_ai_agent_context)

azure/durable_functions/openai_agents/runner.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@
2323
class DurableOpenAIRunner:
2424
"""Runner for OpenAI agents using Durable Functions orchestration."""
2525

26-
def __init__(self, context: DurableAIAgentContext) -> None:
26+
def __init__(self, context: DurableAIAgentContext, activity_name: str) -> None:
2727
self._runner = DEFAULT_AGENT_RUNNER or AgentRunner()
2828
self.context = context
29+
self.activity_name = activity_name
2930

3031
def run_sync(
3132
self,
@@ -62,6 +63,7 @@ def run_sync(
6263
model_name=model_name,
6364
task_tracker=self.context._task_tracker,
6465
retry_options=self.context._model_retry_options,
66+
activity_name=self.activity_name,
6567
),
6668
)
6769

tests/orchestrator/openai_agents/test_openai_agents.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def openai_agent_return_pydantic_model_type(context):
112112

113113
return model
114114

115-
model_activity_name = "invoke_model_activity"
115+
model_activity_name = "run_model"
116116

117117
def base_expected_state(output=None, replay_schema: ReplaySchema = ReplaySchema.V1) -> OrchestratorState:
118118
return OrchestratorState(is_done=False, actions=[], output=output, replay_schema=replay_schema)

0 commit comments

Comments
 (0)