Launch Week 3: Five days of launches

Switch from Arize to Confident AI

Move your traces from Arize Phoenix or Arize AX to Confident AI with confident-trace. Your OpenTelemetry spans and OpenInference instrumentors stay untouched.

Overview

Phoenix (open source) and Arize AX both sit on OpenTelemetry through OpenInference instrumentors. confident-trace exports through the same provider, so the switch is one call: replace register() with init(), add one decorator to your entry point, and keep the OpenInference spans you emit today. The steps below show Phoenix first and Arize AX second where they differ.

In this guide, you will:

  • Install confident-trace and replace the Arize keys with one CONFIDENT_API_KEY.
  • Replace the client setup with init() so auto instrumentation emits the spans.
  • Add @span to your entry point so every trace carries a name, an input and an output.
  • See what changes once the traces land in Confident AI: evals on every trace, datasets curated from production, alerts when quality drops.
$200 in migration credits, applied after your callBook a call, show us your current setup, and we map your traces, datasets and prompts together. Applied as a coupon to your first paid invoice, one per organization.Book a migration call

Prerequisites

  • A Project API Key, CONFIDENT_API_KEY (for example confident_us_proj_...). Retrieve yours here.
  • Python 3.10+ for the Python SDK, or Node.js 22+ for the TypeScript SDK.
  • Your existing Arize setup. The before snippets below follow the Arize quickstart as of September 2026.

Switch

  1. Install confident-trace

    One package. Provider SDKs stay optional peers. CONFIDENT_API_KEY replaces PHOENIX_COLLECTOR_ENDPOINT, PHOENIX_API_KEY, PHOENIX_PROJECT_NAME (Phoenix) or ARIZE_SPACE_ID, ARIZE_API_KEY, ARIZE_PROJECT_NAME (Arize AX). For the EU region, also set CONFIDENT_OTEL_ENDPOINT=https://eu.otel.confident-ai.com/v1/traces.

    pip install confident-trace
    export CONFIDENT_API_KEY=...
    # replaces PHOENIX_COLLECTOR_ENDPOINT, PHOENIX_API_KEY, PHOENIX_PROJECT_NAME (Phoenix) or ARIZE_SPACE_ID, ARIZE_API_KEY, ARIZE_PROJECT_NAME (Arize AX)
  2. Replace register() with init()

    Drop the tracer provider and the manual instrumentor call. Auto instrumentation emits the spans. Existing OpenInference spans export through the shared provider.

    from phoenix.otel import register
    from openai import OpenAI
    
    tracer_provider = register(
        project_name="my-app",
        auto_instrument=True,
    )
    client = OpenAI()
    
    response = client.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[{"role": "user", "content": "Hello"}],
    )
  3. Add @span to your entry point

    Phoenix and Arize AX have no decorator in their quickstarts. One decorator gives the trace a name, an input and an output. Existing OpenInference spans still export.

    After (confident-trace)
    from confident_trace import span
    
    @span
    def answer(question: str) -> str:
        return client.chat.completions.create(
            model="gpt-4.1-mini",
            messages=[{"role": "user", "content": question}],
        ).choices[0].message.content

Run your app once. The trace appears in your project's Observatory within seconds. If it does not, check that CONFIDENT_API_KEY is set in the same process and that the app flushes before it exits.

What Changes

Tracing is where you start. Evals are where it pays off. Every trace gets a score. Low scores become dataset rows. Dataset rows become regression tests. Your next release ships against real production failures.

CapabilityPhoenix (open source)Arize AXConfident AI
OpenTelemetry ingestionYesYesOTLP over HTTP and gRPC
Auto-instrumented providersOpenInference instrumentorsOpenInference instrumentorsOpenAI, Anthropic, Google GenAI, Bedrock, 5 gateways, 16 frameworks
Built-in eval metricsphoenix.evals, custom evaluatorsCustom evaluators50+ research-backed metrics through DeepEval
Online evals on traces, spans and threadsYou run and schedule the jobYesYes
Quality-aware alerting on eval scoresNoSlack, PagerDuty, OpsGenieEmail, Slack, Discord, Teams
Prompt and use case drift detectionNoLimitedYes
Automatic dataset curation from productionManual, or by scriptManualIngestion tasks, filtered and tagged
Multi-turn simulationNoNoYes
Git-based prompt managementNoNoBranches, PRs, approvals, eval actions
Cross-functional workflows, no codeNoNoPMs and QA run evals over HTTP
Regression testing and CI gatesNoNoYes
Safety monitoringNoNoToxicity, bias, PII on production traffic

Migration Questions

Do I have to rewrite my instrumentation?

No. confident-trace exports through standard OTLP. Existing OpenTelemetry spans from your frameworks are exported as they are.

Can I run both during the switch?

Yes. Point an OpenTelemetry Collector at both endpoints and compare for a week before you cut over. CONFIDENT_OTEL_ENDPOINT accepts a Collector URL.

I am on Phoenix Cloud, not self-hosted. Which snippet do I use?

The Phoenix snippet. The register() call is the same. Only the endpoint and the API key change.

What about my Phoenix datasets and prompts?

Datasets export as CSV. Prompts export through the Phoenix CLI. Bring them to the migration call and we map them.

How do I get the $200?

Book the call. After it, we apply a $200 coupon to your organization's first paid invoice. One reward per organization.

Is the TypeScript SDK ready?

The Python SDK is stable on PyPI. The TypeScript SDK is an alpha release on npm. The TypeScript snippets in this guide follow the alpha API.

Last updated on

Built byConfident AI