diff --git a/packages/opentelemetry-instrumentation-google-generativeai/opentelemetry/instrumentation/google_generativeai/config.py b/packages/opentelemetry-instrumentation-google-generativeai/opentelemetry/instrumentation/google_generativeai/config.py index 93ad99eb9f..f2bdc056f5 100644 --- a/packages/opentelemetry-instrumentation-google-generativeai/opentelemetry/instrumentation/google_generativeai/config.py +++ b/packages/opentelemetry-instrumentation-google-generativeai/opentelemetry/instrumentation/google_generativeai/config.py @@ -1,9 +1,10 @@ -from typing import Callable +from typing import Callable, Optional class Config: exception_logger = None use_legacy_attributes = True - upload_base64_image: Callable[[str, str, str, str], str] = ( - lambda trace_id, span_id, image_name, base64_string: str - ) + # Set by instrumentor only when a real image uploader is provided (e.g., + # Traceloop cloud). None by default — image processing is skipped when no + # uploader is configured, avoiding KeyError on non-Traceloop endpoints. + upload_base64_image: Optional[Callable[[str, str, str, str], str]] = None diff --git a/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/shared/config.py b/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/shared/config.py index 088a9a8f8a..8c30171b0d 100644 --- a/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/shared/config.py +++ b/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/shared/config.py @@ -7,9 +7,7 @@ class Config: enrich_assistant = False exception_logger = None get_common_metrics_attributes: Callable[[], dict] = lambda: {} - upload_base64_image: Callable[[str, str, str, str], str] = ( - lambda trace_id, span_id, image_name, base64_string: str - ) + upload_base64_image: Optional[Callable[[str, str, str, str], str]] = None enable_trace_context_propagation: bool = True use_legacy_attributes = True event_logger: Optional[Logger] = None diff --git a/packages/opentelemetry-instrumentation-vertexai/opentelemetry/instrumentation/vertexai/config.py b/packages/opentelemetry-instrumentation-vertexai/opentelemetry/instrumentation/vertexai/config.py index 93ad99eb9f..e08814f50f 100644 --- a/packages/opentelemetry-instrumentation-vertexai/opentelemetry/instrumentation/vertexai/config.py +++ b/packages/opentelemetry-instrumentation-vertexai/opentelemetry/instrumentation/vertexai/config.py @@ -1,9 +1,7 @@ -from typing import Callable +from typing import Callable, Optional class Config: exception_logger = None use_legacy_attributes = True - upload_base64_image: Callable[[str, str, str, str], str] = ( - lambda trace_id, span_id, image_name, base64_string: str - ) + upload_base64_image: Optional[Callable[[str, str, str, str], str]] = None diff --git a/packages/traceloop-sdk/traceloop/sdk/__init__.py b/packages/traceloop-sdk/traceloop/sdk/__init__.py index 22bf97d5c2..0fefa42d05 100644 --- a/packages/traceloop-sdk/traceloop/sdk/__init__.py +++ b/packages/traceloop-sdk/traceloop/sdk/__init__.py @@ -146,7 +146,9 @@ def init( exporter=exporter, sampler=sampler, should_enrich_metrics=should_enrich_metrics, - image_uploader=image_uploader or ImageUploader(api_endpoint, api_key), + image_uploader=image_uploader or ( + ImageUploader(api_endpoint, api_key) if endpoint_is_traceloop else None + ), instruments=instruments, block_instruments=block_instruments, span_postprocess_callback=span_postprocess_callback, diff --git a/packages/traceloop-sdk/traceloop/sdk/tracing/tracing.py b/packages/traceloop-sdk/traceloop/sdk/tracing/tracing.py index dc469911e0..b758a928cd 100644 --- a/packages/traceloop-sdk/traceloop/sdk/tracing/tracing.py +++ b/packages/traceloop-sdk/traceloop/sdk/tracing/tracing.py @@ -163,7 +163,7 @@ def chained_on_start(span, parent_context=None, orig=original_on_start): init_instrumentations( should_enrich_metrics, - image_uploader.aupload_base64_image, + image_uploader.aupload_base64_image if image_uploader else None, instruments, block_instruments, )