From c0661aa1ea09bf2ce3a22b39ad5e3be0b2b338c5 Mon Sep 17 00:00:00 2001 From: ant31 <2t.antoine@gmail.com> Date: Fri, 4 Jul 2025 17:11:17 +0200 Subject: [PATCH] Support for file_input content (#fix 893) --- src/agents/models/chatcmpl_converter.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/agents/models/chatcmpl_converter.py b/src/agents/models/chatcmpl_converter.py index 25d9f083d..9d0c6cf5e 100644 --- a/src/agents/models/chatcmpl_converter.py +++ b/src/agents/models/chatcmpl_converter.py @@ -19,6 +19,7 @@ ChatCompletionToolMessageParam, ChatCompletionUserMessageParam, ) +from openai.types.chat.chat_completion_content_part_param import File, FileFile from openai.types.chat.chat_completion_tool_param import ChatCompletionToolParam from openai.types.chat.completion_create_params import ResponseFormat from openai.types.responses import ( @@ -27,6 +28,7 @@ ResponseFunctionToolCall, ResponseFunctionToolCallParam, ResponseInputContentParam, + ResponseInputFileParam, ResponseInputImageParam, ResponseInputTextParam, ResponseOutputMessage, @@ -251,7 +253,19 @@ def extract_all_content( ) ) elif isinstance(c, dict) and c.get("type") == "input_file": - raise UserError(f"File uploads are not supported for chat completions {c}") + casted_file_param = cast(ResponseInputFileParam, c) + if "file_data" not in casted_file_param or not casted_file_param["file_data"]: + raise UserError( + f"Only file_data is supported for input_file {casted_file_param}" + ) + out.append( + File( + type="file", + file=FileFile( + file_data=casted_file_param["file_data"], + ), + ) + ) else: raise UserError(f"Unknown content: {c}") return out