はじめに

Dialogflow CXではAIチャットボットをGUIベースで簡単に作成することができます。
このサービスには「TESTING & DEPLOYMENT」というGit連携やバージョン管理をしたり、またCI/CDを実行するための機能があります。
チャットボットを作成する記事はよく見かけますが、これらの機能を試している記事は少ないため備忘録として触ってみた記録を残しておきます!

注意点

Google Cloudのプロジェクト作成やGitHubのリポジトリ作成、Dialogflow CXを使ってチャットボットを作る過程などは記載しておりません。また今回の機能に関連する知識の補足は行いますが、Dialogflow CXの基本的な概念などは触れておりません。
事前準備として検証用に以下のリソースを作成しています。

  • Google Cloudプロジェクト:dialogflow-test-project
  • エージェント:dialogflowcx-test-agent

今回試すこと

「TESTING & DEPLOYMENT」タブにある以下の機能をそれぞれ触ってみます。

  • Git
  • Versions
  • Environments
  • Experiments
  • CI/CD

Git

こちらは機能名通りですが、Dialogflow CXのコンソールからGitHubのリポジトリに接続することで構築したAIエージェントを設定ファイルとして保存することができます。
エージェント自体は設定をエクスポートする機能が備わっており、RawデータもしくはディレクトリとJSONファイルの階層を含むzipファイルとしてCloud Storageやローカル端末にダウンロードすることが可能です。

ディレクトリ構造や形式は以下のドキュメントをご参照ください。

 

Add Git Connection

ここからはコンソールからGitHubリポジトリへ接続するまでの手順を記載しています。
「Git」タブの「Create new」を押下し、表示されたフォームにて名称やGitHubリポジトリのリンク、ブランチ名、アクセストークンを設定します。

各項目の設定内容は以下の表を参照。

