Skip to content

Commit 5e6ee68

Browse files
fix(closes OPEN-8781): files not being parsed correctly for OpenAI tracer
1 parent 32facd2 commit 5e6ee68

File tree

1 file changed

+35
-8
lines changed

1 file changed

+35
-8
lines changed

src/openlayer/lib/integrations/openai_tracer.py

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -543,19 +543,27 @@ def _normalize_content_item(item: Dict[str, Any]) -> ContentItem:
543543
)
544544
return AudioContent(attachment=attachment)
545545

546-
# File content (Chat Completions only)
546+
# File content (Chat Completions API)
547547
elif item_type == "file":
548548
file_data = item.get("file", {})
549549
file_id = file_data.get("file_id")
550-
file_data_b64 = file_data.get("file_data")
550+
file_data_content = file_data.get("file_data")
551551
filename = file_data.get("filename", "file")
552552

553-
if file_data_b64:
554-
attachment = Attachment.from_base64(
555-
data_base64=file_data_b64,
556-
name=filename,
557-
media_type="application/octet-stream",
558-
)
553+
if file_data_content:
554+
if file_data_content.startswith("data:"):
555+
# Parse data URL: data:application/pdf;base64,{base64_data}
556+
attachment = _parse_data_url_to_attachment(
557+
file_data_content, default_type="file"
558+
)
559+
attachment.name = filename
560+
else:
561+
# Raw base64 data
562+
attachment = Attachment.from_base64(
563+
data_base64=file_data_content,
564+
name=filename,
565+
media_type="application/octet-stream",
566+
)
559567
elif file_id:
560568
# Just reference the file ID (can't download without API call)
561569
attachment = Attachment(name=filename)
@@ -565,6 +573,25 @@ def _normalize_content_item(item: Dict[str, Any]) -> ContentItem:
565573

566574
return FileContent(attachment=attachment)
567575

576+
# File content (Responses API) - different structure than Chat Completions
577+
elif item_type == "input_file":
578+
filename = item.get("filename", "file")
579+
file_data = item.get("file_data", "")
580+
file_id = item.get("file_id")
581+
582+
if file_data and file_data.startswith("data:"):
583+
# Parse data URL: data:application/pdf;base64,{base64_data}
584+
attachment = _parse_data_url_to_attachment(file_data, default_type="file")
585+
attachment.name = filename
586+
elif file_id:
587+
# Just reference the file ID
588+
attachment = Attachment(name=filename)
589+
attachment.metadata["openai_file_id"] = file_id
590+
else:
591+
attachment = Attachment(name=filename)
592+
593+
return FileContent(attachment=attachment)
594+
568595
else:
569596
# Unknown type, return as TextContent with string representation
570597
logger.debug("Unknown content item type: %s", item_type)

0 commit comments

Comments
 (0)