メインコンテンツへスキップ
このガイドでは、サードパーティーライブラリ(例: 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 モジュールをインポートします:
    node --import=weave/instrument dist/main.js
    

高度な使い方とトラブルシューティング

このセクションでは、TypeScript SDK の自動パッチ適用が期待どおりに動作しない場合のエッジケースと回避策について説明します。たとえば、ESM のみの環境、Next.js のようなバンドラー設定、あるいは制約の厳しい実行環境などが、予期しない問題を引き起こすことがあります。トレースが欠落していたりインテグレーションに問題が発生している場合は、まずここから確認してください。

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 のようなフレームワークを使う場合は、このセットアップを使って自動計測を有効にしてください。
    externals: {
    'openai': 'commonjs openai'
    }
    
  2. それでもパッチに失敗する場合は、手動計測にフォールバックしてください。

手動パッチ適用(フォールバックオプション)

手動でのパッチ適用はレガシーな方法であり、自動パッチ適用が機能しない場合にのみ使用してください。
一部の状況では、それでも手動インストルメンテーションが必要になる場合があります。
import { wrapOpenAI } from 'weave';
const client = wrapOpenAI(new OpenAI());