When the register_otel function does not offer enough customization for your needs, you can use the opentelemetry_sdk to control how you send traces.
Here is an example of all of the different customizations we offer using opentelemetry.
Set the authentication for sending data to Arize using environment variables
Set the model ID and model version as resource attributes
Add multiple locations for exporting data, including the console.
Below is some sample python code below on setting up the auto instrumentation before starting the OpenAI auto instrumentor.
import os# Import open-telemetry dependenciesfrom opentelemetry import trace as trace_apifrom opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporterfrom opentelemetry.sdk import trace as trace_sdkfrom opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessorfrom opentelemetry.sdk.resources import Resource# Import the automatic instrumentor from OpenInferencefrom openinference.instrumentation.openai import OpenAIInstrumentor# Set the Space and API keys as headers for authenticationheaders =f"space_key={ARIZE_SPACE_KEY},api_key={ARIZE_API_KEY}"os.environ['OTEL_EXPORTER_OTLP_TRACES_HEADERS']= headers# Set resource attributes for the name and version for your applicationresource =Resource( attributes={"model_id":"openai-llm-tracing", # Set this to any name you'd like for your app"model_version":"1.0", # Set this to a version number string })# Define the desired endpoint URL to send tracesendpoint ="https://otlp.arize.com/v1"# Set the tracer providertracer_provider = trace_sdk.TracerProvider(resource=resource)tracer_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter(endpoint)))tracer_provider.add_span_processor(SimpleSpanProcessor(ConsoleSpanExporter()))trace_api.set_tracer_provider(tracer_provider=tracer_provider)# Finish automatic instrumentationOpenAIInstrumentor().instrument()