項目名 設定値 備考
Display name 任意の値
(コンソールに表示する名称)
Git repository https://ホスト名/リポジトリ名.git リポジトリの「Code」で取得できるHTTPSのURL。
Git branch 任意のリポジトリのブランチ名
Access token projects/*/secrets/*/versions/* 「Settings >Developer Settings > Personal access tokens」で作成したアクセストークン

GitHubリポジトリへのURLは「Code」から取得します。

アクセスキーの設定についてはいくつかの手順が必要になります。

  1. GitHubアカウントでアクセストークンを発行する。
  2. アクセストークンをSecret Managerに登録する。
  3. Secret Managerに登録したSecretまでのパスを入力する。

GitHub上でアクセストークンは以下の場所から作成することができます。
アカウントアイコン > Settings > Developer settings > Personal access tokens

詳細な作成手順や解説は公式ドキュメントをご参照ください。

コマンド ラインまたは API を使用して GitHub への認証を行うときに、パスワードの代わりに personal access token を使用することができます。

アクセストークンの発行が終わったら、シークレットキーを管理できるサービスのSecret Mangerにて登録します。

登録したSecretのパスをバージョン番号まで含めて指定された形式でAdd Git Connectionのフォームに入力し、「Connect」を押下します。

ブランチを選択した後、コミットメッセージを入力して「Push」を押下すると対象リポジトリのブランチに反映されます。

任意のブランチにプッシュすることでプルリクエストを作成すること自体は可能です。またDialogflow CXのコンソール画面から新しくブランチを作成することもできるようでした。
エージェントの設定値を設定ファイルとして内外へ共有したり、同じ構成のエージェントを複製したい場合には使えると思います。

Git連携によるエージェントのリストア

GitHubにプッシュした設定ファイルを使って、エージェントをリストアすることも可能です。

これにより、リポジトリにプッシュした時点のエージェント設定を使ってリストア(復元)を容易に行うことができます。
なお、Git連携によって別の新しいエージェントや別プロジェクトのエージェントにもリストアすることができました。

コードのプッシュとリストアについて、公式ドキュメントでは本番環境エージェントといくつかのエージェント開発用ブランチを使い分けるという方法が示されており、ある程度ブランチ戦略を立てながら開発を進めることができるようです。

詳しくは以下のドキュメントをご確認ください。

 

Versions

こちらは名前の通り、エージェントの設定のバージョン管理を行うことができる機能です。
Versionsの画面にて「Create」ボタンを押下すると、「Display name」と「description」を登録する画面が表示されます。
保存が完了すると以下のように「Version ID」が付与されて一覧で閲覧できるようになります。

この機能では3つの操作を行うことができます。

  • Load to draft(デフォルト環境の下書きに読み込む)
  • Compare versions(バージョンの比較)
  • Delete version(バージョンの削除)

バージョン削除はそのまま削除するだけですので、1つ目と2つ目の機能について触れようと思います。

Load to draft

保存している特定のフローのバージョンをデフォルト環境の下書きに読み込むことが可能です。これによりインテントやエンティティなどのエージェントレベルのリソースを含むエージェント内の複数のリソースを更新できるようです。
下書きとして読み込む際には既存のリソースを上書きして良いか聞かれるため、問題なければチェックをいれて読み込みます。

エージェントの中で複数のフローを使い分けて、かつバージョン管理していきたい場合に有用な機能かと思います。

Compare versions

特定のフローに関してバージョンごとに差分を表示することができる機能です。変更箇所をハイライトで表示してくれるため、どの設定をどの値に変更したかが視覚的に一目瞭然です。
GitHubのように見慣れたレイアウトで差分を表示してくれるため使い勝手は良いかなと思います。

Environments

こちらはプロジェクト内でエージェントアプリが使う環境を分けることができる機能です。環境を分けておくと例えば、テストエージェントを実行する際やチャットアプリとの統合機能で選択した環境にトラフィックを飛ばすことが可能になります。
特にチャットアプリを統合する場合は開発環境を分けておくことで、開発が終わればトラフィックを変更し、手戻りがあった場合にトラフィックを戻したりなど切り替えが容易になるかと思います。

環境を作成する方法もシンプルで、環境名と説明、適用するフローとそのバージョンを選択して保存をするだけです。
エージェントのフローを含めた動作全体で環境を保存しておきたい場合はこちらの機能で作成しておきましょう。フローのバージョンは後から変更可能です。

Experiments

この機能では特定フローのバージョンとトラフィックの割り当てを設定することでA/B/nテストを行うことができます。
主な用途としてはコントロールバージョン(本番)とバリアントバージョン(変更)をパフォーマンスを比較し、指標に則った測定を行うために使用します。

取得できる指標としては以下が表示されるようです。

指標 説明

Contained

他のメトリックをトリガーせずににセッションが終了した数。

Live Agent Handoff Rate

ライブエージェントへの引き継ぎ率。

Callback Rate

コールバック率。ユーザーがセッション終了後に再開された割合を示します。

Abandoned Rate

放棄されたセッション率。ユーザーが途中でセッションを放棄した割合を示します。

Session End Rate

セッション終了率。ユーザーがセッションを終了した割合を示します。

Total No Match Count

マッチしなかった総数。

Total Turn Count

総ターン数。ユーザーとシステムの対話回数を示します。
※ターンはシステムがユーザーの入力に対して反応する回数。
Average Turn Count ターンの平均回数。

詳細については公式ドキュメントをご参照ください。

また各指標が表示された時の画面イメージはGoogle Cloud Skills Boostにて詳細に解説されておりますので、そちらもご確認ください。

Qwiklabs offre des environnements Google Cloud réels qui permettent aux développeurs et aux professionnels de l'informatique de découvrir des plates-formes et logiciels cloud, parmi lesquel Firebase et Kubernetes.

CI/CD

こちらはDialogflow CXの環境に設定したテストケースのデータを使い、自動的かつ継続的にテストを行うための機能です。
実行されるタイミングは「1日に1回」と「新しいバージョンを展開した場合」の2種類があるようです。

継続的テストを行うためには以下の手順が必要です。

  1. テストケースを作成する
  2. 継続的テストを実行する環境と検証するテストケースを選択する
  3. 継続的デプロイメントテストを有効にする(バージョン展開時に自動的にテストを行う場合)

テストケースの作成

テストケースを作成するためにまず、「Test Agent」の機能で実際に対話を行います。
その後、テストケースを保存するアイコンを押下し、テストケースの名称などメタデータを入力して保存します。

保存したテストケースは「TEST & FEEDBACK」のTest casesから一覧表示や実行が手動実行が可能です。

実行環境とテストケースの選択

継続的テストに登録するためには、以下の画像の通り環境を選択してセレクトボックスから検証するテストケースを追加します。

1日1回テストケースが検証され、Resultsタブから結果を確認することができます。

継続的デプロイメントテストの有効化

新しいバージョンをデプロイ時に自動的にテストを行いたい場合はSettingsタブから「Continuous deployment」を有効化します。

設定を変えたり新しいバージョンを作成した場合など、何度もエージェントの回答テストを行うのはかなりの作業コストがかかりますので、自動でテストを行えるのは非常に有用な機能だと思います。

さいごに

いかがだったでしょうか。Dialogflow CXの「TESTING & DEPLOYMENT」には、Git連携、エージェントのバージョン管理、環境分離、CI/CDなど、開発から運用までを効率的に進めるための強力なツールが揃っています。これらの機能を活用することで開発プロセスがスムーズに進むだけでなく、エージェントの更新やデプロイも自動化され安定した運用が可能にな流と思います。

複数人での開発や大規模なプロジェクトにおいて非常に役立つため、ぜひ試してみてください。