AIP-C01 · LESSON 2

実装と統合26% · 5項目

エージェンティック AI とツールの統合、モデルのデプロイ戦略、エンタープライズの統合、FM の API の統合、アプリの統合パターンと開発ツールを学びます。

2.1エージェンティック AI とツールの統合

2.1 エージェンティック AI ソリューションとツール統合を実装する。

概念

エージェントは、モデルが計画を立ててツールを呼び、結果を見て次の手順を決める仕組みです。Amazon Bedrock AgentCore は、任意のフレームワーク(Strands Agents・LangGraph など)のエージェントを本番で動かすための基盤で、Runtime(実行)・Gateway(API や Lambda を MCP のツールに変換)・Memory(短期・長期の記憶)・Identity(認証)・Observability を提供します。Bedrock エージェント(マネージド)では、アクショングループとナレッジベースで構成します。

仕組み・手順

  1. エージェントの目的と、使ってよいツールの範囲を決める
  2. 既存の API や Lambda を AgentCore Gateway で MCP のツールとして公開する
  3. 会話をまたぐ情報は AgentCore Memory に保存する
  4. 影響の大きい操作には人の承認(human-in-the-loop)を入れる
  5. トレースでツールの呼び出しの経路を確認する

業務での例

社内の経費精算のエージェントを Strands Agents で作り、AgentCore Runtime で実行、経費システムの API は Gateway で MCP のツールにして、利用者の権限は Identity で引き継ぐ。

紛らわしい点・試験の注意

ミニクイズ

Q1. ReAct 型のエージェントの動き方の説明として、最も適切なものはどれか。

  1. 質問に関係なく、すべてのツールを決まった順番で必ず 1 回ずつ呼び、結果をつなげて返す
  2. 最初に 1 回だけ回答を生成し、ツールは使わずにそのまま利用者に返す
  3. 利用者に毎回どのツールを使うかを選んでもらい、その指示どおりに動く
  4. 考える→ツールを使う→結果を観察する、を繰り返し、目的を達したら回答する
答えと解説を見る

正解:D 考える→ツールを使う→結果を観察する、を繰り返し、目的を達したら回答する

ReAct は推論(Reason)と行動(Act)を交互に行い、ツールの結果を観察して次の行動を決める。

Q2. エージェントのツールを定義している。モデルが正しくツールを選べるようにするために最も重要なことはどれか。

  1. できるだけ多くの似た名前と機能のツールを用意し、モデルにその中から選ばせるようにする
  2. ツールの入力の形式は決めずに、どんな文字列でも受け付けるようにしておく
  3. ツールの名前と説明を明確にし、入力の JSON スキーマで引数の意味と型を示す
  4. ツールの名前を短い番号だけにして、説明は書かずにモデルに推測させる
答えと解説を見る

正解:C ツールの名前と説明を明確にし、入力の JSON スキーマで引数の意味と型を示す

モデルはツールの名前・説明・スキーマを見て選ぶ。明確な説明とスキーマが、正しい選択と引数につながる。

参考リンク

2.2モデルのデプロイ戦略

2.2 モデルデプロイ戦略を実施する。

概念

Bedrock の推論の選択肢は、オンデマンド(トークン単位)、バッチ推論(大量の非同期処理で安価)、プロビジョンドスループット(モデルユニットで容量を予約、カスタムモデルで必要な場合が多い)、クロスリージョン推論です。インテリジェントプロンプトルーティングは、質問の難しさに応じてモデルファミリー内の大小のモデルに振り分けてコストを下げます。SageMaker AI で独自にホストする選択もあります。

仕組み・手順

  1. トラフィックの量・パターン・即時性の要件を確認する
  2. 変動する対話はオンデマンド、夜間の一括処理はバッチ推論
  3. 安定した大量の利用や、カスタムモデルはプロビジョンドスループット
  4. 簡単な質問が多いならインテリジェントプロンプトルーティング
  5. 独自のモデルや細かい制御が必要なら SageMaker AI

業務での例

毎晩 100 万件の商品説明の生成をバッチ推論にしてオンデマンドより安くし、日中のチャットはプロンプトルーティングで簡単な質問を小さいモデルに回す。

紛らわしい点・試験の注意

ミニクイズ

Q1. Bedrock のプロビジョンドスループットの説明として誤っているものはどれか。

  1. 使った分のトークンだけが課金され、使わない時間の料金はかからない
  2. モデルユニットを購入して、決まった処理の量を確保する
  3. 1 か月や 6 か月など契約の期間を長くすると、時間あたりの料金が割り引かれる
  4. カスタムモデルの推論に使える場合がある
答えと解説を見る

正解:A 使った分のトークンだけが課金され、使わない時間の料金はかからない

プロビジョンドスループットは購入したモデルユニットに対して時間あたりで課金される。使わなくても料金がかかる。

