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을 보낸 후 다른 기능도 확인해 보세요:
- 프롬프트 플레이그라운드에서 span을 다시 실행하며 프롬프트와 파라미터를 반복·비교하기
- 평가 및 개발 워크플로우를 위해 span을 데이터셋에 추가하기
- 수신 span에서 온라인 평가를 지속적으로 실행해 애플리케이션 성능 이해하기
AX는 데이터셋과 평가를 관리하기 위한 TypeScript 클라이언트를 제공해요.
더 알아보기 (Learn more)
- 출처 문서: Arize AX Observability