AI News HubLIVE
站内改写8 分で読了

Amazon Bedrock AgentCoreを使用したAI搭載の機器修理アシスタントの構築

このチュートリアルでは、Amazon Bedrock AgentCoreを使用して、農家や現場技術者が自然言語で機器の問題を診断し、必要な部品を特定し、メーカー承認の修理手順にアクセスできるAI搭載の機器修理アシスタントを構築します。このソリューションは、AgentCore RuntimeとStrands Agents SDK、Amazon Nova 2 Liteを基盤モデル、Amazon Bedrock Knowledge BaseをRAG、AgentCore Memoryを会話の永続化に使用します。

ソースAWS Machine Learning Blog著者: Puneeth Komaragiri

大型農業機械の修理管理では、適切な部品がない状態で技術者が問題を診断しなければならず、複数回の現場訪問、ダウンタイムの長期化、特に収穫期には多大な経済的損失が発生することがよくあります。

この記事では、Amazon Bedrock AgentCoreを使用してAI搭載の機器修理アシスタントを構築し、農家や現場技術者が自然言語で機器の問題を診断し、必要な部品を特定し、メーカー承認の修理手順にアクセスできるようにする方法を紹介します。このソリューションは、AgentCore RuntimeとStrands Agents SDK、Amazon Nova 2 Liteを基盤モデル、Amazon Bedrock Knowledge Baseを検索拡張生成(RAG)、AgentCore Memoryを会話の永続化に使用します。

ソリューションの概要

このソリューションは、WebフロントエンドとAgentCoreでホストされるエージェントを組み合わせ、インデックス化されたメーカードキュメントを使用して機器の診断質問に回答します。

Amazon Cognitoがユーザー認証を管理し、AWS AmplifyがWebアプリケーションをホストします。機器修理エージェントはAgentCore Runtime上で動作し、Strands Agents SDKで構築されています。インデックス化された機器マニュアル、部品カタログ、修理ドキュメントを含むBedrock Knowledge Baseにクエリを実行します。AgentCore Memoryはセッション間の会話履歴を維持し、技術者がコンテキストを繰り返すことなくフォローアップの質問ができるようにします。

次の図は、これらのコンポーネントがどのように連携するかを示しています。

アーキテクチャには以下の主要なセクションが含まれます。

  • セクションA – 認証とフロントエンド:CloudFormationスタックは、認証用のAmazon Cognito(ユーザープール、IDプール)と、React WebアプリケーションをホストするためのAWS Amplifyをデプロイします。ユーザーはCognitoを通じて認証し、フロントエンドはAgentCore Runtimeエンドポイントと直接通信します。
  • セクションB – AgentCore Runtime:AgentCore RuntimeはStrandsベースのエージェントをホストし、/invocationsエンドポイントを公開します。フロントエンドはCognito Bearerトークンを使用してこのエンドポイントを直接呼び出します。エージェントのinvoke()エントリポイントは、ペイロードのpathフィールド(/chatはAIクエリ、/issuesはCRUD操作)に基づいてリクエストを内部的にルーティングし、バックエンド操作の単一エントリポイントを提供し、セッション管理とヘルスチェックを内蔵しています。
  • セクションC – AI処理:Strandsエージェントはカスタムのsearch_equipment_knowledgeツールを使用し、retrieve_and_generate APIを介してBedrock Knowledge Baseを呼び出します。Knowledge Baseは、Amazon OpenSearch Serverlessをベクトル検索に、Amazon Titan Embeddingsをセマンティックマッチングに使用して、Amazon S3に保存された機器ドキュメントをインデックス化します。

以下のコードスニペットは、エージェントのKnowledge Base検索ツールがメーカードキュメントをクエリする方法を示しています。

