Skip to main content

Documentation Index

Fetch the complete documentation index at: https://arize-ax.mintlify.dev/docs/llms.txt

Use this file to discover all available pages before exploring further.

Portkey is an AI gateway and control panel that puts a single OpenAI-compatible endpoint in front of 250+ LLMs, with retries, fallbacks, caching, and cost controls. Arize AX captures every Portkey-routed call — the gateway request and the underlying LLM completion — via the openinference-instrumentation-portkey package.

Prerequisites

  • Python 3.10+
  • An Arize AX account (sign up)
  • A PORTKEY_API_KEY from the Portkey dashboard
  • An OPENAI_API_KEY from the OpenAI Platform (the example routes Portkey → OpenAI; swap in any other provider Portkey supports)

Launch Arize AX

  1. Sign in to your Arize AX account.
  2. From Space Settings, copy your Space ID and API Key. You will set them as ARIZE_SPACE_ID and ARIZE_API_KEY below.

Install

pip install arize-otel openinference-instrumentation-portkey portkey-ai openai

Configure credentials

export ARIZE_SPACE_ID="<your-space-id>"
export ARIZE_API_KEY="<your-api-key>"
export ARIZE_PROJECT_NAME="portkey-tracing-example"
export PORTKEY_API_KEY="<your-portkey-api-key>"
export OPENAI_API_KEY="<your-openai-api-key>"

Setup tracing

# instrumentation.py
import os

from arize.otel import register
from openinference.instrumentation.portkey import PortkeyInstrumentor

tracer_provider = register(
    space_id=os.environ["ARIZE_SPACE_ID"],
    api_key=os.environ["ARIZE_API_KEY"],
    project_name=os.environ["ARIZE_PROJECT_NAME"],
)

PortkeyInstrumentor().instrument(tracer_provider=tracer_provider)
print("Arize AX tracing initialized for Portkey.")

Run Portkey

# example.py

# Importing instrumentation first ensures tracing is set up
# before `portkey_ai` is imported.
from instrumentation import tracer_provider

import os

from portkey_ai import Portkey

# The Portkey SDK forwards the request to the named provider using the
# Authorization header you pass. The instrumentor only wraps calls made
# through this client — using the OpenAI SDK pointed at Portkey's URL
# would bypass the instrumentation.
portkey = Portkey(
    api_key=os.environ["PORTKEY_API_KEY"],
    provider="openai",
    Authorization=f"Bearer {os.environ['OPENAI_API_KEY']}",
)

response = portkey.chat.completions.create(
    model="gpt-5-mini",
    messages=[
        {
            "role": "user",
            "content": "Why is the ocean salty? Answer in two sentences.",
        }
    ],
)

print(response.choices[0].message.content)

Expected output

Arize AX tracing initialized for Portkey.
The ocean is salty because rivers continuously dissolve mineral salts from rocks and soil and carry them to the sea, where they accumulate over millions of years. Water leaves the ocean through evaporation but the salts remain, steadily concentrating until reaching today's roughly 3.5% salinity.

Verify in Arize AX

  1. Open your Arize AX space and select project portkey-tracing-example.
  2. You should see a new trace within ~30 seconds containing a Completions LLM span with the prompt, response, and token usage attached. The span’s llm.model_name reflects the resolved provider model (e.g. gpt-5-mini-2025-08-07).
  3. If no traces appear, see Troubleshooting.

Troubleshooting

  • No traces in Arize AX. Confirm ARIZE_SPACE_ID and ARIZE_API_KEY are set in the same shell that runs example.py. Enable OpenTelemetry debug logs with export OTEL_LOG_LEVEL=debug and re-run.
  • Portkey spans missing but other spans present. PortkeyInstrumentor().instrument(...) must run before any from portkey_ai import .... Make sure instrumentation.py is the first import in your entry point.
  • 401 from the gateway. A 401 with an OpenAI body means OPENAI_API_KEY is invalid; a 401 with a Portkey body means PORTKEY_API_KEY is invalid. Check both in the Portkey logs.
  • Routing to a different provider. Set provider= in createHeaders(...) (e.g. "anthropic", "google") and pass the matching provider key. Portkey also supports virtual keys — see the Portkey docs for setup.

Resources

Portkey Documentation

OpenInference Portkey Instrumentor

Portkey Python SDK