Amazon Connect AIエージェント オーケストレーションタイプで Constant タイプのツールを使ったモック検証を試してみた
はじめに
Amazon ConnectのAIエージェント (オーケストレーションタイプ) では、エージェントが外部システムと連携するための ツール 機能が提供されています。
ツールを利用することで、顧客からの問い合わせに対してバックエンドのデータベースやAPIから情報を取得し、その結果をもとに回答を生成できます。
ただし、実際の開発では 「AIの対話フローは先に作りたいが、バックエンドのAPIやLambda、MCPサーバーはまだ完成していない」 という場面がよくあります。
そのようなときに便利なのが、ツールタイプのひとつである Constant です。
Constant を選択して作成したツールは、AIが呼び出した際に 常に決まった静的な文字列を返す ことができるため、バックエンド実装を待たずにプロンプト調整や対話テストを進められます。
今回は、この Constant タイプのツール を使って 在庫確認エージェント のモックを作成し、AIが固定データをどのように処理して対話するのかを検証してみました。
ツールの使い分けについて(Return to Control と Constant)
AIエージェントで作成できる自作ツールには、 Return to Control と Constant があります。用途に応じて使い分けることが重要です。

1. Return to Control(制御を戻す)
- 挙動: AIエージェントとの会話を終了し、Connectのフロー(「顧客の入力を取得する」ブロック)に処理を戻します。
- 使い道: 本番環境での「エスカレーション(有人対応への引き継ぎ)」や「フローでのルーティング」にはこれを選択します。
- これを選択することで、AIが「エスカレーションが必要」と判断した際にフロー側へ遷移し、そこでコンタクト属性(会話の要約や理由など)を持ったままキュー転送などの処理へ移行できます。
2. Constant(定数)
- 挙動: 常に決まった「静的な文字列」を返します。
- 使い道: 開発中のテスト(モック)用です。
- 例えば、外部データベースを検索する「MCPツール」を作りたいが、まだバックエンドが完成していない場合などに使います。
- 「在庫確認ツール」として設定し、Constant Responseに「在庫あり」と入れておけば、実際に検索しなくても「在庫あり」の場合のフロー動作を検証できます。
AIエージェントの作成
まずは、オーケストレーションタイプのAIエージェントを作成し、モック用の検索ツールを設定します。
今回は、デフォルトで用意されている SelfServiceOrchestrator をコピーして作成を開始しました。

Constant タイプのツールの作成と設定
AIエージェントの設定画面からツールを追加し、ツールタイプとして Constant を選択します。
今回は、商品名を受け取って在庫状況を返す check_inventory というツールを作成します。

ここで重要なのは、AIに正しくツールを使わせるために スキーマ と プロンプト をしっかり定義することです。
1. 入力スキーマ
AIに対して、このツールを呼び出すために顧客の発話から何を抽出すべきかを定義します。
今回は、在庫確認に必要な 商品名 を必須パラメータにしました。
{
"type": "object",
"properties": {
"product_name": {
"type": "string",
"description": "在庫を確認したい商品名(例:ノートパソコン、マウスなど)"
}
},
"required": [
"product_name"
]
}
2. 出力スキーマ
Constant タイプのツールが返す固定のダミーデータを定義します。
ここで少し注意が必要です。
本番APIのレスポンスを想定して、以下のようなJSONオブジェクトを設定すると、実行時に Tool execution failed となりました。
ダメな例
{
"status": "在庫あり",
"delivery_date": "明日",
"stock_count": 15
}
Constant タイプのツールでは、最上位のキーを response にする必要がありました。
そのため、以下の形式で設定すると正常に動作しました。
正しい例
{
"response": {
"status": "在庫あり",
"delivery_date": "明日",
"stock_count": 15
}
}
3. 指示テキストと例
AIが いつ、どのように ツールを使うべきかを指示します。
今回試した範囲では、デフォルトツールの記述に合わせて <message> タグ を使うことで、回答の安定性が高まりました。
指示テキスト
顧客から商品の在庫状況について質問された場合に、このツールを使用して在庫を確認してください。ツールを呼び出す前に、必ず顧客がどの商品について尋ねているか(product_name)を特定してください。
例1 正常系
Good example for in-stock product:
<message>
お調べしたところ、ノートパソコンは在庫がございます。明日のお届けが可能となっております。
</message>
例2 商品名が分からない場合
Example for missing product name:
<message>
どの商品の在庫を確認いたしましょうか?商品名をお知らせください。
</message>

最後に、ロケールを日本語 ja_JP に設定してAIエージェントを保存します。

Connectフロー
今回利用するコンタクトフローはシンプルです。
「顧客の入力を取得する」 ブロックを配置し、作成したAIエージェントを指定するだけです。

動作確認
実際に、AIエージェントの挙動をテストしてみます。
パターン1 ストレートに在庫を聞く
- Customer: ノートパソコンの在庫はありますか?
- BOT: お調べしたところ、ノートパソコンは在庫がございます。現在15台の在庫があり、明日のお届けが可能となっております。他にご質問はございますか?
AIが顧客の発話から 「ノートパソコン」 を抽出してツールを実行し、返却されたJSONデータの内容をもとに自然な接客表現へ変換して回答してくれました。
パターン2 商品名を言わずに聞く
- Customer: 在庫確認をお願いします。
- BOT: どの商品の在庫状況をお調べいたしましょうか。商品名をお知らせいただけますでしょうか。
入力スキーマで product_name を必須にし、指示テキストでも 「特定してから呼び出す」 と定義したことで、必要情報が不足している場合はツールを実行せず、適切に聞き返す動作になりました。
パターン3 別の商品名で試す
- Customer: 消しゴムはあと何個残ってますか?
- BOT: お調べしたところ、消しゴムは在庫がございます。現在15個の在庫があり、明日のお届けが可能となっております。他にご質問はございますか?
「消しゴム」と聞かれても、Constant タイプのツールは固定値を返すため、その値を使って一貫した回答が生成されました。
どの入力に対しても同じ値を返すという、モックならではの挙動を確認できます。
まとめ
Amazon Connect AIエージェントで Constant タイプのツールを利用することで、バックエンドAPIの開発完了を待たずに、AI側のプロンプト調整や対話フローの検証を先に進められました。
今回試してみて、重要だと感じたポイントは以下の3つです。
- 出力スキーマは
responseを最上位キーにした形式で定義する必要がある - 入力スキーマの必須項目と指示テキストを組み合わせることで、情報不足時の聞き返しをコントロールできる
- Examples では
<message>タグを使うと回答が安定しやすい
フロント側の対話設計とバックエンドのAPI開発を並行して進めたい場合に、Constant タイプのツールは有効だと感じました。
AIエージェントのモック検証を進める際の選択肢として活用できそうです。






