会員登録すると
学習することができます。
会員登録する(無料)
登録済みの方はこちら
ログイン

壊れにくくする ― 検証・タイムアウト・渡さないもの

目安学習時間 15分

課題

全問正解でレクチャー完了です。

【問題1】

ツールの戻り値について、この講座が勧めている方針はどれですか。

[選択肢]

【問題2】

リトライ(やり直し)をしてよい失敗として適切なものはどれですか。

[選択肢]
会員登録すると
学習することができます。
会員登録する(無料)

学ぶ目的

引数を信用しない

input_schema は形を決めますが、中身の妥当性までは保証しません。実行する前に自分で確かめます。

function validateCity(city) {
  if (typeof city !== "string") throw new Error("都市名は文字列で渡してください");
  const trimmed = city.trim();
  if (trimmed.length === 0) throw new Error("都市名が空です");
  if (trimmed.length > 50) throw new Error("都市名が長すぎます");
  return trimmed;
}

応答が返ってこない場合に備える

相手のサーバーが遅いと、こちらの処理も止まります。AbortSignal.timeout で上限を決めます。

const res = await fetch(url, { signal: AbortSignal.timeout(5000) });

失敗の種類で対応を変える

状況 対応
通信エラー・5xx(相手側の一時的な不調) 少し待って1〜2回やり直す
429(呼びすぎ) 待ってからやり直す。間隔を空ける
4xx(こちらの指定が間違い) やり直さない。エラーとして返す
中身が空 やり直さない。「見つからない」と返す

やり直してよいのは時間が解決する失敗だけです。引数が間違っているのに再試行すると、同じ失敗を繰り返して料金と時間を使います。

ツールに渡してよいもの・いけないもの

ツールの結果はそのままAIに送られます。送ってよい情報かどうかを、渡す前に決めます。

  • 渡さない: APIキー、アクセストークン、パスワード、他人の個人情報
  • 絞る: 応答全体ではなく、必要なキーだけを抜き出して返す

さきほどの getWeather が気温と時刻だけを返しているのは、このためです。APIの応答をまるごと返すと、余計な情報まで送ることになります。

このレクチャーで学ぶこと

  • 引数の検証を自分で行う理由
  • タイムアウトとリトライの判断基準
  • ツールの結果に含めてはいけないもの

質問

まだ質問は投稿されていません。

質問投稿

ログイン後に質問の投稿ができます。