Skip to content

Commit 6abc260

Browse files
committed
Implement support for UploadedFile in OpenAIModel
1 parent 2cb4086 commit 6abc260

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

pydantic_ai_slim/pydantic_ai/models/openai.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from datetime import datetime
99
from typing import Any, Literal, Union, cast, overload
1010

11+
from openai.types import FileObject
1112
from pydantic import ValidationError
1213
from typing_extensions import assert_never, deprecated
1314

@@ -36,6 +37,7 @@
3637
ThinkingPart,
3738
ToolCallPart,
3839
ToolReturnPart,
40+
UploadedFile,
3941
UserPromptPart,
4042
VideoUrl,
4143
)
@@ -697,6 +699,16 @@ async def _map_user_prompt(part: UserPromptPart) -> chat.ChatCompletionUserMessa
697699
content.append(file)
698700
elif isinstance(item, VideoUrl): # pragma: no cover
699701
raise NotImplementedError('VideoUrl is not supported for OpenAI')
702+
elif isinstance(item, UploadedFile):
703+
if not isinstance(item.file, FileObject):
704+
raise UserError('UploadedFile.file_object must be an OpenAI FileObject')
705+
file = File(
706+
file=FileFile(
707+
file_id=item.file.id,
708+
),
709+
type='file',
710+
)
711+
content.append(file)
700712
else:
701713
assert_never(item)
702714
return chat.ChatCompletionUserMessageParam(role='user', content=content)

0 commit comments

Comments
 (0)