@tool
def search_equipment_knowledge(query: str) -> str:
    """機器マニュアル、部品カタログ、修理ドキュメントを検索します。"""
    response = bedrock_agent_runtime.retrieve_and_generate(
        input={"text": query},
        retrieveAndGenerateConfiguration={
            "type": "KNOWLEDGE_BASE",
            "knowledgeBaseConfiguration": {
                "knowledgeBaseId": KNOWLEDGE_BASE_ID,
                "modelArn": f"arn:aws:bedrock:{REGION}::foundation-model/{MODEL_ID}",
            },
        },
    )
    return response.get("output", {}).get("text", "結果が見つかりませんでした。")
  • セクションD – データとメモリ:Amazon DynamoDBは機器のサービスチケット(問題のCRUD操作)を保存します。AgentCore Memoryはセッション内の短期メモリとセッション間の長期メモリを提供します。Amazon CloudWatchとAWS X-Rayが自動的な可観測性を提供します。

以下は、技術者が質問をしたときのリクエストフローです。

  1. 技術者がWebアプリケーションを開き、Amazon Cognitoを通じて認証します。
  2. 技術者がチャットインターフェースから質問を送信します。
  3. フロントエンドはCognito BearerトークンとともにクエリをAgentCore Runtimeの/invocationsエンドポイントに送信します。
  4. AgentCoreがトークンを検証し、リクエストをエージェントにルーティングし、以前の会話から関連コンテキストを取得します。
  5. StrandsエージェントがクエリをAmazon Nova 2 Liteに送信して推論します。
  6. モデルがsearch_equipment_knowledgeツールを呼び出し、Bedrock Knowledge Baseにクエリを実行します。
  7. Knowledge Baseがインデックス化された機器マニュアルを検索し、ソース引用とともに関連ドキュメントを返します。
  8. モデルが修理手順と部品推奨を含む診断応答を合成します。
  9. 応答が検証のためのソース属性とともに技術者に返されます。

前提条件

始める前に、以下を確認してください。

  • AgentCoreエージェントをデプロイするための適切な権限を持つAWSアカウント。必要なIAM権限については、AgentCore RuntimeのIAM権限を参照してください。
  • デプロイするAWSリージョンでAmazon Bedrockモデルアクセスが有効になっていること(Amazon Nova 2 Lite用)。他のサポートされているモデルを使用することもできます。現在のモデル可用性については、AWSリージョン別のモデルサポートを参照してください。
  • AWS CLI v2.0以降がインストールされ、適切な認証情報で設定されていること。
  • Python 3.10以降がインストールされていること。
  • ターミナルまたはコマンドプロンプトへのアクセス。

コスト見積もり:テスト中、主なコストはAmazon Bedrockモデル呼び出し(Amazon Nova 2 Liteは100万入力/出力トークンあたりそれぞれ$0.30/$2.50)とBedrock Knowledge Base(OpenSearch Serverlessはアクティブ時約$0.24/時間)です。その他のサービス(AgentCore Runtime、Amazon DynamoDB、Amazon S3、Amazon Cognito、AWS Amplify)はテストボリュームの場合、AWS無料利用枠に含まれます。詳細な見積もりはAWS料金計算ツールを使用してください。

重要:すべてのリソースを同じAWSリージョンにデプロイしてください。CloudFormationスタック、Knowledge Base、AgentCore起動コマンドは同じリージョンを使用する必要があります。

Knowledge Baseの作成

エージェントをデプロイする前に、農業機器ドキュメントを含むAmazon Bedrock Knowledge Baseを作成して設定します。このKnowledge Baseは、診断推奨と修理ガイダンスのソースマテリアルを提供します。

ステップ1:ドキュメントの準備

テスト用に、John Deere Technical Information Storeから機器マニュアルをダウンロードします。組織の機器ドキュメントを使用することもできます。このブログでは、John Deere 1023Eおよび1025Rコンパクトユーティリティトラクターのオペレーターマニュアルを使用します。

農業機器ドキュメントを収集して整理します。

  • 機器マニュアル(PDF形式推奨)
  • 技術サービスガイドとトラブルシューティングドキュメント
  • 部品番号と仕様を含む部品カタログ
  • メンテナンススケジュールと予防ケア手順
  • 安全プロトコルとメーカー警告

ドキュメント準備のヒント:

  • ドキュメントがテキスト検索可能であることを確認します(スキャン画像ではない)
  • 一貫した命名規則を使用します(例:Manufacturer_Model_DocumentType.pdf)
  • すべてのユーザーがアクセスすべきでない機密情報を削除します

