Skip to content

Commit 7aa48a8

Browse files
authored
Remove model exception handling (#18)
1 parent 3235404 commit 7aa48a8

File tree

2 files changed

+12
-52
lines changed

2 files changed

+12
-52
lines changed

azure/durable_functions/openai_agents/model_invocation_activity.py

Lines changed: 11 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import enum
22
import json
33
import logging
4-
from datetime import timedelta
54
from typing import Any, AsyncIterator, Optional, Union, cast
65

76
from azure.durable_functions.models.RetryOptions import RetryOptions
@@ -28,9 +27,6 @@
2827
WebSearchTool,
2928
)
3029
from agents.items import TResponseStreamEvent
31-
from openai import (
32-
APIStatusError,
33-
)
3430
from openai.types.responses.tool_param import Mcp
3531
from openai.types.responses.response_prompt_param import ResponsePromptParam
3632

@@ -243,53 +239,17 @@ def make_tool(tool: ToolInput) -> Tool:
243239
for x in input.handoffs
244240
]
245241

246-
try:
247-
return await model.get_response(
248-
system_instructions=input.system_instructions,
249-
input=input_input,
250-
model_settings=input.model_settings,
251-
tools=tools,
252-
output_schema=input.output_schema,
253-
handoffs=handoffs,
254-
tracing=ModelTracing(input.tracing),
255-
previous_response_id=input.previous_response_id,
256-
prompt=input.prompt,
257-
)
258-
except APIStatusError as e:
259-
# Listen to server hints
260-
retry_after = None
261-
retry_after_ms_header = e.response.headers.get("retry-after-ms")
262-
if retry_after_ms_header is not None:
263-
retry_after = timedelta(milliseconds=float(retry_after_ms_header))
264-
265-
if retry_after is None:
266-
retry_after_header = e.response.headers.get("retry-after")
267-
if retry_after_header is not None:
268-
retry_after = timedelta(seconds=float(retry_after_header))
269-
270-
should_retry_header = e.response.headers.get("x-should-retry")
271-
if should_retry_header == "true":
272-
raise e
273-
if should_retry_header == "false":
274-
raise ApplicationError(
275-
"Non retryable OpenAI error",
276-
non_retryable=True,
277-
next_retry_delay=retry_after,
278-
) from e
279-
280-
# Specifically retryable status codes
281-
if e.response.status_code in [408, 409, 429, 500]:
282-
raise ApplicationError(
283-
"Retryable OpenAI status code",
284-
non_retryable=False,
285-
next_retry_delay=retry_after,
286-
) from e
287-
288-
raise ApplicationError(
289-
"Non retryable OpenAI status code",
290-
non_retryable=True,
291-
next_retry_delay=retry_after,
292-
) from e
242+
return await model.get_response(
243+
system_instructions=input.system_instructions,
244+
input=input_input,
245+
model_settings=input.model_settings,
246+
tools=tools,
247+
output_schema=input.output_schema,
248+
handoffs=handoffs,
249+
tracing=ModelTracing(input.tracing),
250+
previous_response_id=input.previous_response_id,
251+
prompt=input.prompt,
252+
)
293253

294254

295255
class DurableActivityModel(Model):

azure/durable_functions/openai_agents/orchestrator_generator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from .usage_telemetry import UsageTelemetry
1313

1414

15-
async def durable_openai_agent_activity(input: str, model_provider: ModelProvider):
15+
async def durable_openai_agent_activity(input: str, model_provider: ModelProvider) -> str:
1616
"""Activity logic that handles OpenAI model invocations."""
1717
activity_input = ActivityModelInput.from_json(input)
1818

0 commit comments

Comments
 (0)