Q2. ピークの時間にオンデマンドの Bedrock でスロットリングが増え、プロビジョンドスループットの購入を検討している。次に行うべきこととして最も適切なものはどれか。

  1. スロットリングの原因を調べずに、アプリのリトライの回数だけを大きく増やしておく
  2. 必要な量を測らずに、できるだけ多くのモデルユニットを最も長い期間で購入しておく
  3. ピークの時間の利用を全面的に禁止して、利用者には混雑しない深夜や早朝に使ってもらうように案内することにする
  4. CloudWatch でピークの時の 1 分あたりのトークンの量を測り、必要なモデルユニットの数を見積もる
答えと解説を見る

正解:D CloudWatch でピークの時の 1 分あたりのトークンの量を測り、必要なモデルユニットの数を見積もる

プロビジョンドスループットは、必要なトークンの量から容量を見積もって購入する。クロスリージョン推論やクォータの引き上げも比べる。

参考リンク

2.3エンタープライズ統合アーキテクチャ

2.3 エンタープライズ統合アーキテクチャを設計し実装する。

概念

企業のシステムとの統合では、API Gateway(認証・スロットリング)、EventBridge(イベント駆動)、SQS(非同期・平準化)、Step Functions(ワークフロー)を組み合わせ、既存の業務システム(ERP・CRM)やデータ基盤と生成 AI をつなぎます。認証は IAM・Cognito・社内の IdP、ネットワークは VPC エンドポイント(PrivateLink)で閉域にします。

仕組み・手順

  1. 生成 AI を呼ぶ業務の流れ(同期か非同期か)を決める
  2. API Gateway で認証とスロットリングを行う
  3. 時間のかかる処理は SQS や Step Functions で非同期にする
  4. 業務システムのイベントを EventBridge で受けて処理を起動する
  5. VPC エンドポイントで Bedrock をプライベートに呼ぶ

業務での例

CRM で問い合わせが作られると EventBridge のイベントで Step Functions が起動し、Bedrock で要約と分類を作って CRM に書き戻す。

紛らわしい点・試験の注意

ミニクイズ

Q1. 手順の大部分は決まっているが、一部の段階で FM の判断(要約や分類)を使いたい。全体の流れを確実に制御したい。最も適切な構成はどれか。

  1. Bedrock のエージェントに手順を指示し、ツールの呼び出しの順序を任せる
  2. Lambda の関数を順に呼び、各関数の中で次の関数を呼ぶようにつなぐ
  3. Step Functions で流れを定義し、必要な段階で Bedrock の呼び出しの統合を使う
  4. Bedrock のプロンプトフローで、すべての段階を FM のノードで処理する
答えと解説を見る

正解:C Step Functions で流れを定義し、必要な段階で Bedrock の呼び出しの統合を使う

Step Functions は Bedrock の呼び出しを直接統合でき、決まった流れの中で FM の判断を使える。 【他の選択肢】エージェントは順序をモデルが決めるため、流れを確実に制御しにくい。すべてを FM のノードにすると決まった処理まで FM に頼る。Lambda どうしの直接の呼び出しは、再試行や状態の管理が難しい。

Q2. オンプレミスのワークフローのシステムから、インターネットに出さずにアシスタントの API を呼びたい。最も適切な構成はどれか。

  1. API Gateway のプライベート API と VPC エンドポイントを、Direct Connect や VPN 経由で呼ぶ
  2. API Gateway のリージョンの API に、IP アドレスの制限のリソースポリシーを付ける
  3. CloudFront の配信の前に API を置き、AWS WAF でアクセスを制限する
  4. Lambda の関数 URL を作り、IAM の認証で呼べる相手を限る
答えと解説を見る

正解:A API Gateway のプライベート API と VPC エンドポイントを、Direct Connect や VPN 経由で呼ぶ

API Gateway のプライベート API は、VPC エンドポイント経由でだけ呼べる。オンプレミスからは Direct Connect や VPN でつなぐ。 【他の選択肢】リージョンの API、CloudFront、関数 URL はいずれもインターネットの経路を使う。制限をかけても、インターネットに出さないという要件に合わない。

参考リンク

2.4FM の API 統合

2.4 FM API 統合を実装する。

概念

Bedrock の API には、InvokeModel(モデル固有の形式)、Converse(統一の形式・ツールの使用)、ストリーミング(InvokeModelWithResponseStream・ConverseStream)があります。スロットリング(ThrottlingException)には指数バックオフでの再試行、長い応答にはストリーミング、出力の形式の固定にはツールの使用(JSON スキーマ)を使います。

仕組み・手順

  1. Converse API で実装し、モデルの切り替えに備える
  2. 体感の速さが重要ならストリーミングで応答を返す
  3. SDK の再試行の設定(指数バックオフ)を調整する
  4. 構造化の出力はツールの定義(JSON スキーマ)で得る
  5. エラーのコード(429・400・500)ごとに対処を分ける

業務での例

チャットの UI で ConverseStream を使い、最初のトークンを 1 秒以内に表示し、ThrottlingException はジッター付きの指数バックオフで再試行する。

紛らわしい点・試験の注意

