Instrument calls to the OpenAI Python Library
The OpenAI Python Library implements Python bindings for OpenAI's popular suite of models. Phoenix provides utilities to instrument calls to OpenAI's API, enabling deep observability into the behavior of an LLM application build on top on these models.
OpenInference Traces collect telemetry data about the execution of your LLM application. Consider using this instrumentation to understand how a OpenAI model is being called inside a complex system and to troubleshoot issues such as extraction and response synthesis. These traces can also help debug operational issues such as rate limits, authentication issues or improperly set model parameters.
Phoenix currently supports calls to the
ChatCompletioninterface, but more are planned soon.
To view OpenInference traces in Phoenix, you will first have to start a Phoenix server. You can do this by running the following:
import phoenix as px
session = px.launch_app()
Once you have started a Phoenix server, you can instrument the
openaiPython library using the
from phoenix.trace.tracer import Tracer
from phoenix.trace.exporter import HttpExporter
from phoenix.trace.openai.instrumentor import OpenAIInstrumentor
tracer = Tracer(exporter=HttpExporter())
All subsequent calls to the
ChatCompletioninterface will now report informational spans to Phoenix. These traces and spans are viewable within the Phoenix UI.
# View in the browser
# View in the notebook directy
If you would like to save your traces to a file for later use, you can directly extract the traces from the
To directly extract the traces from the
tracer, dump the traces from the tracer into a file (we recommend
from phoenix.trace.span_json_encoder import spans_to_jsonl
with open("trace.jsonl", "w") as f:
Now you can save this file for later inspection. To launch the app with the file generated above, simply pass the contents in the file above via a
from phoenix.trace.utils import json_lines_to_df
json_lines = 
with open("trace.jsonl", "r") as f:
json_lines = cast(List[str], f.readlines())
trace_ds = TraceDataset(json_lines_to_df(json_lines))
In this way, you can use files as a means to store and communicate interesting traces that you may want to use to share with a team or to use later down the line to fine-tune an LLM or model.