Skip to content

原文(日本語に翻訳)

SDKRateLimitInfo および SDKRateLimitEvent 型を SDK に追加。コンシューマーがレート制限の状態更新(使用率・リセット時刻・超過情報を含む)を受け取れるようになります

原文(英語)

Added SDKRateLimitInfo and SDKRateLimitEvent types to the SDK, enabling consumers to receive rate limit status updates including utilization, reset times, and overage information

概要

Claude Code 2.1.45 では、SDK に SDKRateLimitInfoSDKRateLimitEvent という2つの新しい型が追加されました。これらの型を使用することで、Claude Code の SDK コンシューマー(プログラムから Claude Code を制御するアプリケーション)が、APIのレート制限状況をリアルタイムで取得できるようになります。使用率・リセット時刻・超過情報などを受け取り、アプリケーション側でレート制限を適切に処理できます。

基本的な使い方

SDKRateLimitInfo はレート制限の現在の状態を表す型、SDKRateLimitEvent はその変化イベントを表す型です。

typescript
import { SDKRateLimitInfo, SDKRateLimitEvent } from '@anthropic-ai/claude-code';

// レート制限イベントを受け取るハンドラ
function handleRateLimitEvent(event: SDKRateLimitEvent) {
  const info: SDKRateLimitInfo = event.rateLimitInfo;

  console.log('使用率:', info.utilization);
  console.log('リセット時刻:', info.resetAt);
  console.log('超過情報:', info.overage);
}

実践例

レート制限に基づいてリクエストを制御する

typescript
import { query, SDKRateLimitEvent, SDKRateLimitInfo } from '@anthropic-ai/claude-code';

let currentRateLimit: SDKRateLimitInfo | null = null;

async function runWithRateLimitAwareness(prompt: string) {
  for await (const message of query({
    prompt,
    abortController: new AbortController(),
  })) {
    // レート制限イベントを処理
    if (message.type === 'rate_limit') {
      const event = message as SDKRateLimitEvent;
      currentRateLimit = event.rateLimitInfo;

      // 使用率が高い場合は警告
      if (currentRateLimit.utilization > 0.8) {
        console.warn(`レート制限の使用率が高くなっています: ${currentRateLimit.utilization * 100}%`);
      }

      // 超過している場合はリセット時刻まで待機
      if (currentRateLimit.overage && currentRateLimit.resetAt) {
        const waitMs = new Date(currentRateLimit.resetAt).getTime() - Date.now();
        console.log(`レート制限超過。${waitMs}ms 後にリセットされます`);
      }
    }

    // テキストメッセージを処理
    if (message.type === 'text') {
      process.stdout.write(message.text);
    }
  }
}

レート制限ダッシュボードを構築する

typescript
import { SDKRateLimitInfo } from '@anthropic-ai/claude-code';

class RateLimitMonitor {
  private history: Array<{ timestamp: Date; info: SDKRateLimitInfo }> = [];

  record(info: SDKRateLimitInfo) {
    this.history.push({ timestamp: new Date(), info });
    this.displayStatus(info);
  }

  private displayStatus(info: SDKRateLimitInfo) {
    const utilizationPercent = (info.utilization * 100).toFixed(1);
    const resetTime = info.resetAt ? new Date(info.resetAt).toLocaleTimeString('ja-JP') : '不明';

    console.log(`
レート制限状況:
  使用率: ${utilizationPercent}%
  リセット時刻: ${resetTime}
  超過: ${info.overage ? 'あり' : 'なし'}
    `);
  }

  getAverageUtilization(): number {
    if (this.history.length === 0) return 0;
    const sum = this.history.reduce((acc, { info }) => acc + info.utilization, 0);
    return sum / this.history.length;
  }
}

注意点

  • SDKRateLimitInfoSDKRateLimitEvent は TypeScript の型定義です。JavaScript でも利用可能ですが、型チェックの恩恵を受けるには TypeScript を使用することを推奨します。
  • レート制限のリセット時刻(resetAt)は API プロバイダーによって異なる場合があります。
  • utilization は 0.0〜1.0 の範囲で表されます(1.0 = 100%使用)。
  • これらの型は Claude Code SDK(@anthropic-ai/claude-code)を通じてプログラムから Claude Code を操作する際に使用します。通常の Claude Code CLI 使用では意識する必要はありません。

関連情報