Skip to content

Commit cb37b74

Browse files
authored
otel: send BinaryContent information (#1603)
1 parent e93e3e8 commit cb37b74

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

pydantic_ai_slim/pydantic_ai/messages.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations as _annotations
22

3+
import base64
34
import uuid
45
from collections.abc import Sequence
56
from dataclasses import dataclass, field, replace
@@ -341,6 +342,9 @@ def otel_event(self) -> Event:
341342
content.append(part)
342343
elif isinstance(part, (ImageUrl, AudioUrl, DocumentUrl, VideoUrl)):
343344
content.append({'kind': part.kind, 'url': part.url})
345+
elif isinstance(part, BinaryContent):
346+
base64_data = base64.b64encode(part.data).decode()
347+
content.append({'kind': part.kind, 'content': base64_data, 'media_type': part.media_type})
344348
else:
345349
content.append({'kind': part.kind})
346350
return Event('gen_ai.user.message', body={'content': content, 'role': 'user'})

tests/models/test_instrumented.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from pydantic_ai.settings import ModelSettings
3737
from pydantic_ai.usage import Usage
3838

39-
from ..conftest import try_import
39+
from ..conftest import IsStr, try_import
4040

4141
with try_import() as imports_successful:
4242
from logfire.testing import CaptureLogfire
@@ -796,7 +796,7 @@ def test_messages_to_otel_events_image_url(document_content: BinaryContent):
796796
'event.name': 'gen_ai.user.message',
797797
},
798798
{
799-
'content': ['user_prompt6', {'kind': 'binary'}],
799+
'content': ['user_prompt6', {'kind': 'binary', 'content': IsStr(), 'media_type': 'application/pdf'}],
800800
'role': 'user',
801801
'gen_ai.message.index': 5,
802802
'event.name': 'gen_ai.user.message',

0 commit comments

Comments
 (0)