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 import trace as trace_api
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

Fore details about tracing with OpenInference and Phoenix, consult the Phoenix documentation.

For AI/ML observability solutions in production, check out the docs on Arize.

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.12.tar.gz.

File metadata

File hashes

Hashes for openinference_instrumentation_openai-0.1.12.tar.gz
Algorithm Hash digest
SHA256 e2bbbf006446b22def884f76c508378e45da092be0c1262c48894d1540c3bf18
MD5 825fc3de6ba0c2befe65ade9d64d0e35
BLAKE2b-256 1e6f0d6e494ebd5d5e69ce98e7a652f44442c56debddcc7a552c26ddc64f3a20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openinference_instrumentation_openai-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 6d1dee5bf1efe03a9543fb90450b04d376a9b8817818b90c05c81252cbb4fb64
MD5 faa3043e37ffdcd4bc8a60fc022d7acf
BLAKE2b-256 a22338ee6b1d9495742d1d2bcff3ee74177a6f27f19834ce5f434e406ca0a7b4

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