

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# サーバー側のツールの使用
<a name="tool-use-server-side"></a>

Responses API を使用してモデルを呼び出す場合、前に説明したクライアント側のツール呼び出しに加えて、サーバー側のツール呼び出しを使用できます。サーバー側のツール呼び出しは、ツール (APIs、関数、ワークフロー) がクライアントではなく信頼できるバックエンド環境で実行されるメカニズムです。これにより、アプリケーションのセキュリティ、信頼性、ガバナンス体制が向上します。Amazon Bedrock がツールの使用を実装する Lambda 関数を実行する前に、Lambda 関数が呼び出すアプリケーションのポリシーと同じ IAM ポリシーを持つようにします。Amazon Bedrock がツールの実行を推進しているため、クライアントはツール機能を追加するのではなく、ビジネスロジックの実装に集中できます。Amazon Bedrock は、ISO、SOC、HIPAA 対応など、最高のガバナンス標準もサポートしています。お客様は、独自のカスタム Lambda 関数を送信してツールを実行するか、メモやタスクなどの既存の事前定義されたツールを使用できます。Responses API を使用するサーバー側のツールは、OpenAI の GPT OSS 20B/120B モデルから利用可能になり、他のモデルも間もなくサポートされる予定です。Models API を使用して、 Responses API で使用できるモデルを検出できます。Responses API の詳細については、[OpenAI APIs](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-mantle.html)」を参照してください。

Amazon Bedrock で使用できるツールには、Lambda を使用するカスタムツールと Bedrock でサポートされている定義済みツールの 2 種類があります。このセクションでは、 Responses API を使用してカスタム Lambda ツールを作成する方法を確認します。両方について詳しく説明します。

**Responses API で Lambda を使用するカスタムツール**

Lambda 関数を Bedrock のカスタムツールとして使用することで、カスタム AWS Lambda 関数をツールとして統合することで、エージェントの機能を拡張できます。これにより、AI アシスタントやその他のアプリケーションが Model Context Protocol (MCP) を通じて呼び出すことができるサーバーレスでスケーラブルなツールを作成できます。この機能の利点は次のとおりです。
+ 機能拡張: カスタムビジネスロジック、API 統合、またはデータ処理機能を追加します。
+ ツールを安全に実行する: Lambda を使用すると、ツールは完全な VPC アクセスを許可することなく、VPC 内のリソースにアクセスできます。
+ サーバーレスアーキテクチャ: インフラストラクチャ管理なし、Lambda は自動的にスケーリングを処理します。
+ 費用対効果: 実行時間に対してのみ支払い、アイドル状態のリソースに対しては支払いません。
+ 簡単な統合: Lambda 関数は、組み込みツールと一緒にシームレスに表示されます。

Amazon Bedrock のモデルがツールを使用してメッセージのレスポンスを完了できるようにするには、メッセージと 1 つ以上のツールの定義をモデルに送信します。アプリケーションのプロンプトに基づいて、いずれかのツールがレスポンスの生成に役立つとモデルが判断した場合、Bedrock はツールを使用してツールの結果をモデルに送り返すリクエストを返します。モデルはその結果を使用して元のメッセージに対するレスポンスを生成します。

次の手順は、 [Responses API](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-mantle.html) でツールを使用する方法を示しています。

**仕組み**

1. **Lambda 関数**: MCP プロトコルを実装する Lambda 関数を作成する

1. **ツール検出**: Bedrock は Lambda 関数を呼び出して使用可能なツールを検出します。

1. **ツールの登録**: ツールが Bedrock に登録されている

1. **ツールの実行**: エージェントがツールをリクエストすると、Bedrock は Lambda 関数を呼び出します。

1. **レスポンス処理**: 結果は標準インターフェイスを介してエージェントに返されます。

**ステップ 1: 最も人気のある曲を取得する Lambda 関数を定義する**

MCP プロトコルを実装する Lambda 関数を作成します。Python の簡単な例を次に示します。

