Skip to main content

OpenInference OpenAI Instrumentation

Project description

OpenInference OpenAI Instrumentation

pypi

Python auto-instrumentation library for OpenAI's python SDK.

The traces emitted by this instrumentation are fully OpenTelemetry compatible and can be sent to an OpenTelemetry collector for viewing, such as arize-phoenix

Installation

pip install openinference-instrumentation-openai

Quickstart

In this example we will instrument a small program that uses OpenAI and observe the traces via arize-phoenix.

Install packages.

pip install openinference-instrumentation-openai "openai>=1.26" arize-phoenix opentelemetry-sdk opentelemetry-exporter-otlp

Start the phoenix server so that it is ready to collect traces. The Phoenix server runs entirely on your machine and does not send data over the internet.

python -m phoenix.server.main serve

In a python file, setup the OpenAIInstrumentor and configure the tracer to send traces to Phoenix.

import openai
from openinference.instrumentation.openai import OpenAIInstrumentor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk import trace as trace_sdk
from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor

endpoint = "http://127.0.0.1:6006/v1/traces"
tracer_provider = trace_sdk.TracerProvider()
tracer_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter(endpoint)))
# Optionally, you can also print the spans to the console.
tracer_provider.add_span_processor(SimpleSpanProcessor(ConsoleSpanExporter()))

OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)


if __name__ == "__main__":
    client = openai.OpenAI()
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": "Write a haiku."}],
        max_tokens=20,
        stream=True,
        stream_options={"include_usage": True},
    )
    for chunk in response:
        if chunk.choices and (content := chunk.choices[0].delta.content):
            print(content, end="")

Since we are using OpenAI, we must set the OPENAI_API_KEY environment variable to authenticate with the OpenAI API.

export OPENAI_API_KEY=your-api-key

Now simply run the python file and observe the traces in Phoenix.

python your_file.py

FAQ

Q: How to get token counts when streaming?

A: To get token counts when streaming, install openai>=1.26 and set stream_options={"include_usage": True} when calling create. See the example shown above. For more info, see here.

More Info

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

File details

Details for the file openinference_instrumentation_openai-0.1.16.tar.gz.

File metadata

File hashes

Hashes for openinference_instrumentation_openai-0.1.16.tar.gz
Algorithm Hash digest
SHA256 72cdb13578d5d1dc69ffd6e715c02901cebe5f15ed663daced77fe6fc12e02a8
MD5 37ea296066e5620539b2e6bb87c9f42f
BLAKE2b-256 00318a4e492aa086d1ca36c1d3e02e8885702b557d967a2519a3df9dfe320e29

See more details on using hashes here.

File details

Details for the file openinference_instrumentation_openai-0.1.16-py3-none-any.whl.

File metadata

File hashes

Hashes for openinference_instrumentation_openai-0.1.16-py3-none-any.whl
Algorithm Hash digest
SHA256 b19196185514f00b64be641e469564d34884b4a2b87b735d0f31eeee0332f139
MD5 a8c6d5dc8885b4b5147e3a0f0cb0ede3
BLAKE2b-256 47bc60e2c3b083071e5e54a94d641732bf6a11670ec6f069ce89840bb2064c19

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page