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 18f44690c9..5cddde86ec 100644 --- a/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/shared/config.py +++ b/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/shared/config.py @@ -2,9 +2,14 @@ class Config: + use_legacy_attributes = True + emit_prompt_events = True + emit_completion_events = True enrich_token_usage = False enrich_assistant = False exception_logger = None get_common_metrics_attributes: Callable[[], dict] = lambda: {} - upload_base64_image: Callable[[str, str, str], str] = lambda trace_id, span_id, base64_image_url: str + upload_base64_image: Callable[[str, str, str], str] = ( + lambda trace_id, span_id, base64_image_url: str + ) enable_trace_context_propagation: bool = True diff --git a/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/utils.py b/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/utils.py index e0ab375a17..083053eb9a 100644 --- a/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/utils.py +++ b/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/utils.py @@ -114,6 +114,20 @@ async def start_as_current_span_async(tracer, *args, **kwargs): yield span +def record_prompt_and_completion(span, prompt: str, completion: str): + """ + Emit prompt/completion as attributes or events based on Config. + """ + if Config.use_legacy_attributes: + span.set_attribute("llm.prompt", prompt) + span.set_attribute("llm.completion", completion) + else: + if Config.emit_prompt_events: + span.add_event("prompt", {"llm.prompt": prompt}) + if Config.emit_completion_events: + span.add_event("completion", {"llm.completion": completion}) + + def dont_throw(func): """ A decorator that wraps the passed in function and logs exceptions instead of throwing them.