Arize AX Observability

Arize AX Observability

Arize AX는 에이전트와 복잡한 AI 시스템을 위해 특별히 설계된 엔터프라이즈급 관측성, 평가, 실험 플랫폼이에요. 실무에서의 AI 애플리케이션을 엄격하게 개발하고 개선할 수 있게 팀에 힘을 실어줘요.

이 가이드는 Arize AX 문서에서도 찾을 수 있어요.

출처: 문서

본문

설정

Arize AX는 일급(first-class) OpenTelemetry 통합을 제공하며 Next.js와 Node.js 환경 모두에서 AI SDK와 직접 동작해요.

Arize AX는 OpenInferenceSimpleSpanProcessor와 OpenInferenceBatchSpanProcessor를 제공해요. 아래 모든 예시는 simple 또는 batch 프로세서 중 어느 쪽과도 함께 사용할 수 있어요. simple/batch span 프로세서에 대한 자세한 내용은 문서를 참고하세요.

Next.js

Next.js 애플리케이션에서는 @vercel/otel의 registerOtel과 함께 OpenInference span 프로세서 중 하나를 사용해요.

먼저 AI SDK, OpenTelemetry, OpenInference에 필요한 의존성을 설치해요.

npm install ai @ai-sdk/openai @ai-sdk/otel @vercel/otel @arizeai/openinference-vercel @opentelemetry/exporter-trace-otlp-proto

그런 다음 instrumentation.ts 파일에 AI SDK 텔레메트리 통합 등록을 포함해 다음을 추가해요:

import { registerTelemetry } from 'ai';
import { LegacyOpenTelemetry } from '@ai-sdk/otel';
import { registerOTel } from '@vercel/otel';
import {
  isOpenInferenceSpan,
  OpenInferenceSimpleSpanProcessor,
} from '@arizeai/openinference-vercel';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';

registerTelemetry(new LegacyOpenTelemetry());

export function register() {
  registerOTel({
    attributes: {
      model_id: 'my-ai-app',
      model_version: '1.0.0',
    },
    spanProcessors: [
      new OpenInferenceSimpleSpanProcessor({
        exporter: new OTLPTraceExporter({
          url: 'https://otlp.arize.com/v1/traces',
          headers: {
            space_id: process.env.ARIZE_SPACE_ID,
            api_key: process.env.ARIZE_API_KEY,
          },
        }),
        // Optionally add a span filter to only include AI related spans
        spanFilter: isOpenInferenceSpan,
      }),
    ],
  });
}

span은 위 model_id 필드에 지정된 프로젝트 아래의 Arize AX에 표시돼요.

통합이 등록되면 모든 AI SDK 호출에 대해 텔레메트리가 자동으로 전송돼요:

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';

const result = await generateText({
  model: openai('gpt-6-luna'),
  prompt: 'Please write a haiku.',
});

Node.js

Node.js에서는 NodeSDK 또는 NodeTraceProvider를 사용할 수 있어요.

NodeSDK

먼저 AI SDK, OpenTelemetry, OpenInference에 필요한 의존성을 설치해요.

npm install ai @ai-sdk/openai @ai-sdk/otel @opentelemetry/sdk-node @arizeai/openinference-vercel @opentelemetry/exporter-trace-otlp-proto @opentelemetry/resources

그런 다음 instrumentation.ts 파일에 다음을 추가해요:

import { registerTelemetry } from 'ai';
import { LegacyOpenTelemetry } from '@ai-sdk/otel';
import {
  isOpenInferenceSpan,
  OpenInferenceSimpleSpanProcessor,
} from '@arizeai/openinference-vercel';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';
import { resourceFromAttributes } from '@opentelemetry/resources';
import { NodeSDK } from '@opentelemetry/sdk-node';

const sdk = new NodeSDK({
  resource: resourceFromAttributes({
    model_id: 'my-ai-app',
    model_version: '1.0.0',
  }),
  spanProcessors: [
    new OpenInferenceSimpleSpanProcessor({
      exporter: new OTLPTraceExporter({
        url: 'https://otlp.arize.com/v1/traces',
        headers: {
          space_id: process.env.ARIZE_SPACE_ID,
          api_key: process.env.ARIZE_API_KEY,
        },
      }),
      spanFilter: isOpenInferenceSpan,
    }),
  ],
});

sdk.start();
registerTelemetry(new LegacyOpenTelemetry());

span은 위 model_id 필드에 지정된 프로젝트 아래의 Arize AX에 표시돼요.

통합이 등록되면 모든 AI SDK 호출에 대해 텔레메트리가 자동으로 전송돼요:

const result = await generateText({
  model: openai('gpt-6-luna'),
  prompt: 'Please write a haiku.',
});

NodeTraceProvider

먼저 AI SDK, OpenTelemetry, OpenInference에 필요한 의존성을 설치해요.

npm install ai @ai-sdk/openai @ai-sdk/otel @opentelemetry/sdk-trace-node @arizeai/openinference-vercel @opentelemetry/exporter-trace-otlp-proto @opentelemetry/resources

그런 다음 instrumentation.ts 파일에 다음을 추가해요:

import { registerTelemetry } from 'ai';
import { LegacyOpenTelemetry } from '@ai-sdk/otel';
import {
  isOpenInferenceSpan,
  OpenInferenceSimpleSpanProcessor,
} from '@arizeai/openinference-vercel';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';
import { resourceFromAttributes } from '@opentelemetry/resources';
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';

const provider = new NodeTracerProvider({
  resource: resourceFromAttributes({
    model_id: 'my-ai-app',
    model_version: '1.0.0',
  }),
  spanProcessors: [
    new OpenInferenceSimpleSpanProcessor({
      exporter: new OTLPTraceExporter({
        url: 'https://otlp.arize.com/v1/traces',
        headers: {
          space_id: process.env.ARIZE_SPACE_ID,
          api_key: process.env.ARIZE_API_KEY,
        },
      }),
      spanFilter: isOpenInferenceSpan,
    }),
  ],
});
provider.register();
registerTelemetry(new LegacyOpenTelemetry());

span은 위 model_id 필드에 지정된 프로젝트 아래의 Arize AX에 표시돼요.

통합이 등록되면 모든 AI SDK 호출에 대해 텔레메트리가 자동으로 전송돼요:

const result = await generateText({
  model: openai('gpt-6-luna'),
  prompt: 'Please write a haiku.',
});

자료

Arize AX 프로젝트로 span을 보낸 후 다른 기능도 확인해 보세요:

AX는 데이터셋과 평가를 관리하기 위한 TypeScript 클라이언트를 제공해요.

더 알아보기 (Learn more)