메인 콘텐츠로 건너뛰기
이 가이드는 서드파티 라이브러리(예: OpenAI)를 Weave TypeScript SDK와 통합하는 방법을 설명합니다. Weave는 자동 계측을 지원하므로 설정이 더 간단해지고 수동 구성의 필요성이 줄어듭니다.
무엇이 변경되었나요? PR #4554부터 OpenAI와 같은 지원되는 라이브러리는 Weave가 로드될 때 자동으로 패치됩니다. 이전처럼 수동으로 래핑할 필요가 없습니다:
weave.wrapOpenAI(new OpenAI());
대부분의 경우 Weave가 이 과정을 자동으로 처리합니다. 다만 특수한 경우(엣지 케이스)가 존재할 수 있습니다.

사용 방법

CommonJS 또는 ESM을 사용할 수 있습니다.

CommonJS

CommonJS의 경우 별도의 설정이 필요하지 않습니다. 자동 패칭이 기본적으로 동작합니다. Weave만 설치하면 됩니다:
npm install weave

ESM

ESM의 경우 Node의 --import 플래그를 사용해 자동 계측을 활성화합니다. weave 패키지가 설치되어 있기만 하면 weave/instrument 모듈을 사용할 수 있습니다.
  1. Weave를 설치합니다:
    npm install weave
    
  2. weave/instrument 모듈을 불러옵니다:
    node --import=weave/instrument dist/main.js
    

고급 사용법 및 문제 해결

이 섹션에서는 TypeScript SDK의 자동 패치가 예상대로 동작하지 않을 때를 위한 예외적인 케이스와 우회 방법을 다룹니다. 예를 들어 ESM 전용 환경, Next.js 같은 번들러 설정, 제약이 있는 런타임 환경에서는 예기치 않은 문제가 발생할 수 있습니다. 트레이스(trace)가 누락되거나 통합에 문제가 발생한다면, 이 섹션부터 확인하세요.

NODE_OPTIONS 사용하기 (ESM 전용)

NODE_OPTIONS는 주의해서 사용해야 합니다. 이 설정은 환경 내 모든 Node.js 프로세스에 영향을 미쳐 예상치 못한 부작용이 발생할 수 있습니다.
ESM 프로젝트를 사용 중이고 CLI 플래그를 전달할 수 없는 경우(예: CLI 도구나 프레임워크의 제약으로 인해), NODE_OPTIONS 환경 변수를 설정하세요:
export NODE_OPTIONS="--import=weave/instrument"

번들러 호환성

Next.js와 같은 일부 프레임워크와 번들러는 서드파티 라이브러리를 번들링하는 방식 때문에 Node가 런타임에 해당 라이브러리를 패치하지 못하도록 만들 수 있습니다. 환경이 이에 해당한다면, 다음 단계를 시도하십시오:
  1. 번들러 설정에서 LLM 라이브러리를 external로 표시하십시오. 이렇게 하면 해당 라이브러리가 번들링되지 않으므로, Weave가 런타임에 올바르게 패치할 수 있습니다. 다음 예시는 next.config.js 설정에서 openai 패키지를 external로 표시하여 번들링되지 않도록 하는 방법을 보여줍니다. 모듈은 런타임에 로드되므로, Weave가 이를 자동으로 패치하고 추적할 수 있습니다. Next.js와 같은 프레임워크에서 자동 계측(auto-instrumentation)을 활성화할 때 이 구성을 사용하십시오.
    externals: {
    'openai': 'commonjs openai'
    }
    
  2. 여전히 패치가 실패한다면, 수동 계측으로 폴백(fallback)하십시오.

수동 패치(대체 옵션)

수동 패치는 레거시 방식이므로 자동 패치가 작동하지 않을 때만 사용해야 합니다.
특정 상황에서는 여전히 수동 계측을 사용해야 할 수도 있습니다.
import { wrapOpenAI } from 'weave';
const client = wrapOpenAI(new OpenAI());