概要
このリリースでは、モデルプロバイダーから発生するエラーを統一的に扱うための基底クラス ModelError が追加されました。これにより、ContextWindowOverflowError や MaxTokensError などのモデル関連エラーを一括でキャッチしつつ、必要に応じて個別のエラータイプを識別できるようになります。
リリース: v0.2.0
新機能
モデルエラー基底クラスの追加 (#444)
この機能でできること:
ModelErrorを基底クラスとして、すべてのモデル関連エラーを統一的にキャッチできますContextWindowOverflowErrorとMaxTokensErrorがModelErrorを継承するようになりましたstreamAggregated()メソッドがモデルプロバイダーからのエラーをModelErrorでラップするため、一貫したエラーハンドリングが可能です
使用例:
import { Agent, ModelError, ContextWindowOverflowError, MaxTokensError } from '@strands-agents/sdk';
import { BedrockModel } from '@strands-agents/sdk';
const agent = new Agent({
model: new BedrockModel({ maxTokens: 1000 }),
systemPrompt: 'You are a helpful assistant.',
});
try {
const result = await agent.invoke('非常に長いプロンプト...');
} catch (error) {
if (error instanceof ContextWindowOverflowError) {
// コンテキストウィンドウオーバーフロー時の処理
console.error('入力がモデルのコンテキストウィンドウを超えています');
} else if (error instanceof MaxTokensError) {
// 最大トークン数到達時の処理
console.error('生成が最大トークン数に達しました');
console.log('部分的な応答:', error.partialMessage);
} else if (error instanceof ModelError) {
// その他のモデル関連エラーをまとめてキャッチ
console.error('モデルエラーが発生しました:', error.message);
if (error.cause) {
console.error('原因:', error.cause);
}
}
}
エラーの継承階層:
Error
└── ModelError (新規追加)
├── ContextWindowOverflowError
└── MaxTokensError
ポイント:
- 既存の
ContextWindowOverflowErrorやMaxTokensErrorを個別にキャッチするコードは引き続き動作します ModelErrorでキャッチすることで、将来追加されるモデル関連エラーも自動的に処理できます- エラーの原因となった元のエラーは
causeプロパティで取得可能です
まとめ
このリリースでは、モデル関連エラーの共通基底クラス ModelError が追加され、エラーハンドリングの統一化と柔軟性が向上しました。