|
45 | 45 | from pydantic_ai.usage import RequestUsage |
46 | 46 |
|
47 | 47 | from ..conftest import IsDatetime, IsNow, IsStr, TestEnv, try_import |
48 | | -from .mock_openai import MockOpenAI, completion_message, get_mock_chat_completion_kwargs |
| 48 | +from .mock_openai import ( |
| 49 | + MockOpenAI, |
| 50 | + MockOpenAIResponses, |
| 51 | + completion_message, |
| 52 | + get_mock_chat_completion_kwargs, |
| 53 | + get_mock_responses_kwargs, |
| 54 | + response_message, |
| 55 | +) |
49 | 56 |
|
50 | 57 | with try_import() as imports_successful: |
51 | 58 | from openai import APIStatusError, AsyncOpenAI |
@@ -2978,6 +2985,25 @@ async def test_tool_choice_fallback(allow_model_requests: None) -> None: |
2978 | 2985 | assert get_mock_chat_completion_kwargs(mock_client)[0]['tool_choice'] == 'auto' |
2979 | 2986 |
|
2980 | 2987 |
|
| 2988 | +async def test_tool_choice_fallback_response_api(allow_model_requests: None) -> None: |
| 2989 | + """Ensure tool_choice falls back to 'auto' for Responses API when 'required' unsupported.""" |
| 2990 | + profile = OpenAIModelProfile(openai_supports_tool_choice_required=False).update(openai_model_profile('stub')) |
| 2991 | + |
| 2992 | + mock_client = MockOpenAIResponses.create_mock(response_message([])) |
| 2993 | + model = OpenAIResponsesModel('openai/gpt-oss', provider=OpenAIProvider(openai_client=mock_client), profile=profile) |
| 2994 | + |
| 2995 | + params = ModelRequestParameters(function_tools=[ToolDefinition(name='x')], allow_text_output=False) |
| 2996 | + |
| 2997 | + await model._responses_create( # pyright: ignore[reportPrivateUsage] |
| 2998 | + messages=[], |
| 2999 | + stream=False, |
| 3000 | + model_settings={}, |
| 3001 | + model_request_parameters=params, |
| 3002 | + ) |
| 3003 | + |
| 3004 | + assert get_mock_responses_kwargs(mock_client)[0]['tool_choice'] == 'auto' |
| 3005 | + |
| 3006 | + |
2981 | 3007 | async def test_openai_model_settings_temperature_ignored_on_gpt_5(allow_model_requests: None, openai_api_key: str): |
2982 | 3008 | m = OpenAIChatModel('gpt-5', provider=OpenAIProvider(api_key=openai_api_key)) |
2983 | 3009 | agent = Agent(m) |
|
0 commit comments