ミニクイズ

Q1. エージェントのツールが外部の API を呼ぶ。API が遅かったり失敗したりしても、エージェントが安定して動くようにしたい。最も適切な実装はどれか。

  1. タイムアウトとリトライを設け、失敗は構造化されたエラーとしてモデルに返し、次の行動を判断させる
  2. API が成功するまで、待ち時間もタイムアウトもなしで同じ呼び出しを何度でも繰り返すようにしておく
  3. API が失敗したら、エラーを隠して「成功しました」という結果をモデルに返しておく
  4. API の失敗はすべて無視して、エージェントの処理全体をすぐに終了させることにする
答えと解説を見る

正解:A タイムアウトとリトライを設け、失敗は構造化されたエラーとしてモデルに返し、次の行動を判断させる

ツールにはタイムアウト・リトライ・エラーの処理を入れ、失敗を明確にモデルに伝えると、代わりの手順を選べる。

Q2. 会社のすべての AWS アカウントで、承認された特定のモデルだけを使わせたい。最も適切な方法はどれか。

  1. IAM Identity Center の許可セットで、各チームのロールに許可を付ける
  2. 各アカウントの Bedrock のモデルのアクセスで、承認されたモデルだけを有効にする
  3. Organizations の SCP で、承認されたモデルの ARN 以外への InvokeModel を拒否する
  4. AWS Config のルールで、承認されていないモデルの利用を検出して通知する
答えと解説を見る

正解:C Organizations の SCP で、承認されたモデルの ARN 以外への InvokeModel を拒否する

SCP や IAM のポリシーで、モデルの ARN を条件に呼び出しを制限できる。組織全体の統制には SCP が向く。 【他の選択肢】アカウントごとのモデルのアクセスの設定は、各アカウントの管理者が変えられる。Config は検出で、呼び出しを止めない。許可セットは Identity Center 経由の利用者にだけ効く。

参考リンク

2.5アプリ統合パターンと開発ツール

2.5 アプリケーション統合パターンと開発ツールを実装する。

概念

生成 AI のアプリの開発には、AWS SDK、Strands Agents などのエージェントのフレームワーク、Amazon Q Developer(コードの支援)、Bedrock のプロンプトフロー(ノーコードのワークフロー)、Amplify(フロントエンド)などを使います。キャッシュ・非同期処理・フォールバック(別のモデルへの切り替え)といった統合のパターンも重要です。

仕組み・手順

  1. 用途に合う開発のツールとフレームワークを選ぶ
  2. 同じ質問への応答はキャッシュする
  3. モデルの障害やスロットリングに備え、フォールバックを用意する
  4. IaC(CDK・CloudFormation)で環境を再現可能にする
  5. CI/CD にプロンプトと評価を組み込む

業務での例

FAQ のよくある質問の応答を ElastiCache にキャッシュし、主のモデルがスロットリングしたら、別のモデルにフォールバックする。

紛らわしい点・試験の注意

ミニクイズ

Q1. Bedrock のエージェントのアクションを、Lambda ではなく自社のアプリの中で実行したい(社内のネットワークの中のシステムを呼ぶため)。最も適切な方法はどれか。

  1. 社内のシステムをインターネットに公開して、エージェントから自由に呼べるようにする
  2. 制御の返却(return of control)を使い、エージェントが決めた操作と引数をアプリに返して実行させる
  3. アクションを使うのをやめて、エージェントには社内のシステムの情報を推測させる
  4. アクションの処理をすべてプロンプトに書いて、モデルに社内のシステムを権限の制限なしで直接操作させる
答えと解説を見る

正解:B 制御の返却(return of control)を使い、エージェントが決めた操作と引数をアプリに返して実行させる

制御の返却では、エージェントが選んだアクションと引数をアプリに返し、アプリが実行して結果を返す。

Q2. 既存の受注のアプリに「受注のメモの要約」の機能を加えたい。アプリの応答の速さは変えたくない。最も適切な統合の方法はどれか。

  1. 要約の機能は別のアプリにして、担当者に受注の内容を毎回手でコピーして貼り付けてもらうことにする
  2. 受注の保存のイベントで非同期に要約の処理(Lambda など)を動かし、できた要約を後から画面に表示する
  3. 受注の保存の処理の中で同期的に FM を呼び、要約ができるまで保存の完了を待たせる
  4. 受注のメモを保存しないで、毎回 FM にメモの内容を想像して要約してもらうことにする
答えと解説を見る

正解:B 受注の保存のイベントで非同期に要約の処理(Lambda など)を動かし、できた要約を後から画面に表示する

主な処理の応答を遅くしないように、生成 AI の処理はイベントで非同期に動かす。

参考リンク

レッスンは当サイトがAWS 認定の公式ページと公式試験ガイドをもとに独自に作成したもので、試験の内容を保証するものではありません。製品の仕様は変わることがあるため、参考リンク先の最新情報を確認してください。

ご利用上の注意(非公式・独自問題・合格保証なし)