|
1 | 1 | import enum |
2 | 2 | import json |
3 | 3 | import logging |
4 | | -from datetime import timedelta |
5 | 4 | from typing import Any, AsyncIterator, Optional, Union, cast |
6 | 5 |
|
7 | 6 | from azure.durable_functions.models.RetryOptions import RetryOptions |
|
28 | 27 | WebSearchTool, |
29 | 28 | ) |
30 | 29 | from agents.items import TResponseStreamEvent |
31 | | -from openai import ( |
32 | | - APIStatusError, |
33 | | -) |
34 | 30 | from openai.types.responses.tool_param import Mcp |
35 | 31 | from openai.types.responses.response_prompt_param import ResponsePromptParam |
36 | 32 |
|
@@ -243,53 +239,17 @@ def make_tool(tool: ToolInput) -> Tool: |
243 | 239 | for x in input.handoffs |
244 | 240 | ] |
245 | 241 |
|
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 | + ) |
293 | 253 |
|
294 | 254 |
|
295 | 255 | class DurableActivityModel(Model): |
|
0 commit comments