메인 콘텐츠로 건너뛰기
이 가이드는 서드파티 라이브러리(예: 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.js의 --import 플래그를 사용해 자동 계측을 활성화합니다. weave 패키지가 설치되어 있으면 weave/instrument 모듈을 사용할 수 있습니다.
  1. Weave를 설치합니다:
    npm install weave
    
  2. weave/instrument 모듈을 import합니다:
    node --import=weave/instrument dist/main.js
    

고급 사용 및 문제 해결

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

NODE_OPTIONS 사용하기 (ESM 전용)

환경 내 모든 Node.js 프로세스에 영향을 주고 부작용을 일으킬 수 있으므로 NODE_OPTIONS를 사용할 때는 주의하세요.
ESM 프로젝트를 사용 중이고 CLI 도구나 프레임워크의 제약으로 인해 CLI 플래그를 전달할 수 없다면 NODE_OPTIONS 환경 변수를 설정하세요:
export NODE_OPTIONS="--import=weave/instrument"

번들러 호환성

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

수동 패치 (폴백 옵션)

수동 패치는 레거시 방식이며, 자동 패치가 동작하지 않을 때만 사용해야 합니다.
어떤 경우에는 여전히 수동 계측을 사용해야 할 수 있습니다:
import { wrapOpenAI } from 'weave';
const client = wrapOpenAI(new OpenAI());