Upgrade to Pro — share decks privately, control downloads, hide ads and more …

エージェントのしくみ | Kiro と学ぶ Strands Agents 01

Avatar for Riku INADA Riku INADA PRO
November 09, 2026

エージェントのしくみ | Kiro と学ぶ Strands Agents 01

AI エージェントは、モデルと、それ以外の仕組み (ハーネス) でできています。この資料では、モデルは「この道具を呼びたい」と返すだけで、道具を動かし、結果を記録に足し、止まる所を決めるのはハーネスだということを、架空のネットのお店の問い合わせ窓口の場面の絵で説明します。同じ窓口を Strands Agents で動かし、Hook でモデルの頼み (道具の呼び出し) と実行の順を、周ごとのトークンを、limits で止まった理由を、本物の端末の画面で読みます。シリーズ「Kiro と学ぶ Strands Agents」の 01 (はじめる) です。

Avatar for Riku INADA

Riku INADA PRO

November 09, 2026

More Decks by Riku INADA

Other Decks in Technology

Transcript

  1. Kiro と学ぶ Strands Agents 01 はじめる エージェントのしくみ モデル + ハーネス、ループ、道具

    2026-11 時点 (Strands Agents 1.64) 2026 年 11 ⽉ 稲⽥ ⼤陸 アマゾン ウェブ サービス ジャパン © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 01 Kiro + Strands Agents 1
  2. はじめに ⾃⼰紹介 稲⽥ ⼤陸 いなだ りく (いなりく) アマゾン ウェブ サービス

    ジャパン合同会社 ソリューションアーキテクト 製造業のお客様を中⼼に⽀援 最近の取り組み AI 駆動開発ライフサイクルの推進 Kiro と AWS Amplify の情報発信 © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. X @inada_riku Speaker Deck speakerdeck.com/inariku Zenn zenn.dev/inariku GitHub github.com/inariku 2
  3. はじめに シリーズの中の位置 いまは 01 エージェントのしくみ、次は 02 道具を渡す はじめる 01–02 作り込む

    01 エージェントのしくみ 次に読む 02 道具を渡す 03–06 確かめる Hook で決まりを 03 守らせる Skill と steering 07 評価する 07 載せて広げる 08–10 08 アプリとクラウドに載せる 04 で⼿順を守らせる 09 組み⽴て済みで始める 05 覚えさせる 10 囲いの中で安全に動かす 06 チームで動かす © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 3
  4. はじめに この資料で分かること エージェントのしくみを場⾯で⾒てから、同じことをコードで動かす 1 しくみ: エージェント = モデル + ハーネス。モデルは頼むだけ

    2 ループ: 考える、道具を頼む、結果を⾒る。⽌まる所を決めておく 3 動かす: 頼みと実⾏の順、渡したトークン、⽌まった理由を⾒る このシリーズでは、架空のネットのお店の問い合わせ窓⼝のエージェントを 1 つ作って育てる しくみ ループ 動かす モデル + ハーネス 調べて、また考える 起きたことを⾒る © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 4
  5. 1 エージェントのしくみ エージェント = モデル + ハーネス モデルの周りの仕組みがハーネス。合わせてエージェントになる モデル ハーネス

    = 机と、その周りの道具⼀式 = 窓⼝係 考えて、⽂を書く ループ 調べて、また考える 道具の実⾏ 台帳や判⼦を動かす ⽂脈 机の上に広げる書類 記憶 さっきの話を覚える 確かめ 決まりを守ったか⾒る 観測 何が起きたかを⾒る エージェント 仕事ができる窓⼝ Agent(...) 窓⼝係がモデル、机と道具⼀式がハーネス OpenAI の⼿引きの 3 つの部品なら、道具と指⽰は机の側 © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 6
  6. 1 エージェントのしくみ モデルは頼むだけ、動かすのはハーネス モデルは「呼びたい」と返すだけ。道具を動かすのは周りの仕組み 1 窓⼝係 (モデル) 2 机の仕組み (ハーネス)

    lookup_customer 札を読み、 (C-1001) を呼びたい 台帳を引く この返事が「札」。 台帳には触らない lookup_customer(...) の関数を呼ぶのはここ Strands 3 記録に⾜す ⼭⽥ 花⼦ さん 会話の記録に⾜し、 次の周でまた窓⼝係へ (失敗も結果として返す) 窓⼝係は「呼びたい」と⾔うだけ。台帳を引くのは机の仕組み © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 7
  7. 1 エージェントのしくみ ループ 考える、道具を頼む、結果を⾒るを繰り返し、終わったら答える 2 まだ届きません 考える 終わったら答える 配送中です。 1

    受け取る 11 ⽇に届く予定です 道具が要らなくなるまで回る 結果を⾒て繰り返す 4 © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 3 道具を頼む 8
  8. 1 エージェントのしくみ ⽌まる所を決めておく 主な出⼝は 3 つ。答えたとき、上限に届いたとき、⼈に戻すとき 答えた 道具を頼まずに答えた (end_turn) 上限に届いた

    周の数やトークンの上限 (limits、21 枚⽬) ループ ⼈に戻す 取り消せない操作の前、失敗が続いたとき (03) 上限は付けなければ無い。⽌まる所は作る⼈が先に決める トークン: モデルが⽂を読み書きする単位。上限と費⽤はこれで数える © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 9
  9. 1 エージェントのしくみ ⼿順を書かず、任せる ⼿順を全部書かず、道具と⽬的を渡して、進め⽅はモデルに任せる ⼿順を全部書く 配送中なら、予定⽇を⾔う 道具と⽬的を渡して任せる ⽬的: お客さんの困りごとを解く 遅れなら、おわびして調べる

    届いたなら、届いた⽇を⾔う 箱が壊れていた 書いていない場合で⽌まる © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 箱が壊れていた 道具で調べて、考えて答える 10
  10. 1 エージェントのしくみ 決めた流れか、任せるか ⼿順を書けるなら決めた流れで⾜りる。書けない仕事を任せる 決めた流れ (ワークフロー) エージェントに任せる ⼿順をコードで先に決めておく 進め⽅をモデルが決める 注⽂番号

    配送の状況 決まった⽂ 届かない理由を調べ、 謝って返⾦の案を出す 代わりに遅く、⾼くなり、 向く仕事: 注⽂番号から配送の状況を返す 1 回の呼び出し 決めた流れ © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 向く仕事: 誤りが重なることもある エージェント 良くなると確かめられたときだけ、 1 段ずつ上がる 11
  11. 2 お店の問い合わせ窓⼝ お店の問い合わせ窓⼝ お客さんの問い合わせに、台帳を調べて答える窓⼝係を作る C-1001 です。注⽂した品がまだ届きません 机の上の道具 (3 つ) lookup_customer

    お客さんの台帳を⾒る get_order_history 注⽂の台帳を⾒る process_refund 返⾦の判⼦を押す tools=[...] © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 台帳は架空のデータ 01 では返⾦も縛っていない。 頼めば押せてしまう (03 で縛る) 12
  12. 2 お店の問い合わせ窓⼝ 道具は説明の付いた関数 @tool の関数が道具。モデルは名前、説明、引数を読んで選ぶ tools.py (抜き書き) @tool def lookup_customer(customer_id:

    str) -> str: """お客さんを ID で調べる。 名前 関数の名前 説明 docstring (Args を除く) Args: customer_id: お客さんの ID (例: C-1001) """ … 引数 型と Args の説明 中⾝は、台帳 (コードの中の辞書) を引いて⽂を 返すだけ。 ラベル モデルはこの 3 つを読んで、 どの道具を使うか決める 型 (str) から引数の形が作られる © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 13
  13. 2 お店の問い合わせ窓⼝ 指⽰は仕事の決まり 役と⽬的と判断の⼿がかりを、ちょうどよい細かさで書く agent.py (抜き書き。窓⼝係への指⽰の全部) SYSTEM_PROMPT = """あなたはネットの家電のお店の問い合わせ窓⼝の係です。 丁寧に、短く、記号の飾りを使わずに答えてください。今⽇は

    2026-11-09 です。 - 何かをする前に、lookup_customer でお客さんを確かめる - 道具で分かることは、お客さんに聞き返さない""" 少ない指⽰で試し、外れを⾒て⾜す (この指⽰も、答えに ** などの記号が出たので 1 句⾜した) 細かすぎる ちょうどよい ざっくりすぎる 分かれ道を全部 if-else で書く 役と⽬的と、判断の⼿がかり 「よろしく対応して」だけ 書いていない場合で⽌まる (上の 4 ⾏) 何を確かめるか分からない © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 14
  14. 3 動かして中を⾒る 動かす前の⽤意 Python と uv、SDK、AWS の資格情報、Bedrock のモデルを⽤意する Python 3.10

    以上 strands-agents AWS の資格情報 Bedrock のモデル この資料は uv add aws configure などで Claude Sonnet 5 を 3.12 と uv を使った strands-agents 資格情報とリージョン 呼べるようにする SDK の既定のモデルは Bedrock の Claude Sonnet 4.6。この資料は Sonnet 5 を 指定した。呼ぶたびに、使ったトークンの量で費⽤がかかる。 問い合わせ 1 回は約 2,300 トークン (この資料で 5 回動かして測った値) 同じ形のコードは、公開のハンズオンの Module 1 で動かせる (付録 A2) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 15
  15. 3 動かして中を⾒る エージェントを作って頼む モデル、道具、指⽰を渡して Agent を作り、問い合わせの⽂を渡して呼ぶ agent.py (抜き書き。SYSTEM_PROMPT と model

    の⾏は省いた) from strands import Agent from strands.models import BedrockModel from tools import (get_order_history, lookup_customer, process_refund) agent = Agent( model=model, tools=[lookup_customer, get_order_history, process_refund], system_prompt=SYSTEM_PROMPT, ) if __name__ == "__main__": agent("C-1001 です。注⽂した品がまだ届きません") © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. model= → 窓⼝係 (モデル) tools=[...] → 机の上の道具 system_prompt= → 仕事の決まり agent("...") → お客さんの問い合わせ 16
  16. 3 動かして中を⾒る 動かす 道具を 2 つ呼び、 配送中で 11 ⽇に 届くと答えた

    Tool #1、#2 道具を呼んだ印 (既定の表⽰) そのあとの⽂ モデルの答え (流しながら出る) 答えは毎回変わる © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 17
  17. 3 動かして中を⾒る 何が起きたかを⾒る agent.messages を 順に読むと、 ループの段が⾒える [ ] は記録の番号、

    丸数字は 8 枚⽬の図の 番号。1 周は、モデルを 1 回呼び、頼まれた道具を 動かすまで 1 周⽬: モデルを呼び、頼まれた道具を動かす [1] 問い合わせ ① [2] 考えて、道具を頼む ②③ © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 2 周⽬: 結果を読んで答える [3] 道具の結果 ④ [4] 考えて、答える ② 18
  18. 3 動かして中を⾒る 頼みと実⾏の順を⾒る モデルが頼み、 Strands が動かして 記録に⾜した Strands: 机の仕組みがしたこと モデル:

    窓⼝係の返事 (札) Hook (BeforeModelCallEvent など) で、モデルを呼ぶ前、モデルの 返事のあと、道具を動かす前、道具の結果のあとに 1 ⾏ずつ出した 2 つを同時に動かした 1 回の返事で 2 つ頼むと、 既定で同時に動く (02) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 19
  19. 3 動かして中を⾒る 毎回モデルに渡すもの 毎回、指⽰と道具の説明と それまでの記録を渡す。 ⼊⼒は出⼒よりずっと多い 1 回⽬ ⼊⼒ 817

    指⽰ 道具の説明 3 つ 問い合わせ 130 2 回⽬ ⼊⼒ 1,127 指⽰ 道具の説明 3 つ 問い合わせ 頼みと結果 出⼒: 道具を 2 つ頼む札 190 出⼒: 答え 棒の⻑さは上の画⾯のトークン数 (動かすたびに変わる)。⼊⼒の区切りは順の絵で、割合は測っていない モデルは前の周を覚えていない。毎回、渡された記録を読み直す 記録が⻑いほど費⽤が増え、中のことを思い出す⼒も落ちる (05) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 20
  20. 3 動かして中を⾒る ループに上限を付ける turns=1 で、 1 周で⽌まった limits.py (抜き書き) LIMITS

    = {"上限なし": None, "turns=1 ": {"turns": 1}} for name, limits in LIMITS.items(): … result = agent(ASK, limits=limits) … ⽌まった理由は result.stop_reason に⼊る。上限は各周の頭で 確かめるので、turns=1 でも 1 周⽬の道具は動き、トークンの 上限は 1 周の中で超えることがある。記録は頼みと結果の組が ⽋けない形で残り、上限を上げて呼び直せる © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. limits の主な上限 turns ループの周の数 total_tokens ⼊⼒と出⼒の合計 output_tokens 出⼒の合計 渡さなければ、上限は無い 21
  21. 3 動かして中を⾒る モデルを替える モデルを替えても、道具と指⽰はそのまま使える Amazon Bedrock の Claude (既定) 机と道具はそのまま

    ほかの プロバイダー BedrockModel Anthropic、 OpenAI、Ollama tools、system_prompt agent.py (この資料で動かしたもの) model = BedrockModel( model_id="global.anthropic.claude-sonnet-5", region_name="ap-northeast-1", # 東京 ) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 替えたら、組で確かめ直す モデルごとに、得意なこと、費⽤、速さ、 道具の使い⽅が違う。評価しているのは、 モデルとハーネスが⼀緒に動いたもの (07 で扱う) 22
  22. まとめ まとめ モデルにハーネスを付けるとエージェントになり、道具を使って答える 1 しくみ: エージェント = モデル + ハーネス。モデルは頼むだけ

    2 ループ: 考える、道具を頼む、結果を⾒る。⽌まる所を決めておく 3 動かす: 頼みと実⾏の順、渡したトークン、⽌まった理由を⾒る しくみ ループ 動かす モデル + ハーネス 調べて、また考える 起きたことを⾒る © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 23
  23. まとめ 次に読む資料 道具を⾜すなら 02。⼈に戻る出⼝は 03、被害の上限は 10 02 03 10 道具を渡す

    Hook で決まりを守らせる 囲いの中で安全に動かす ⾃分の関数、組み込みの 「⼈に戻る」出⼝を作る。 被害に上限を置く。 道具、MCP をつなぐ 返⾦の前に承認を待つ 囲い、規則、承認、⾒張り © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 24
  24. 付録 A1 ⽤語 ⽤語 意味 ⽤語 意味 エージェント モデル +

    ハーネス docstring 関数の頭の説明の⽂ モデル 考えて⽂を書く AI システムプロンプト 仕事の決まりの⽂ ハーネス モデルの周りの仕組み全部 プロバイダー モデルを貸すサービス ループ 考えて道具を頼む繰り返し Amazon Bedrock AWS のモデルのサービス 道具 モデルが呼べる関数 トークン モデルが読み書きする単位 @tool 関数を道具にする印 agent.messages 会話と呼び出しの記録 Hook ループの途中で呼ぶ関数 stop_reason ループが⽌まった理由 決めた流れ ⼿順をコードで決めた作り limits ループの上限 (周、トークン) 札 道具を呼びたいという返事 記録 会話と道具の頼みと結果 周 モデル 1 回と、その道具まで 問い合わせ お客さんの質問や相談 © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 25
  25. 付録 A2 出典と参考 strandsagents.com の講座「Agent Fundamentals with Strands」 (全 14

    回、動画と読み物) https://strandsagents.com/docs/learning/how-agents-really-work/ この資料は Lesson 1 と 2 の流れと考え⽅を⼟台にし、図は⾃分の絵で描き直した。講座の コードは aws-samples/sample-building-with-strands-course (MIT-0、README の題は Building Agent Harnesses with Strands Agents)。この資料のコードの元は次のハンズオン aws-samples/sample-strands-agents-hands-on-workshop (aws-samples で公開、MIT-0) の Module 1 https://github.com/aws-samples/sample-strands-agents-hands-on-workshop strandsagents.com: Python Quickstart、Agent Loop、Hooks、Create custom tools、 Model providers、Amazon Bedrock、Callback handlers、Metrics https://strandsagents.com/docs/user-guide/sdk/quickstart/python/ Strands のブログ「Strands Agents and the Model-Driven Approach」 https://strandsagents.com/blog/strands-agents-model-driven-approach/ HumanLayer、12-Factor Agents の Factor 4 https://github.com/humanlayer/12-factor-agents Manus、2025 年 7 ⽉、エージェントの⽂脈の設計 https://manus.im/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 26
  26. 付録 A3 出典と参考 (続き) Anthropic、2024 年 12 ⽉、エージェントの組み⽅ https://www.anthropic.com/engineering/building-effective-agents Anthropic、2025

    年 9 ⽉、⽂脈の設計 https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents Anthropic、2026 年 1 ⽉、エージェントの評価の仕⽅ https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents OpenAI、2025 年 4 ⽉、エージェントの作り⽅の⼿引き (PDF) https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf OpenAI、2026 年 3 ⽉、Responses API に計算機の環境を持たせた記事 https://openai.com/index/equip-responses-api-computer-environment/ OpenAI、開発者向けの⽂書「Running agents」 https://developers.openai.com/api/docs/guides/agents/running-agents OpenAI、2026 年 1 ⽉、エージェントのループの記事 (openai.com の記事) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 27