ステップ2:Knowledge Base用のS3バケットの作成

aws s3 mb s3://agriculture-kb-documents-<your-unique-id>
aws s3 cp ./equipment-docs s3://agriculture-kb-documents-<your-unique-id> --recursive

ステップ3:Bedrock Knowledge Baseの作成

次の設定でKnowledge Baseを作成します。

  • Knowledge Base名:Agriculture-Equipment-Repair-KB
  • データソース:s3://agriculture-kb-documents-<your-unique-id>(ステップ2で作成したバケット)
  • 解析戦略:Amazon Bedrockデフォルトパーサー
  • チャンキング戦略:デフォルトチャンキング
  • 埋め込みモデル:Amazon Titan Embeddings G1 – Text
  • ベクトルストア:新しいベクトルストアをクイック作成(Amazon OpenSearch Serverless)

ステップ4:Knowledge Baseの同期とテスト

Knowledge Baseが作成されたら、データソースを同期してドキュメントの取り込みを開始します(通常10〜20分)。詳細については、データソースの同期による取り込みを参照してください。Bedrockコンソールのテスト機能を使用して、Knowledge Baseがサンプルクエリに応答することを確認します。詳細ページからKnowledge Base IDを記録します。

ソリューションのデプロイ

ステップ5:サポートインフラストラクチャのデプロイ

CloudFormationスタックを起動します。AWS CloudFormationコンソールにリダイレクトされます。 スタックパラメータで、テンプレートURLが事前に入力されています。 スタック名にデプロイ名を入力します(デフォルト:ag-repair-assist)。 KnowledgeBaseIdに前のセクションで記録したKnowledge Base IDを入力します。 確認してスタックを作成します。

デプロイが成功したら、CloudFormationスタックの「出力」タブから以下の値をメモします。

  • AgentCoreExecutionRoleArn – エージェント設定時に使用
  • CognitoDiscoveryUrl – エージェント設定時に使用
  • UserPoolClientId – エージェント設定時に使用
  • EquipmentIssuesTableName – エージェントデプロイ時に使用
  • UserPoolId – フロントエンド設定時に使用
  • IdentityPoolId – フロントエンド設定時に使用
  • AmplifyConsoleUrl – フロントエンドデプロイ時に使用
  • AmplifyAppUrl – アプリケーションURL

ステップ6:エージェントのデプロイ(ローカルマシンから)

AWS認証情報が設定されたローカルターミナルから以下のコマンドを実行します。Python 3.10以降が必要です。

プロジェクトディレクトリを作成し、環境をセットアップします。

mkdir agriculture-repair-agent && cd agriculture-repair-agent
python3 -m venv .venv
source .venv/bin/activate

AgentCoreツールキットと依存関係をインストールします。

pip install "bedrock-agentcore-starter-toolkit>=0.1.21" strands-agents strands-agents-tools boto3

次に、エージェントコードをダウンロードして解凍します。これには、agriculture_repair_agent.py(エージェントロジック)とrequirements.txt(依存関係)の2つのファイルが含まれます。

エージェントを設定します。このコマンドは、AgentCoreデプロイの実行ロール、OAuth、メモリ設定を行います。

agentcore configure -e agriculture_repair_agent.py

プロンプトに従って以下の値を入力します。

  • エージェント名:Enterを押してデフォルト名(agriculture_repair_agent)を使用
  • 要件ファイル:Enterを押してrequirements.txtの依存関係ファイルを確認
  • デプロイ設定:選択肢1「Direct Code Deploy - Python only, no Docker required」を選択してEnter
  • Pythonランタイムバージョンの選択:複数のPythonバージョンがある場合は、3.10以上を選択
  • 実行ロール:ステップ5のCloudFormation出力から貼り付けてEnter
  • S3バケットURI/パス:ステップ2で作成したS3バケットを入力してEnter
  • OAuthオーソライザーを設定しますか?:yesを選択してEnter
  • OAuthディスカバリーURLを入力:ステップ5のCloudFormation出力から貼り付けてEnter
  • 許可されたOAuthクライアントIDを入力:ステップ5のCloudFormation出力から貼り付けてEnter
  • 許可されたOAuthオーディエンスを入力:Enterを押してスキップ(空のまま、アクセストークンはaudではなくclient_idクレームを使用)
  • 許可されたOAuthスコープを入力:Enterを押してスキップ(空のまま)
  • 許可されたOAuthカスタムクレームをJSON文字列として入力:Enterを押してスキップ(空のまま)
  • リクエストヘッダーの許可リストを設定しますか?:Enterを押してデフォルト(いいえ)を受け入れ
  • メモリ設定:Enterを押して新しいメモリを作成
  • 長期メモリを有効にしますか?:Yes

