構造
概要
Cognigy.AIは、スケーラブルなマイクロサービス構造をベースとした、最新のクラウドネイティブなソフトウェアソリューションです。この最新の構造により、1つのソフトウェア製品に複数のサーバーの計算能力を活用することができます。Cognigy.AIは、1つの実行ファイルを1つのサーバーで実行する代わりに、30以上の個別の実行ファイルに分割しています。これらの小さな実行可能ファイル(マイクロサービスという名前の由来)は、分離されているにもかかわらず、ネットワーク呼び出しを通じて相互に作用することで、Cognigy.AIという単一のソフトウェアとして機能します。
個々のマイクロサービスは、Kubernetes上でコンテナ化されたアプリケーションとして実行されます。コンテナは、プロセスが互いに分離された状態で実行できる方法であり、最新のソフトウェア製品を依存関係(例えばランタイム環境)と一緒にシッピングする機能を備えています。JavaScriptで書かれたプログラムが正しく機能するには、特定のバージョンのNodeJSランタイムが必要になります。コンテナは、そのような依存関係を実際のアプリケーションと一緒に1つのシッピング可能なユニットにパッケージ化することを可能にします。より一般的なコンテナランタイムと、その他のコンテナ専用ツールのセットの1つがDockerです。
多数の可動部分(前述のマイクロサービス)を管理することは非常に困難であり、コンテナ編成と呼ばれる追加のソフトウェア製品が必要になる。Kubernetesはそのようなコンテナ編成ソフトであり、以下のようなタスクを処理します:
- コンテナをKubernetesクラスタ内の利用可能なサーバーのいずれかに割り当て、個々のハードウェア要件を考慮し、サーバー上の利用可能なハードウェアと照合します。
- コンテナがクラッシュした場合に再起動が必要かどうかを把握します。
- ソフトウェアのアップデート(例えばCognigy.AIの新バージョン)がリリースされた場合、コンテナを新しいバージョンにアップデートします。
- コンテナ化されたプロセスが依然として反応するかどうかを、準備性プローブや可用性プローブを送信してテストします。
- サービスの追加コピーを開始することで、CPU負荷、メモリプロファイル、またはカスタムメトリクスのような負荷指標に従ってマイクロサービスをスケーリングします。
ランタイム & IDE
Cognigy.AI自体は、様々なタイプの機能を提供するソフトウェアです:
- IDE
- ランタイム
Cognigy Insightsも実際にはCognigy.AIの一部ですが、Cognigy.AIのコア製品の基盤を考慮すると、その役割は小さくなります。詳細については、[Insights (Analytics)]のドキュメントをご参照ください。
IDE – バーチャルエージェントの構築
バーチャルエージェントを作成し、Flow(フロー)、Playbooks(プレイブック)、Lexicons(レキシコン)、Intents(インテント)などのすべての機能を使用できる場所です。この部分をIDE(統合開発環境)と呼びます。ソフトウェア開発でよく使われる用語です。バーチャルエージェントの最初のイテレーションが完了したら、バーチャルエージェントを本番環境にデプロイするために、いわゆる Snapshot を作成する必要があります。Snapshot は、バーチャルエージェントを構成するすべてのリソース(例えば、Flows、Lexicons、Intents、および Extensions)を含む、バーチャルエージェントの不変コピーです。Snapshotは2つ目の機能グループへのインタフェースとして機能します: Cognigy.AIランタイム
次の表はIDEを形成する最も関連性の高いマイクロサービスを示しています:
マイクロサービス名 | 役割 |
service-api | HTTP コールによって Cognigy.AI を完全に制御する RESTful API。OpenAPI仕様の完全なドキュメントが利用可能です。認証と認可も実装しています。 シングルサインオン統合によるアイデンティティプロバイダとの統合。 |
service-ui | Cognigy.AIのWebGUIの提供。 |
service-webchat | 常に最新バージョンのCognigy WebchatWidgetが埋め込まれたデモウェブサイトを提供。ラピッドプロトタイピングのための場所として機能します。 |
service-resources | Cognigy.AI内の全てのリソース(Flow、Endpoint、Playbookなど)を管理し、他のマイクロサービスが呼び出せる内部APIを提供。 |
service-custom-modules | アップロードされたCognigy Extensionsを処理し、使用できるように準備します。 |
service-security | 権限を含むユーザー、組織、ロールを管理。 |
service-task-manager | Cognigy.AI内部で長期間実行される処理を管理します。これらの処理には、Cognigy Snapshotsの作成、ダウンロード用アセットのパッケージ化、知識型AIソリューションの一部としてアップロードされたドキュメントの処理などが含まれます。Cognigy.AIのユーザーインタフェイスにはタスクマネージャーが表示され、長時間実行されている処理がすべて表示されます。 |
ランタイム – バーチャルエージェントの実行
ランタイムはパフォーマンスとスループットのために最適化されています。ランタイムに属する全てのマイクロサービスは定期的にストレステストされており、水平方向にスケールすることが可能です。Cognigy.AIのランタイムは高度に分散されたシステムであり、必要に応じて膨大なハードウェアを活用することができます。Cognigy.AIのリリースごとにパフォーマンステストを実施し、新バージョンが少なくとも前バージョンと同程度に高速でスケーラブルであることを保証します。
次の表は、主要なランタイムマイクロサービスの役割を説明しています:
マイクロサービス名 | 役割 |
service-endpoint | チャネル固有の受信リクエストを内部表現に変換し、Transformerを実行し、関連情報をカウントして外部チャネルに応答を返します。 |
service-app-session-manager | Cognigy xAppセッションが接続するためのAPIとして動作します。xAppの関連イベントをエンドユーザーデバイスに配信し、xAppのデータ入力に反応します。 |
service-ai | 実際のユーザーメッセージを処理し、NLUマイクロサービスと連携し、外部システムへのExtensionやHTTP Requestを待機し、Cognigyスクリプトを処理します。これがCognigy.AIの主軸です。 |
service-nlp-ner | ユーザーの発話からシステムスロットを検出します – これらは日付、メール、通貨、数字などです。 |
service-nlp-matcher | レキシコンを使用して、ユーザーの発話からレキシコンスロットを検出します。 |
service-nlp-classifier-score | 当社のプラットフォーム内でお客様がトレーニングできるIntentモデルに基づいて、Intent認識を実装します。異なる言語(ドイツ語、英語、韓国語、日本語、標準語、XX語)用のバリエーションがあります。 |
service-nlp-embedding | 当社のNLUシステムの一部であり、お客様が当社プラットフォームの一部として作成できるIntentモデルを駆動する、当社の事前トレーニングされた単語埋め込みモデルを実行します。言語依存の埋め込みサービスもご利用いただけます。 |
service-http & execution | HTTP Request Flow Nodeが使用されている場合、外部のサードパーティシステムにHTTPリクエストを送信し、Extensionsの一部としてお客様のFlow Nodeを実行します。 |
service-profiles | コンタクトプロフィールを管理し、Cognigy Script経由でアクセスする機能を提供。 |
service-function-scheduler & function-execution | Cognigy 関数でお客様のソースコードをスケジューリングし、実行します。 |
service-handover | Ring Central Engageのようなサードパーティハンドオーバープロバイダのインタフェースを実装します。トークが「ハンドオーバー」中に、エンドユーザーのメッセージを外部プロバイダーに転送します。 |