> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# TypeScript SDK: サードパーティ インテグレーション ガイド

> サードパーティライブラリを Weave TypeScript SDK と統合する

このガイドでは、サードパーティライブラリ (OpenAI など) を Weave TypeScript SDK と統合する方法について説明します。アプリケーション内でサポートされるライブラリへの Call を Weave で自動的にトレースしたい TypeScript 開発者を対象としています。

Weave は自動インストルメンテーションをサポートしているため、セットアップが簡単になり、手動で設定する手間も軽減されます。

<Warning>
  **変更点**
  [PR #4554](https://github.com/wandb/weave/pull/4554) 以降、Weave は読み込み時に OpenAI などのサポートされるライブラリに自動でパッチを適用します。次のように手動でラップする必要はなくなりました。

  ```ts twoslash lines theme={"system"}
  // @noErrors
  weave.wrapOpenAI(new OpenAI());
  ```

  ほとんどの場合、この処理は Weave が自動的に行います。ただし、[エッジケース](#advanced-usage)が発生する場合があります。
</Warning>

<h2 id="use-weave-integrations-with-your-typescript-project">
  TypeScript project で Weave インテグレーションを使用する
</h2>

以下のセクションでは、project で使用しているモジュールシステムを確認する方法と、Weave がサポート対象のサードパーティライブラリを自動的にインストルメントできるように project を設定する方法について説明します。TypeScript project では CommonJS または ESM のいずれかのモジュールシステムを使用できます。必要なセットアップは、両者で若干異なります。

<h3 id="if-youre-unsure-which-type-of-project-you-have">
  どのタイプの project かわからない場合
</h3>

次のようなツールを使って TypeScript ファイルを直接実行する場合:

```bash theme={"system"}
npx tsx test.ts
```

環境によっては、モジュールシステムが暗黙的に決定される場合があります。動作を一貫させるには、`package.json` ファイルと `tsconfig.json` ファイルを明示的に定義してください。

project で CommonJS と ESM のどちらが使用されているかを判別するには、`package.json` の `type` フィールドを確認します。

```json theme={"system"}
"type": "module"
```

* `type` が `"module"` の場合、project は ESM を使用します。
* `type` フィールドが存在しないか `"commonjs"` に設定されている場合、project はデフォルトで CommonJS を使用します。

<h3 id="set-up-a-commonjs-project">
  CommonJS project を設定する
</h3>

CommonJS project では、追加の設定なしで自動インストルメンテーションが機能します。

project を CommonJS 用に設定するには、次の手順を実行します。

1. `package.json` を作成または更新します。

   ```json theme={"system"}
   {
     "type": "commonjs"
   }
   ```

2. CommonJS と互換性のある設定で `tsconfig.json` を作成します。

   ```json theme={"system"}
   {
     "compilerOptions": {
       "module": "CommonJS",
       "target": "es2022",
       "rootDir": ".",
       "outDir": "dist"
     }
   }
   ```

   これらの設定により、TypeScript は CommonJS 向けにコンパイルするようになります。

   * `module: "CommonJS"`。モジュールを CommonJS 形式 (`require` または `module.exports`) にコンパイルします。
     このコンパイラーオプションの詳細については、[TypeScript - Module](https://www.typescriptlang.org/tsconfig/#module) を参照してください。

   * `target: "es2022"` (推奨)。最近の Node.js バージョンと互換性のあるモダンな JavaScript を出力します。
     このコンパイラーオプションの詳細については、[TypeScript - Target](https://www.typescriptlang.org/tsconfig/#target) を参照してください。

   * `rootDir: "."`。`tsconfig.json` を含むディレクトリを入力ファイルのルートとして扱います。TypeScript はこれを `outDir` と組み合わせて使用し、ソースフォルダーの構成を出力先にそのまま反映します。
     このコンパイラーオプションの詳細については、[TypeScript - Root Dir](https://www.typescriptlang.org/tsconfig/#rootDir) を参照してください。

   * `outDir: "dist"`。生成された JavaScript やその他のコンパイラー出力を `dist` フォルダーに書き込みます。
     このコンパイラーオプションの詳細については、[TypeScript - Out Dir](https://www.typescriptlang.org/tsconfig/#outDir) を参照してください。

3. Weave とその他の必要なライブラリをインストールします。

   ```bash theme={"system"}
   npm install weave
   ```

4. TypeScript ファイルをコンパイルします。

   サンプルファイル `test.ts` の場合:

   ```bash theme={"system"}
   npx tsc
   ```

   これにより、ファイルが `dist/test.js` にコンパイルされます。

5. コンパイルしたファイルを Node.js で実行します。

   ```bash theme={"system"}
   node dist/test.js
   ```

これで CommonJS project の設定が完了し、コードの実行時に Weave がサポートされるライブラリを自動的にインストルメントするようになりました。CommonJS は Node.js の `require` モジュールローダーを使用するため、ESM project で必要な `--import` フラグを使わなくても、Weave はサポートされるライブラリを自動的にインストルメントできます。

<h3 id="set-up-an-esm-project">
  ESM project を設定する
</h3>

ESM の TypeScript project で Weave を使用するには、project を Node.js ESM 向けに設定してコードをコンパイルし、`--import` フラグを付けて Node.js を起動します。これにより、Weave は他のモジュールが読み込まれる前にインストルメンテーションを登録できます。

project を ESM 向けに設定するには、次の手順を実行します。

1. `package.json` を作成または更新します。

   ```json theme={"system"}
   {
     "type": "module"
   }
   ```

2. Node 互換の ESM 設定を含む `tsconfig.json` を作成します。

   ```json theme={"system"}
   {
     "compilerOptions": {
       "module": "nodenext",
       "moduleResolution": "nodenext",
       "target": "es2022",
       "rootDir": ".",
       "outDir": "dist"
     }
   }
   ```

   これらの設定により、TypeScript は最新の Node.js ESM 向けにコンパイルを行います。

   * `module: "nodenext"`：Node.js ESM のセマンティクスに従ってモジュールをコンパイルします。
     このコンパイラーオプションの詳細については、[TypeScript - Module](https://www.typescriptlang.org/tsconfig/#module) を参照してください。

   * `moduleResolution: "nodenext"`：モジュール解決が Node.js ESM のルールに従うようにします。
     このコンパイラーオプションの詳細については、[TypeScript - Module Resolution](https://www.typescriptlang.org/tsconfig/#moduleResolution) を参照してください。

   * `target: "es2022"` (推奨) ：最近の Node.js バージョンと互換性のあるモダンな JavaScript を出力します。
     このコンパイラーオプションの詳細については、[TypeScript - Target](https://www.typescriptlang.org/tsconfig/#target) を参照してください。

   * `rootDir: "."`：`tsconfig.json` を含むディレクトリを入力ファイルのルートとして扱います。TypeScript はこの設定と `outDir` を組み合わせて、ソースのフォルダー構成を出力先に再現します。
     このコンパイラーオプションの詳細については、[TypeScript - Root Dir](https://www.typescriptlang.org/tsconfig/#rootDir) を参照してください。

   * `outDir: "dist"`：生成された JavaScript やその他のコンパイラーの出力を `dist` フォルダーに書き込みます。
     このコンパイラーオプションの詳細については、[TypeScript - Out Dir](https://www.typescriptlang.org/tsconfig/#outDir) を参照してください。

3. Weave と、その他の必要なライブラリをインストールします。

   ```bash theme={"system"}
   npm install weave
   ```

4. TypeScript ファイルをコンパイルします。

   サンプルファイル `test.ts` の場合:

   ```bash theme={"system"}
   npx tsc
   ```

   これにより、ファイルが `dist/test.js` にコンパイルされます。

5. Weave のインストルメンテーションをプリロードして、コンパイル済みファイルを Node.js で実行します。

   ```bash theme={"system"}
   node --import=weave/instrument dist/test.js
   ```

`--import` フラグを指定すると、`weave/instrument` モジュールが他のモジュールより先に読み込まれるため、Weave はサポートされるライブラリとインテグレーションを自動的にインストルメントできます。

Weave は、実行する project にローカルでインストールしておく必要があります。

これで ESM project の設定は完了です。Weave は他のモジュールより先にインストルメンテーションをプリロードし、サポートされるライブラリへの Call を自動的にトレースします。

<h2 id="advanced-usage-and-troubleshooting">
  高度な使い方とトラブルシューティング
</h2>

以下のセクションでは、TypeScript SDK の自動パッチ適用が想定どおりに機能しない場合のエッジケースと回避策について説明します。たとえば、ESM のみの環境、Next.js などのバンドラー構成、制約のあるランタイム環境では問題が発生することがあります。トレースが記録されない場合やインテグレーションに問題がある場合は、まずこちらを参照してください。

<h3 id="use-node_options-only-for-esm">
  `NODE_OPTIONS` を使用する (ESM のみ)
</h3>

<Warning>
  `NODE_OPTIONS` は環境内のすべての Node.js プロセスに影響し、副作用が生じる可能性があるため、慎重に使用してください。
</Warning>

ESM project で CLI フラグを渡せない場合 (CLI ツールやフレームワークの制約がある場合など) は、`NODE_OPTIONS` 環境変数を設定します。

```bash theme={"system"}
export NODE_OPTIONS="--import=weave/instrument"
```

<h3 id="bundler-compatibility">
  バンドラーとの互換性
</h3>

Next.js などの一部のフレームワークやバンドラーでは、サードパーティライブラリのバンドル方法によって、Node.js が実行時にそれらのライブラリにパッチを適用できなくなる場合があります。

この状況に該当する場合は、次の手順を試してください。

1. バンドラーの設定で、LLM ライブラリを外部モジュールとして指定します。これにより、バンドラーがこれらのライブラリをバンドルしなくなるため、Weave が実行時に正しくパッチを適用できるようになります。

   次の例は、`next.config.js` の設定で `openai` パッケージを外部モジュールとして指定し、バンドラーによってバンドルされないようにする方法を示しています。モジュールは実行時に読み込まれるため、Weave が自動的にパッチを適用してトラッキングできます。Next.js などのフレームワークで自動インストルメンテーションを有効にするには、この設定を使用してください。

   ```js theme={"system"}
   externals: {
   'openai': 'commonjs openai'
   }
   ```

2. それでもパッチの適用に失敗する場合は、[手動インストルメンテーション](#manual-patching-fallback-option)に切り替えてください。

<h3 id="manual-patching-fallback-option">
  手動パッチ適用 (フォールバック)
</h3>

<Warning>
  手動パッチ適用は従来の方法です。自動パッチ適用が機能しない場合にのみ使用してください。
</Warning>

場合によっては、引き続き手動インストルメンテーションを使用する必要があります。

```ts twoslash lines theme={"system"}
// @noErrors
import { wrapOpenAI } from 'weave';
const client = wrapOpenAI(new OpenAI());
```


## Related topics

- [Serverless Sandboxes](/ja/products/sandboxes/wandb.md)
