CCAR-F 練習問題 1
シナリオ:カスタマーサポート解決エージェント
Claude Agent SDK で、返品・請求の異議・アカウントの問題など曖昧さの大きい問い合わせを扱うサポートエージェントを構築しています。バックエンドには独自の MCP ツール(get_customer・lookup_order・process_refund・escalate_to_human)で接続し、一次解決率80%以上と、適切なエスカレーションの両立を目指しています。
返金対応のエージェントのループを「stop_reason が end_turn になるまで、ツールを実行して次のリクエストを送る」と実装しました。ログでは、長い返金の説明を書いている途中で stop_reason が "max_tokens" になった応答に対し、ループが実行するツールのないまま同じ履歴を送り直し、上限の20回まで空回りしていました。最も適切な修正はどれですか。
選択肢を押して回答
正解と解説
正解:C
エージェントループは stop_reason の値ごとに扱いを決めます。tool_use は続行、end_turn は終了、max_tokens は途中切れです。「end_turn 以外は続行」のような二分法は、想定外の値で空回りや誤った完了を招きます。
max_tokens で切れた応答も完了扱いになり、途中で切れた説明が顧客に届きます。
空回りの時間が短くなるだけで、途中で切れた応答を正しく扱えない問題は残ります。
ループは stop_reason の値ごとに扱いを決めます。tool_use なら結果を tool_result として返して続行、end_turn なら終了、max_tokens は出力が上限で切れた合図なので、上限の見直しや続きの扱いを別に決めます。end_turn 以外をすべて「続行」とみなす実装は、今回のような空回りを生みます。
途中切れは起きにくくなりますが、stop_reason を値ごとに扱わない判定の欠陥は残ります。
出題範囲:CCAR-F 分野1「エージェント設計と調整」・項目1.1 エージェントループの設計と実装
参考資料(公式ドキュメント)
公開資料をもとにした独自解説です。本番の問題・難易度・合否を再現するものではありません。
