プラグインを使ったチャットボットのためのカスタムスキルの作成
チャットボット用のカスタムスキル作成
会話型AIの分野は急速に進化し、ChatGPT、Claude、BARDなどの大規模な言語モデルが印象的な自然言語能力を示しています。チャットボットの能力が向上するにつれて、企業は顧客サポート、文書生成、市場調査などに活用したいと考えています。しかし、すぐに使えるチャットボットには、業界特有の知識、ビジネスシステムとの統合、応答のパーソナライズなどの制限があります。
すぐに使えるチャットボットは、特定の機能を持つ能力を追加することで強化することができます。これらの能力は、問題を解決するために連携して動作する専門のタスクを実行することができます。これらの能力は、プラグインとして実装することができ、LLMの助けを借りて呼び出すことができます。プラグインフレームワークを採用することで、基本モデルを活用して必要なプラグインを正しい順序で実行することができます。
これらのプラグインは、データベース、コンテンツ管理システム、API駆動型サービスなどの外部データソースのシームレスな統合だけでなく、業界固有のQA、ユーザーコンテキスト、感情分析などの専門モジュールの追加を容易にします。適切なプラグインフレームワークとサポートするプラグインビルダーツールを使用することで、複数のスキルを組み合わせて強力なカスタマイズ可能な会話アプリケーションを構築することができます。
適切なアーキテクチャにより、プラグインはAIエンジンを抽象化することでチャットボットの投資を将来に渡って有効活用することができます。より良い基礎モデルを使用しながらコアをアップグレードすることで、既に開発されたスキルを維持することができます。このようにして、企業は会話型AIへの投資対効果を最大化することができます。AIの進化に伴い、基礎モデルをプラットフォームとして扱うことで、堅牢なカスタム体験を提供することができます。プラグインビルダーフレームワークの構築方法を見てみましょう。
- 集団ベーストレーニング(PBT)ハイパーパラメータのチューニング
- 「グラフとネットワーク上の表現学習」
- 「Saturn 大規模な言語モデルおよびその他のニューラルネットワークのトレーニングへの新しいアプローチ」
プラグインビルダーフレームワークの構築における考慮事項
チャットボットのコアは、BERT、GPT-3などの大規模な言語モデルによってベースの自然言語処理と推論能力を提供します。一方、プラグインは追加のスキルや外部データソースの統合、応答の編集などを提供します。プラグインフレームワークは、チャットボットのコアとプラグインの間の仲介役となります。プラグインがアプリケーションの機能を拡張するために登録および相互作用するためのインターフェースを提供します。
フレームワークの主な責任は次のとおりです:
- プラグインが
register_plugin(PluginClass)
のようなシンプルなAPIを介して登録できるようにする - アクティブなプラグインとそれらが提供するスキルの登録を管理する
- ユーザーの入力をプラグインパイプラインを介してルーティングし、事前/事後処理を収集する
- デフォルトの処理を上書きするために特定の入力に対して中断プラグインを呼び出す
- Q&A、推奨、検索などの複数のスキルを組み合わせる管理
- プラグインとチャットボットのコアをカプセル化し、アップグレードが互いに影響しないようにする
プラグインは、フレームワークのさまざまな拡張ポイントにフックすることができます。これにより、プラグインはモジュール式かつカスタマイズ可能な方法でチャットボットを拡張することができます。フレームワークは複雑さを抽象化します。
プラグインの定義
以下は、プラグインクラスのサンプル設計です。プラグインの呼び出しはLLMによって制御されるため、正しい入力形式とプラグインの属性を記述する必要があります。テンプレートとなるベースのプラグインクラスが定義され、プラグインはサブクラスとなります。以下のサンプルでは、「天気プラグイン」を使用しています。バージョンリリースステータス(実験的、ベータなど)など、サブクラスまたはベースクラスの属性としてキャプチャすることもできます。
プラグインが定義されたら、フレームワークはスキルとその提供元プラグインのレジストリを維持する必要があります。チャットボットでサポートされるすべてのプラグインが登録できるようにプラグインレジストリを定義する必要があります。実験的なプラグインは別のフォルダに配置するか、プラグインに関連付けられたメタデータで識別することができます。
次のステップは、プラグインの初期化と登録です。以下のサンプルコードは、これを実現する方法を示しています。
実行パイプライン
適切なプラグインを呼び出すためには、考慮が必要です。正しく行われると、フレームワークを拡張可能にすることができます。アプローチとして、実行プロセスを異なる段階からなるパイプラインとして設計する方法があります。プラグインフレームワーク内の実行フローの異なる段階を次に示します。
- 事前処理:プラグインは、ユーザーの入力をコアに送る前に修正や強化を行うことができます。正規化、スペル修正などに役立ちます。
- 処理:このステージは、大規模な言語モデルの助けを借りて駆動およびオーケストレーションされることができます。このフェーズでは、ユーザーの入力の意図を抽出し、適切なプラグインを実行して回答を取得します。これは、前のイテレーションからの応答を使用して、ユーザーの入力を完全に回答できるかどうかを判断する反復的なアプローチになります。回答の欠落部分を埋めるために最も適切なプラグインを呼び出すことができるようになるまで、別のイテレーションが行われます。
- 事後処理:プラグインは、ユーザーに返す前にチャットボットの応答を修正することができます。これにより、変動性を追加することができます。
- 中断:通常の実行パイプラインは、特定のタイプの入力に対してヒューマンまたは他のプラグインによって引き継がれることがあります。会話の進行が適切でなく、ユーザーのトーンが否定的に傾いている場合に役立ちます。
パイプラインは以下のようになることがあります。
以下は、プラグインフレームワークの実行パイプラインの基礎を構築するために採用できるサンプルコードです。
無限ループにつながる可能性のあるシナリオを処理することが重要です。特定のユーザークエリに対して一定数のプラグインのみを利用できるようにするために、追加のセーフガードを追加することもできます。これにより、チャットボットは回答のない複雑なクエリから保護されるだけでなく、パフォーマンスも向上します。
大規模な言語モデルクラスで呼び出されるメソッドは、プロンプトエンジニアリング技術を採用することで実装することができます。たとえば、select_best_plugin
メソッドを実装する際には、プラグインのリストとその説明、例、ユーザーの入力、正しいプロンプト指示を渡すオプションがあります。これにより、ユーザーの入力に最も適したプラグインを選択することができます。
回答が完全かどうかを確認し、ユーザークエリに完全に回答するために異なるプラグインを反復的に活用することは、思考チェーンのプロンプティング技術に基づいています。
プラグインの例
カレンダーAPIの統合は、チャットボットの主な制約の1つであるユーザーカレンダーの非表示を解消します。GoogleやOffice365などのカレンダープラットフォーム向けにチャットボット用のプラグインを開発することで、生産性を向上させる機能を提供できます。従業員は予定の空き状況を確認したり、会議を自動的に予約したり、リマインダーを受け取ったり、出張計画を管理したりできます。これにより、企業の状況、営業チーム、エグゼクティブアシスタント、施設管理者など、効果的なシステム管理を必要とする人々にとって非常に価値があります。
チャットボットがユーザーのカレンダーと対話する場合の例です。
ユーザー: “今日のスケジュールは?”
フレームワークはカレンダープラグインを呼び出します。
プラグイン: GoogleカレンダーAPIからユーザーのカレンダーイベントを取得し、”今日は午後2時から3時までのチームミーティングがあり、夜7時に友達とのディナーが予定されています。”と返します。
ユーザー: “来週の水曜日の午前10時にJohnとのミーティングをスケジュールして。”
フレームワークは新しいユーザーの入力でカレンダープラグインを呼び出します。
プラグイン: カレンダーAPIを使用して予定の空き状況を確認し、予約を確認し、”水曜日の午前10時にあなたとJohnのミーティングが予定されています。”と返します。
タスクとドメイン固有のQ&Aプラグインは、汎用的なチャットボットの欠点である主要な技術と用語の詳細な知識の不足に対処します。保険、医療、法律、金融などの分野は、複雑なビジネスモデルや規制があります。これらの分野の専門知識を持つQ&Aプラグインを開発することで、高度な人間のトレーニングに比べて廉価な代替手段を提供できます。専門家はクライアントに24時間365日対応できます。FAQと書面ルートを組み合わせることによって、チャットボットは顧客サポートのためのドメインアドバイザーになります。これにより、専門知識に依存する企業はより良いパーソナルサービスを提供できます。
チャットボットがドメイン固有の質問に答える場合のサンプル会話です。
ユーザー: “保険請求の手続きはどうすればいいですか?”
フレームワークは保険のQ&Aプラグインに入力を渡します。
プラグイン: 知識ベースで質問を検索して回答を見つけ、”保険請求の手続きは以下のようになります…”と返します。
プラグインを使用すると、チャットボットは外部の知識ベースにアクセスし、情報のほぼ無制限のストレージを作成できます。さらに高度なモデルでも、トレーニングデータに基づいて知識に制約があります。企業は、会社のウィキや金融データフィード、公開の知識グラフなどの外部の知識ベースにプラグインを構築することで、世界の膨大な知識にアクセスできるようになります。これにより、データの壁を乗り越え、チャットボットをより高度なものにすることができます。
チャットボットが高度な構造化データと連携する場合のサンプル会話です。
ユーザー: “カナダの人口は何人ですか?”
フレームワークは知識ベースプラグインに質問を渡します。
プラグイン: データベースで事実を調べ、”カナダの人口は約3800万人です。”と返します。
以下は、業界/ドメイン固有のQ&A機能を提供するプラグインのサンプルコードです。
プラグインフレームワークの追加の利点
ドメイン知識や他のスキルを持つチャットボットを可能にする明らかな利点に加えて、以下の利点も実現できます。
- プラグインはAPIを介してカレンダーやIoTシステム、トランザクションレコード、リアルタイムフィードなどのライブデータにアクセスできるようになります。
- プラグインは、チャットボットの応答にさらに変動性、個性、コンテキストの意識を追加できます。
- この記事で説明したようなプラグインフレームワークは、Q&A、推奨、検索などの複数のスキルを組み合わせて迅速な実験を容易にします。
- 適切に実装されたプラグインは、データをローカルで処理し、第三者に送信されるユーザーデータを匿名化することで、ユーザープライバシーを維持します。
- プラグインは、チャットボットのベースモデルから切り離された特定のスキルと知識をカプセル化するため、新しいチャットボットの世代へのアップグレードをより簡単に行うことができます。
- すでに構築されたプラグインは、改良されたベースの大規模言語モデルと組み合わせることで「スマート」になり、作業を節約できます。
結論
チャットボットの基本的な大規模言語モデルの機能を拡張することで、ドメイン知識の追加、外部APIの統合、およびカスタマイズされた応答を行うことにより、堅牢なチャットボットプラグインフレームワークは柔軟性と拡張性を提供する大きな利点をもたらします。剛直で一枚岩のフレームワークに制約されるのではなく、プラグインを使用することで新しいスキルを開放できます。適切なアーキテクチャを使用することが、これらのスキルを適切に組織化する鍵です。よく設計されたプラグイン構築フレームワークは、中間層として機能し、プラグインがチャットボットの基本モデルの独立性を損なうことなく組み込まれる拡張ポイントを提供します。これにより、時間の経過とともに安定した改善が可能になり、迅速なイテレーションもサポートされます。新しいより高度なチャットボットモデルが必然的に出現するにつれて、既存のプラグインは次世代の基本モデルとシームレスに統合できます。アップグレードされたスキルに蓄積されたビジネス価値が失われずに保持されます。これにより、堅牢なプラグインフレームワークの設計は、本番のチャットボット展開における重要なベストプラクティスとなります。本記事で概説された原則のいくつかを採用することにより、企業はチャットボットを現在と将来のニーズに効果的に適応させることができます。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles