def _instrument()

in instrumentation/elastic-opentelemetry-instrumentation-openai/src/opentelemetry/instrumentation/openai/__init__.py [0:0]


    def _instrument(self, **kwargs):
        """Instruments OpenAI Completions and AsyncCompletions

        Args:
            **kwargs: Optional arguments
                ``tracer_provider``: a TracerProvider, defaults to global
                ``meter_provider``: a MeterProvider, defaults to global
                ``event_logger_provider``: a EventLoggerProvider, defaults to global
                ``capture_message_content``: to enable content capturing, defaults to False
        """
        capture_message_content = "true" if kwargs.get("capture_message_content") else "false"
        self.capture_message_content = (
            os.environ.get(OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT, capture_message_content).lower()
            == "true"
        )

        tracer_provider = kwargs.get("tracer_provider")
        self.tracer = get_tracer(
            __name__,
            __version__,
            tracer_provider,
            schema_url=Schemas.V1_31_0.value,
        )
        meter_provider = kwargs.get("meter_provider")
        self.meter = get_meter(
            __name__,
            __version__,
            meter_provider,
            schema_url=Schemas.V1_31_0.value,
        )
        event_logger_provider = kwargs.get("event_logger_provider")
        self.event_logger = get_event_logger(__name__, event_logger_provider)

        self.token_usage_metric = self.meter.create_histogram(
            name=GEN_AI_CLIENT_TOKEN_USAGE,
            description="Measures number of input and output tokens used",
            unit="{token}",
            explicit_bucket_boundaries_advisory=_GEN_AI_CLIENT_TOKEN_USAGE_BUCKETS,
        )

        self.operation_duration_metric = self.meter.create_histogram(
            name=GEN_AI_CLIENT_OPERATION_DURATION,
            description="GenAI operation duration",
            unit="s",
            explicit_bucket_boundaries_advisory=_GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS,
        )

        register_post_import_hook(self._patch, "openai")