原文(日本語に翻訳)
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 に SDKRateLimitInfo と SDKRateLimitEvent という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;
}
}注意点
SDKRateLimitInfoとSDKRateLimitEventは 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 使用では意識する必要はありません。