Terraform で Dialogflow CX エージェントを管理
Google Cloud Japan Team
※この投稿は米国時間 2023 年 1 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。
Dialogflow CX は Google Cloud の優れたツールです。これを使用して、ユーザー リクエストを実用的なデータに変換するために、自然言語理解(NLU)機能を備えた会話エージェントを設計できます。アプリ、ウェブサイト、カスタマー サポート システムに音声エージェントやチャット エージェントを組み込むことで、ユーザーの意向を判断したり、ユーザーとやり取りしたりできるようになります。
すでに Dialogflow CX の使用をご検討いただいているお客様にはご案内していますが、クイックスタートの手順をご用意していますので、ご確認のうえ、ぜひお試しください。この手順では、店舗の場所や営業時間の問い合わせ、シャツの注文に対応するシャツ注文エージェントを構築できます。
クイックスタートの手順を追っているときに、Dialogflow CX のすべてのコンポーネントと設定をコード化することで、エージェントを速やかにスピンアップするとともに、エージェントの構成をプログラムで管理できるようにしたいと思われるかもしれません。実際には、Compute Engine で仮想マシン、GKE で Kubernetes クラスタ、あるいは Pub/Sub でトピックとサブスクリプションを管理するために、インフラストラクチャをコードツールやベスト プラクティスとしてすでに使用されているのではないでしょうか。同じインフラストラクチャを Dialogflow CX エージェントのコード手法として使用できます。その鍵となるのが Terraform と Google Cloud です。
Dialogflow CX 向け Terraform モジュールをサンプルの Terraform + Dialogflow CX 構成ファイルとともに使用して、「シャツ注文エージェントの構築」クイックスタートで説明されている chatbot / エージェントを再現できます。ご自身の Google Cloud アカウントで 1 つのコマンドだけを使用して Dialogflow CX エージェントをスピンアップする手順をぜひ試してみてください。
セットアップ
Dialogflow CX 用のサンプルの Terraform 構成ファイルを実行する前に、以下を行います。
Google Cloud アカウントに登録します。
Dialogflow CX API を有効にします。
Google Cloud CLI をインストールして初期化します。
Terraform をインストールします。
使用方法
ローカルマシンでセットアップを完了したら、すべて構成済みの独自の Dialogflow CX エージェントを数秒でスピンアップする準備は完了です。
CCAI サンプルのリポジトリと cd のクローンを
dialogflow-cx/shirt-order-agent/
ディレクトリに作成します。variables.tf
の値を編集して、Google Cloud プロジェクト ID および目的のリージョンとゾーンを指定します。terraform init
を実行して、Terraform 構成ファイルが含まれるディレクトリを初期化します。すべてをスピンアップするコマンド
terraform apply
を実行します。
terraform apply
を実行して、提案されたプランを確定すると、エージェント、ページ、インテント、フローなどを含む、プロビジョニングされたすべてのコンポーネントに関するメッセージが表示されます。これで、Dialogflow CX でのエージェントのプロビジョニングが完了し、Dialogflow CX コンソールでエージェントの確認とテストを行う準備が整いました。
仕組み
会話エージェントとそのすべてのコンポーネントの定義には、Dialogflow CX 向け Terraform モジュールを使用します。再現したのは、「シャツ注文エージェントの構築」クイックスタートで説明されているエージェントです。
エージェントに関連付けられるエンティティ タイプ、フロー、インテント、ページはすべて Terraform を使用して作成、管理されるので、Terraform 構成ファイルを編集して特定のパラメータを変更し、terraform apply
を実行して、Dialogflow CX コンソールですぐに変更が反映されていることを確認できます。
お気づきかもしれませんが、flows.tf ファイルでは REST API 呼び出しを行う際に、Dialogflow CX 用の Terraform リソースを使用してフローが定義されるのではなく、実際には null_resource
ブロック内の local-exec
コマンドが使用されます。このアプローチが使用されるのは、Terraform がエージェントを作成、管理するのではなく、Dialogflow CX がエージェントの作成時にデフォルトの開始フローを作成するからです。この結果、REST API 呼び出しを使用してデフォルトの開始フローにパッチを適用し、メッセージやルートを変更できるようになります。REST API コマンドのテンプレート化とトリガーには Terraform を使用します。これにより、Dialogflow CX REST API でも使用可能な設定を管理することや、必要に応じてカスタムのコールバックを他の Google Cloud サービスに追加することさえできるようになります。
まとめ
Google Cloud で Terraform を使用し、会話エージェントをコードとして管理できることは有益です。Dialogflow CX のすべてのメリットと Terraform の利便性を得て、ステートフルでバージョン管理しやすい方法ですべてを管理できます。
Terraform で Dialogflow CX エージェントの設定と構成をすべて取得したら、Terraform スクリプトをバージョン管理すること、terraform apply
や terraform destroy
を適宜使用してエージェントのスピンアップや破棄を行うこと、あるいは GCS バックエンドを使用して Google Cloud にリモートの Terraform 状態を保存することさえできるようになります。
Terraform + Dialogflow CX サンプルコードと Dialogflow CX 向け Terraform モジュールをぜひご確認ください。これで、独自の Dialogflow CX エージェントを 1 つのコマンドだけでスピンアップできます。この Terraform サンプルコードが有用であると思われた場合は、GitHub の CCAI サンプルのリポジトリで確認、スター付け、または質問を行ってください。