セットアップ後のエージェント設定の詳細です。

エージェントをAgentCore Runtimeにデプロイします。ローカルDockerは不要です。プロセスには約5〜10分かかります。

agentcore launch --env KNOWLEDGE_BASE_ID=<your-knowledge-base-id> --env TABLE_NAME=<your-table-name> --env MODEL_ID=us.amazon.nova-2-lite-v1:0

完了後、出力からエージェントランタイムARNをメモします。

CloudFormationスタックは、必要な権限を持つエージェント実行ロールを作成します。追加のIAM設定は必要ありません。

ステップ7:フロントエンドのデプロイ

上記のリンクからML-18699-FrontEnd.zipをダウンロードします。

ステップ5のCloudFormation出力からAmplifyConsoleUrlを開きます。 「Deploy updates」をクリックし、「Drag and drop」方法を選択し、「Choose .zip folder」をクリックしてから「Save and Deploy」をクリックします。 デプロイが完了するのを待ちます。

Webアプリケーションの使用

ステップ5のCloudFormation出力からAmplifyAppUrlを開きます。初回起動時に、設定の詳細を入力するよう求められます。CloudFormationスタックの出力(ステップ5)とエージェントデプロイ(ステップ6)の値を入力します。

設定を保存した後、サインアップオプションを使用してアカウントを作成し、メールを確認してサインインします。

サインイン後、メインダッシュボードが表示されます。

以下は試すことができるサンプルクエリです。

  • 問題分析:プロンプト:「私のJohn Deere 1023Eシリーズトラクターが油圧を失い、アタッチメント操作時に異常なノイズが出ます。可能性のある原因と推奨されるチェック手順は?」期待される応答:油圧オイルレベルの低下、フィルターの詰まり、油圧ポンプの故障などの可能性のある原因を診断し、マニュアルのトラブルシューティングセクションを参照します。
  • 部品識別:プロンプト:「John Deere 1025Rトラクターのエンジンエアフィルターの部品番号は?サプライヤーと価格情報が必要です。」期待される応答:部品カタログから部品番号、サプライヤーの詳細を抽出し、代替部品の相互参照を提案します。
  • 修理手順:プロンプト:「John Deere 1023Eの油圧フィルター交換の手順を段階的に提供してください。工具リストと安全上の注意事項が必要です。」期待される応答:修理マニュアルから詳細な手順、必要な工具、安全上の注意事項を取得します。

リソースのクリーンアップ

継続的な費用を回避するために、作成したリソースを削除します。

  • CloudFormationスタックを削除します(関連リソースは自動的に削除されます)
  • S3バケットを削除します(個別に空にして削除する必要があります)
  • Bedrock Knowledge Baseと関連するOpenSearch Serverlessコレクションを削除します

まとめ

この記事では、Amazon Bedrock AgentCoreとStrands Agents SDKを使用してAI駆動の機器修理アシスタントを構築する方法を紹介しました。このソリューションは、検索拡張生成を活用して、メーカーのドキュメントを引用した正確でコンテキストに基づいた診断を提供し、農業機械のダウンタイムを削減するのに役立ちます。

このパターンは、自動車修理、産業機器メンテナンス、フィールドサービス管理などの他の業界にも適用できます。このアシスタントを既存のワークフローに統合することで、組織は技術者の学習曲線を短縮し、ライフサイクル全体にわたって組織の知識を維持することができます。