```
import json

def lambda_handler(event, context):
    # Parse JSON-RPC request
    method = event.get('method')
    params = event.get('params', {})
    request_id = event.get('id')
    
    if method == 'tools/list':
        return {
            "jsonrpc": "2.0",
            "id": request_id,
            "result": {
                "tools": [
                    {
                        "name": "my_custom_tool",
                        "description": "My custom business logic tool",
                        "inputSchema": {
                            "type": "object",
                            "properties": {
                                "input": {
                                    "type": "string",
                                    "description": "Input text to process"
                                }
                            },
                            "required": ["input"]
                        }
                    }
                ]
            }
        }
    elif method == 'tools/call':
        tool_name = params.get('name')
        arguments = params.get('arguments', {})
        
        if tool_name == 'my_custom_tool':
            # Your custom logic here
            result = f"Processed: {arguments.get('input', '')}"
            return {
                "jsonrpc": "2.0",
                "id": request_id,
                "result": {
                    "content": [
                        {
                            "type": "text",
                            "text": result
                        }
                    ]
                }
            }
    
    # Error response for unsupported methods
    return {
        "jsonrpc": "2.0",
        "id": request_id,
        "error": {
            "code": -32601,
            "message": "Method not found"
        }
    }
```

**ステップ 2: Lambda 関数をデプロイする**

次に、IAM ロールを使用してこの Lambda 関数をデプロイし、ARN を取得します。Lambda 関数のデプロイの詳細については、[こちらを参照してください](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)。

```
# Example using AWS CLI
aws lambda create-function \
  --function-name my-custom-tool \
  --runtime python3.14 \
  --role arn:aws:iam::YOUR-ACCOUNT:role/lambda-execution-role \
  --handler lambda_function.lambda_handler \
  --zip-file fileb://function.zip
```

ARN が であるとします。 `arn:aws:lambda:us-west-2:123456789012:function:my-custom-tool`

**ステップ 3: 推論リクエストでメッセージとツールの定義を定義する**

