翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AgentCore Runtime エージェントを呼び出す
InvokeAgentRuntime オペレーションを使用すると、Amazon リソースネーム (ARN) で識別される特定の AgentCore ランタイムエンドポイントにリクエストを送信し、エージェントの出力を含むストリーミングレスポンスを受信できます。API は、セッション識別子によるセッション管理をサポートしているため、複数のインタラクションにわたって会話コンテキストを維持できます。オプションの修飾子を使用して、特定のエージェントエンドポイントをターゲットにできます。
InvokeAgentRuntime を呼び出すには、 アクセスbedrock-agentcore:InvokeAgentRuntime許可が必要です。呼び出しでは、エージェントがユーザー認証に使用できるベアラートークンを渡すこともできます。
InvokeAgentRuntime オペレーションは、リクエストペイロードを最大 100 MB のサイズのバイナリデータとして受け入れ、エージェントがリクエストを処理するときに大量のデータをリアルタイムで配信するストリーミングレスポンスを返します。このストリーミングアプローチにより、完全な応答を待つのではなく、部分的な結果をすぐに受け取ることができるため、インタラクティブなアプリケーションに最適です。
同じセッションでシェルコマンド (テストの実行、git オペレーション、環境設定など) を実行するには、AgentCore ランタイムセッションオペレーションでシェルコマンドの実行を使用します。どちらのオペレーションも、同じエージェントのランタイムとセッションで動作します。
エージェントを OAuth と統合する場合、 AWS SDK を使用して InvokeAgentRuntime を呼び出すことはできません。代わりに、InvokeAgentRuntime に HTTPS リクエストを行います。詳細については、「インバウンド認証とアウトバウンド認証による認証と認可」を参照してください。
ストリーミングエージェントを呼び出す
次の例は、boto3 を使用してエージェントランタイムを呼び出す方法を示しています。
import boto3 import json # Initialize the Bedrock AgentCore client agent_core_client = boto3.client('bedrock-agentcore') # Prepare the payload payload = json.dumps({"prompt": prompt}).encode() # Invoke the agent response = agent_core_client.invoke_agent_runtime( agentRuntimeArn=agent_arn, runtimeSessionId=session_id, payload=payload ) # Process and print the response if "text/event-stream" in response.get("contentType", ""): # Handle streaming response content = [] for line in response["response"].iter_lines(chunk_size=10): if line: line = line.decode("utf-8") if line.startswith("data: "): line = line[6:] print(line) content.append(line) print("\nComplete response:", "\n".join(content)) elif response.get("contentType") == "application/json": # Handle standard JSON response content = [] for chunk in response.get("response", []): content.append(chunk.decode('utf-8')) print(json.loads(''.join(content))) else: # Print raw response for other content types print(response)
マルチモーダルエージェントを呼び出す
InvokeAgentRuntime オペレーションを使用して、テキストとイメージの両方を含むマルチモーダルリクエストを送信できます。次の例は、マルチモーダルエージェントを呼び出す方法を示しています。
import boto3 import json import base64 # Read and encode image with open("image.jpg", "rb") as image_file: image_data = base64.b64encode(image_file.read()).decode('utf-8') # Prepare multi-modal payload payload = json.dumps({ "prompt": "Describe what you see in this image", "media": { "type": "image", "format": "jpeg", "data": image_data } }).encode() # Invoke the agent response = agent_core_client.invoke_agent_runtime( agentRuntimeArn=agent_arn, runtimeSessionId=session_id, payload=payload )
セッション管理
InvokeAgentRuntime オペレーションは、 runtimeSessionIdパラメータによるセッション管理をサポートします。複数のリクエストに同じセッション識別子を提供することで、会話コンテキストを維持し、エージェントが以前のインタラクションを参照できるようにします。
新しい会話を開始するには、一意のセッション識別子を生成します。既存の会話を続行するには、以前のリクエストと同じセッション識別子を使用します。このアプローチにより、時間の経過とともにコンテキストを維持するインタラクティブなアプリケーションを構築できます。
ヒント
最良の結果を得るには、セッション ID に UUID またはその他の一意の識別子を使用して IDs 、異なるユーザーや会話間の衝突を回避します。
エラー処理
InvokeAgentRuntime オペレーションを使用すると、さまざまなエラーが発生する可能性があります。一般的なエラーとその処理方法は次のとおりです。
- ValidationException
-
リクエストパラメータが無効である場合に発生します。エージェント ARN、セッション ID、ペイロードが正しくフォーマットされていることを確認します。
- ResourceNotFoundException
-
指定されたエージェントのランタイムが見つからない場合に発生します。エージェント ARN が正しく、エージェントが AWS アカウントに存在することを確認します。
- AccessDeniedException
-
必要なアクセス許可がない場合に発生します。IAM ポリシーに アクセス
bedrock-agentcore:InvokeAgentRuntime許可が含まれていることを確認します。 - ThrottlingException
-
リクエストレート制限を超えたときに発生します。エクスポネンシャルバックオフと再試行ロジックをアプリケーションに実装します。
- RetryableConflictException
-
サービスがそのセッションをプロビジョニングまたは破棄している間に、2 番目のオペレーションがセッションをターゲットにしたときに (HTTP 409) が発生します。メッセージは です
Session operation in progress, please retry。この条件は一時的で再試行可能です。ウィンドウは短く、既に実行されているセッションは影響を受けません。短いエクスポネンシャルバックオフで再試行します。デフォルトの再試行が有効になっている場合 AWS SDKs はこの例外を自動再試行します。再試行を無効にした場合、または API を直接呼び出す場合は、自分で再試行します。
アプリケーションに適切なエラー処理を実装して、ユーザーエクスペリエンスを向上させ、問題を効果的にトラブルシューティングします。
ベストプラクティス
InvokeAgentRuntime オペレーションを使用する場合は、次のベストプラクティスに従ってください。
-
プロンプトフィールドがエージェントエントリポイントの文字列であることを検証します。ペイロードは解析された JSON として到着するため、
promptフィールドは任意の JSON タイプ (文字列、リスト、オブジェクト) にすることができます。toolUseコンテンツブロックを含む文字列以外の値がエージェントフレームワークに達すると、フレームワークは名前付きツールを直接実行することがあります。モデルの推論とガードレールの評価はバイパスされます。エージェントに入力を渡すisinstance(prompt, str)前に、必ず を適用してください。詳細については、AgentCore ランタイムのセキュリティのベストプラクティス」を参照してください。 -
セッション管理を使用して会話コンテキストを維持し、ユーザーエクスペリエンスを向上させます。
-
ストリーミングレスポンスを段階的に処理して、ユーザーにリアルタイムのフィードバックを提供します。
-
堅牢なアプリケーションに適切なエラー処理と再試行ロジックを実装します。
-
特にマルチモーダルコンテンツの場合、リクエストを送信するときはペイロードサイズの制限 (100 MB) を検討してください。
-
適切な修飾子を使用して、特定のエージェントバージョンまたはエンドポイントをターゲットにします。
-
必要に応じてベアラートークンを使用して認証メカニズムを実装します。
-
エージェントの LLM を介してルーティングするのではなく、決定的なオペレーション (テスト、git、ビルド)
InvokeAgentRuntimeCommandに使用します。AgentCore ランタイムセッションの「シェルコマンドの実行」を参照してください。