Amazon Bedrock AgentCore でマルチAIエージェントに入門する

201 Views

February 17, 26

スライド概要

https://jawsug-ai.connpass.com/event/381110/

でのLT資料です。

profile-image

エンジニア。スクラムマスター。 Zennでサーバーレス本書いてます。 http://zenn.dev/mistletoe/books/93f5810c20eb9a http://github.com/theMistletoe http://zenn.dev/mistletoe http://qiita.com/mistletoe http://note.com/themistletoe

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

Amazon Bedrock AgentCore で マルチAIエージェントに入門 する もっくま

2.

自己紹介 もっくま アジャイル・スクラムの伴走支援 新規プロダクト開発 "もっくま" フォローいただけると Xで 嬉しいです 2

3.

AgentCore 何もわからない 3

4.

ChatGPT に聞いてみた 4

6.

チュートリアルをやってみる 公式クイックスタートをやってみる エージェントを 作成・呼び出し・デプロイ まで一通り体験 ログ基盤など関連リソースも自動作成されることを確認 6

7.

おおよそわかった 7

8.

もうちょっとハンズオンしたい 何作ろうかな、題材が難しい... 8

9.

「特定タスクの解決に特化したエージェントの組み合わせや、 記憶領域を活用したエージェントシステム」 を作りたい! 9

11.

じゃんけん 11

12.

じゃんけんの複雑な意思決定 皆さんじゃんけんをする時に す。 複雑な意思決定をしていることと思いま グーを出すべきか? チョキを出すべきか? パーを出すべきか? 相手のコンディション、これまでの勝敗戦績 →この複雑な問題を解決する AIエージェント を作りました! 12

13.

作ったもの 13

14.

エージェント構成 14

15.
[beta]
リクエスト例
agentcore invoke -a chair_agent_v2 '{
"action": "recommend",
"match_id": "verify-carol-001",
"opponent": {
"opponent_id": "carol",
"attributes": { "persona": "little sick" }
},
"context": {
"round_index": 1, "venue": "room",
"time_of_day": "noon", "opponent_mood": "calm"
}
}'

15

16.
[beta]
レスポンス例(抜粋)
{
"final_move": "scissors",
"final_reason": "Carol's recent distribution heavily favors
paper (50%), which scissors directly beats. ...",
"decision_trace": {
"selection_policy": "chair_llm_rule_guarded",
"winner_agent_role": "scissors",
"eligible_proposal_count": 1
},
"proposals": [ /* rock / paper / scissors 各エージェントの提案 */ ]
}

16

17.

4つのエージェントの主張と評価 エージェン 主張 ト 評価 rock 不利(相手本命 paper)を認めつ つ、非敗北シナリオ合計 で押 し切る 論理整合はあるが相手予測に真正面で負ける 手 → 攻め筋として弱い paper 相手本命 paper に確実ドロー。負け を避ける安定性を重視 リスク回避は妥当だが勝ち期待を取りにいか ず → 消極的 正) 通過 53.9% paper を直接狩る。期 予測・ルール・期待値が三点一致 → 攻守バ scissors 相手最多傾向 待分布 46.15% 有利、信頼度 0.68 ランス最良 3提案を比較し scissors のみ適格 と メタ判定として妥当。 eligible_proposal_count: 1 — scissors が唯一 chair 判定(高信頼・高整合・RPS関係 17

18.

chair_agentによる他エージェントの呼 び出し def _invoke_agent_runtime(client, agent_arn: str, payload: Dict[str, Any]) -> Dict[str, Any]: response = client.invoke_agent_runtime( agentRuntimeArn=agent_arn, # 呼び出すエージェントのARNを指定 runtimeSessionId=str(uuid.uuid4()), # 呼び出しごとに新しいセッションIDを発行 payload=json.dumps(payload).encode("utf-8"), qualifier="DEFAULT", ) # ...省略... 18

19.

Memoryへの読み出し def _list_blob_events(self, opponent_id: str, session_id: str, limit: int = 500) -> List[Dict[str, Any]]: events = self.client.list_events( memory_id=self.memory_id, actor_id=self._actor_id(opponent_id), session_id=session_id, max_results=limit, include_payload=True, ) 19

20.

Memoryへの書き込み def _create_blob_event( self, opponent_id: str, session_id: str, data: Dict[str, Any], metadata: Optional[Dict[str, Dict[str, str]]] = None, ) -> Dict[str, Any]: return self.client.create_blob_event( memory_id=self.memory_id, actor_id=self._actor_id(opponent_id), session_id=session_id, blob_data=json.dumps(data, ensure_ascii=False), metadata=metadata, ) 20

21.

リソース作成・デプロイ時の処理 # Memoryを作成 agentcore memory create [任意の名前] --region ap-northeast-1 # デプロイ時の設定ファイルができる agentcore configure -ni -e agents/rock_agent/app.py -n rock_agent -r ap-northeast-1 -dt direct_code_deploy -rt PYTHON_3_10 -dm # デプロイ agentcore deploy -a rock_agent -auc \ -env AWS_REGION=ap-northeast-1 \ -env BEDROCK_AGENTCORE_MEMORY_ID=<your_memory_id> \ -env BEDROCK_MODEL_LABEL=claude4.5-haiku \ -env BEDROCK_MODEL_ID=global.anthropic.claude-haiku-4-5-20251001-v1:0 21

22.

学び AgentCore → Memory へのロール権限などを個別付与する必要がある? ベストなやり方は分かっていない。(基本ロールはいい感じに付与してく れる。) CLIでDevOpsに適した形で導入でき、細かいリソース管理を気にせず、 ログ管理なども含めデプロイできるのは嬉しい。まずよくわからないと ころから始める人に特におすすめかも。 AIエージェント is 何?状態でしたが、作ることでイメージが湧く! 22

23.

何を作るか迷ったらみんなも 最強のじゃんけんエージェント を作ろ う! 23

24.

参考 Amazon Bedrock AgentCore(公式ドキュメント) 24