メッセージとツールの定義を送信するには、[Responsions API](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-mantle.html) オペレーションを使用します。Amazon Bedrock は Responses API の[コネクタとリモート MCP サーバー機能](https://platform.openai.com/docs/guides/tools-connectors-mcp)を使用して、ツールの使用機能を提供します。ツールの定義は、mcp リクエストパラメータで Create オペレーションに渡す JSON スキーマです。レスポンスコネクタ API の `connector_id`フィールドで、前のステップで作成した Lambda ARN を渡すことができます。Bedrock はモデルを呼び出すアプリケーションに使用されるのと同じ IAM ロールとポリシーを使用するため、認可認証情報を提供する必要はありません。以下は、ラジオステーションで最も人気のある曲を取得するツールのスキーマの例です。

```
from openai import OpenAI

client = OpenAI()

resp = client.responses.create(
    model="oss-gpt-120b",
    tools=[
        {
            "type": "mcp",
            "server_label": "xamzn_arn",
            "connector_id": "arn:aws:lambda:us-west-2:123456789012:function:my-custom-tool",
            "require_approval": "never",
        },
    ],
    input="My custom prompt.",
)

print(resp.output_text)
```

**ステップ 4: Bedrock がツールを呼び出し、レスポンスをモデルに返す**

コネクタツールを使用する機能は、 [Responses API](https://platform.openai.com/docs/api-reference/responses/create) をサポートするモデルで使用できます。ここでモデルをサポートするツールを確認してください[https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-mantle.html](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-mantle.html)。Responses API を使用してツールを使用している場合は、ツール定義のインポート時またはツール呼び出し時に使用された[トークン](https://platform.openai.com/docs/pricing)に対してのみ料金が発生します。ツール呼び出しごとに追加料金は発生しません。

`tools` パラメータで Lambda 関数を指定すると、API はサーバーからツールのリストを取得しようとします。ツールのリストの取得に成功すると、モデルレスポンス`mcp_list_tools`出力に新しい出力項目が表示されます。このオブジェクトの `tools`プロパティには、正常にインポートされたツールが表示されます。モデルがこれらのツール定義にアクセスできるようになると、モデルのコンテキストの内容に応じて、それらを呼び出すことを選択できます。モデルが Lambda ツールを呼び出すことを決定すると、API は Lambda 関数にツールを呼び出し、その出力をモデルのコンテキストに配置するようにリクエストします。[OpenAI ドキュメント](https://platform.openai.com/docs/guides/tools-connectors-mcp?quickstart-panels=connector)のリストツールと呼び出しツールの詳細については、「」を参照してください。Lambda 関数には、Bedrock でモデルを呼び出すアプリケーションと同じ IAM ロールとポリシーがアタッチされている必要があります。アタッチされていない場合、Lambda 関数は失敗します。以下はエラー定義です。

```
{
    "jsonrpc": "2.0",
    "id": 1,
    "error": {
        "code": -32000,
        "message": "Tool execution failed",
        "data": "Additional error details"
    }
}
```

**Responses API で AWS が提供するツールを使用する**

`openai.gpt-oss-20b` および `openai.gpt-oss-120b`モデルには、メモを取る機能 (メモツール) とタスク管理 (タスクツール) の 2 つの AWS が提供するツールが組み込まれています。これらのツールは自動的に使用可能になります。 `tools`パラメータで定義する必要はありません。

**メモツールの概要**

この`notes`ツールを使用すると、モデルは同じ会話セッション内にメモを保存できます。これにより、複数のインタラクションにわたってコンテキストを維持するためのシンプルなメモリメカニズムが提供されます。メモリは現在の会話のみを対象としています。

モデルがメモツールを使用する場合、 を `name`に設定して`mcp_call`出力を出力します`"notes"`。モデルは、リクエストに基づいて適切な引数を決定します。

自然言語 (「好きな色が青であることを覚えておいてください」、「好きな色について何を伝えましたか？」、「好きな朝の会議を保存する」、「会議の設定について言ったことを思い出す」など) を使用するか、プロンプトで直接ツールコールを使用できます (「メモツールを使用して E メールを john@example.com として保存する」、「E メールアドレスのメモを確認する」など）。

**タスクツールの概要**

この`tasks`ツールは、会話セッション内のタスクを管理するためのスタックを提供します。タスクをスタックにプッシュしてポップオフできるため、ワークフロー、リマインダー、または階層タスクの管理に役立ちます。タスクは会話セッション全体で保持されます。メモリは現在の会話のみを対象としています。

モデルがタスクツールを使用する場合、 を `name`に設定して`mcp_call`出力を出力します`"tasks"`。モデルは、リクエストに基づいて適切な引数 (`method`、`task.title`、 など`task.description`) を決定します。

タスクツールは、自然言語 (「予算を確認するタスクを追加する」、「クライアントを呼び出すリマインダーを押す」、「次のタスクは何ですか？」、「最新のタスクを押す」、「スタックから最新のタスクを取得する」など) を使用して呼び出すか、プロンプトでツールを直接呼び出すことができます (「タスクツールを使用して「プレゼンテーションを終了する」、「スタックからタスクを押す」、「会議をタスクリストに追加する」）。

**コード例: メモとタスクツールの使用**

ノートとタスクツールは、 `openai.gpt-oss-20b`および `openai.gpt-oss-120b`モデルに組み込まれています。`tools` パラメータで明示的に定義する必要はありません。プロンプトで参照してください。

```
from openai import OpenAI

client = OpenAI(
    base_url="https://bedrock-mantle.us-east-1.api.aws/v1"
)

# The notes tool is built-in — just ask the model to use it
resp = client.responses.create(
    model="openai.gpt-oss-120b",
    input="Use the notes tool to store that my preferred language is Python.",
)

print(resp.output)
# The model automatically calls the notes tool via mcp_call

# Use the tasks tool to push a task
resp = client.responses.create(
    model="openai.gpt-oss-120b",
    input="Use the tasks tool to push a task: review the API documentation",
)

print(resp.output)
```

## AgentCore Gateway とのサーバー側のツール使用統合
<a name="tool-use-agentcore-gateway"></a>

Amazon Bedrock は、統合タイプを呼び出すサーバー側のツールとして [AgentCore Gateway](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway.html) をサポートするようになりました。この機能を使用すると、モデルを AgentCore Gateway エンドポイントに直接接続できるため、ゲートウェイインフラストラクチャを介して管理されるツールにシームレスにアクセスできます。

AgentCore Gateway 統合は、Lambda 関数統合と同じパターンに従いますが、主な違いは 1 つです。

**Lambda 統合:**
+ Lambda 関数 ARNs
+ AWS Lambda 関数を直接呼び出す

**AgentCore Gateway の統合:**
+ AgentCore Gateway ARNs
+ AgentCore Gateway インフラストラクチャを介してツール呼び出しをルーティングします
+ 一元化されたツール管理と検出を提供します

### 設定
<a name="agentcore-gateway-configuration"></a>

**リクエスト構造**

AgentCore Gateway をツールソースとして設定する場合は、Responsions API リクエストの`tools`配列で次の構造を使用します。

```
{
  "type":"mcp",
  "server_label":"agentcore_tools",
  "connector_id":"arn:aws:bedrock-agentcore:us-west-2:342789630635:gateway/agentcore-intro-gateway-v2-swvq44sovp",
  "server_description":"AgentCore Gateway providing custom tools",
  "require_approval":"never"
}
```

**パラメータ**


| パラメータ | タイプ | 必須 | 説明 | 
| --- | --- | --- | --- | 
| type | 文字列 | はい | mcp に設定する必要があります。 | 
| server\_label | string | はい | リクエスト内のこのツールコネクタの一意の識別子 | 
| connector\_id | string | はい | AgentCore Gateway の ARN | 
| server\_description | string | いいえ | このゲートウェイが提供するツールの人間が読める説明 | 
| require\_approval | string | はい | フィールドは である必要があります "never" | 

**完全なリクエストの例**

```
{
  "model":"openai.gpt-oss-120b",
  "stream":true,
  "background":false,
  "store":false,
  "tools": [
    {
      "type":"mcp",
      "server_label":"agentcore_tools",
      "connector_id":"arn:aws:bedrock-agentcore:us-west-2:342789630635:gateway/agentcore-intro-gateway-v2-swvq44sovp",
      "server_description":"AgentCore Gateway providing custom tools",
      "require_approval":"never"
    }
  ],
  "input": [
    {
      "type":"message",
      "role":"user",
      "content": [
        {
          "type":"input_text",
          "text":"What is the weather in Seattle?"
        }
      ]
    }
  ]
}
```

### 前提条件
<a name="agentcore-gateway-prerequisites"></a>

AgentCore Gateway 統合を使用する前に、以下を確認してください。

1. 設定されたターゲット (Lambda 関数、API Gateway ステージ、OpenAPI スキーマ、または MCP サーバー) を持つ** AgentCore ** Gateway を作成しました

1. Bedrock サービスロールがゲートウェイを呼び出すことを許可する **IAM アクセス許可を設定しました**。Bedrock は IAM 認証を使用するゲートウェイのみをサポートすることに注意してください。

1. 正しい形式の**ゲートウェイ ARN** 

### AgentCore Gateway 統合の利点
<a name="agentcore-gateway-benefits"></a>
+ **一元化されたツール管理**: 単一のゲートウェイエンドポイントを使用してすべてのツールを管理する
+ **ツール検出**: エージェントはゲートウェイを介して利用可能なツールを動的に検出できます
+ **セキュリティ**: IAM およびゲートウェイポリシーによる組み込みの認証と認可
+ **オブザーバビリティ**: ツール呼び出しの包括的なモニタリングとログ記録
+ **柔軟性**: 複数のターゲットタイプ (Lambda、API Gateway、OpenAPI、MCP サーバー) のサポート

### IAM 許可
<a name="agentcore-gateway-iam"></a>

Bedrock 実行ロールには、AgentCore Gateway を呼び出すためのアクセス許可が必要です。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock-agentcore:InvokeGateway"
      ],
      "Resource": "arn:aws:bedrock-agentcore:us-west-2:342789630635:gateway/agentcore-intro-gateway-v2-swvq44sovp"
    }
  ]
}
```

### 次のステップ
<a name="agentcore-gateway-next-steps"></a>
+ [AgentCore Gateway の作成](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-create.html)の詳細
+ [ゲートウェイのターゲットタイプ](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-targets.html)を調べる
+ [ゲートウェイセキュリティのベストプラクティス](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-security.html)を確認する