ボットが私たちを助けてくれるでしょう

ボットが私たちを助けてくれるでしょう

1 年前、私たちの大切な人事部門から、新入社員が会社に適応するのに役立つチャット ボットを作成してほしいという依頼がありました。

弊社は自社製品の開発は行っておりませんが、お客様に包括的な開発サービスを提供しています。本稿では、社内プロジェクトについてお話しします。このプロジェクトのお客様は、第三者企業ではなく、弊社の人事部です。限られた人員、リソース、時間の中で、主な課題はプロジェクトを期限通りに完了し、製品をリリースすることです。

まず、解決する必要のあるタスクについて説明しましょう。

開発者は内向的な人が多く、話すのが苦手です。そのため、電子チャットで質問を書く方がはるかに簡単です。ボットを使えば、誰に質問するか、誰に電話するか、どこに行くか、そして一般的に、どこで情報を探すか、それが関連性があるかどうかなどを考える必要はありません。

2 番目の問題は情報です。情報は大量に存在し、さまざまな情報源から提供されており、常に入手できるとは限らず、常に補足と更新が必要です。

同社には約 500 人の従業員がおり、ロシア国内だけでなく海外のさまざまなオフィス、タイムゾーン、都市に勤務しているため、通常、多くの質問が寄せられます。そのため、従業員から最も頻繁に寄せられる質問に関連する人事担当者の作業負荷を軽減することも、もう XNUMX つの課題です。

また、新入社員の会社への到着、新入社員のマネージャーやメンターへのメッセージの送信、新入社員がうまく適応するために合格しなければならないコースやテストに関する自動リマインダーの送信などのプロセスを自動化する必要がありました。

ビジネス要件に基づいて、技術要件が形成されました。

ボットは Skype ベースで動作する必要があるため (歴史的に、会社が Skype を使用していたため)、Azure 上のサービスが選択されました。

アクセスを制限するために、Skype 認証メカニズムを使い始めました。
テキスト認識には ParlAI ライブラリが使用されました。

セットアップ、トレーニング、デバッグ、メールセットアップなどのタスクには、管理 Web ポータルも必要です。

ボットが私たちを助けてくれるでしょう

プロジェクトの作業過程で、私たちは多くの問題と困難に直面しました。

例えば、Azureアカウントに技術的な問題がありました。Microsoftは、サービス内の技術的な問題のため、私たちのサブスクリプションを有効化しませんでした。約2ヶ月間、私たちは何もできず、最終的にMicrosoftサポートは諦めてパートナーに連絡し、パートナーが全てをセットアップし、アカウントを発行してくれました。

最も困難だったのはプロジェクトの開始段階で、何を使用するか、アーキテクチャはどうなるか、データをどのようにどこに保存するか、システムのコンポーネントとモジュールがどのように相互作用するかを選択する必要がありました。

私たちの場合、プロジェクト立ち上げ時によくある問題は、人員配置によって複雑化しました。私たちの事業の特性として、商用プロジェクトとは異なり、社内プロジェクトは必要な分野の知識が不足している開発者によって行われることが多く、彼らは単に運命のいたずらでベンチに座り、次の大きなクールな商用プロジェクトを待っているだけなのです。当然のことながら、このような状況ではモチベーションの維持も非常に困難でした。生産性は低下し、チームはしばしば怠惰になり、結果として、担当者を説得(動機付け)するか、交代させる必要がありました。開発者を変更する際には、トレーニングを実施し、知識を伝達し、実際にはプロジェクトを最初からやり直す必要がありました。新しい開発者はそれぞれ独自の視点でアーキテクチャを見て、以前の開発者の決定や他人のコードについて叱責しました。書き直しはゼロからのスタートでした。

この状態が約6ヶ月続きました。私たちはただ時間をつぶし、コードをリファクタリングするだけで、新しいことは何も書いていませんでした。

また、社内プロジェクトには通常、ドキュメントがほとんど存在せず、どの時点で何を行う必要があるのか​​、そして現在の優先事項は何かを把握することが困難でした。常設チームを編成し、プロセスを確立し、少なくとも3ヶ月かけて計画と評価を実施する必要がありました。しかし、商業プロジェクトではないプロジェクトでは、工数を最小限に抑えながら、外部顧客向けと同等の成果を上げるにはどうすれば良いのでしょうか?

プロジェクト開発に参加し、プロジェクトに精通し、積極的に取り組む意欲のあるリソースプールを特定しました。プロジェクトへの人員配置スケジュールを作成し、作業内容を評価・調整し、主要プロジェクト間の「空き時間」に投入しました。4ヶ月で、アプリケーションのプロトタイプが完成しました。

それでは、ボットの機能、アーキテクチャ、技術的ソリューションについてさらに詳しく説明しましょう。

人事部門の主な要件の一つは、ユーザーが入力したテキストを認識し、質問に正しく回答することでした。例えば、「休暇に行きたい」「休暇に行きたい」「休暇に行きたい」などと書いても、ボットは理解し、適切な回答をします。あるいは、従業員の椅子が突然壊れて、「椅子が壊れた」「椅子が割れた」「椅子の背もたれが外れた」などと書きたい場合も、適切なトレーニングを行えば、ボットはそのような要求を認識できます。テキスト認識の品質は当然のことながら、ボットのトレーニングに依存します。これについては後ほど説明します。

次の要件であり、機能の一部となるのは、ボットの対話システムです。ボットが対話を行い、現在の質問の文脈を理解できるシステムが開発されました。ボットは、質問に対する説明を補足する質問をしたり、事前にトレーニングしておけば会話を継続したりできます。Skypeは、対話を継続するための選択肢をユーザーに提示するシンプルなメニュー項目をサポートしています。また、対話中に突然話題から外れた質問をしたくなった場合でも、ボットはそれを理解できます。

このボットは、ユーザーの個人データに基づいて、様々な情報を送信できます。例えば、位置情報などです。例えば、トイレを探している場合、トイレまでの道順を示すオフィスの地図が表示されます。表示される地図は、従業員がどのオフィスにいるかに応じて自動的に選択されます。

最も重要な任務の一つは、ユーザーの個人情報を保護することです。ボットが扱う機密データに、誰もがアクセスできるようにすることはできません。そのため、ボットには認証が不可欠です。ボットは、対話を行う前にユーザーに認証を求めます。これは、従業員がボットに初めてアクセスする際に行われます。認証が完了すると、ユーザーは適切なページにリダイレクトされ、そこでトークンを受け取ります。トークンはSkypeメッセージに挿入されます。認証が成功すると、ボットとの通信を開始できます。

ボットが私たちを助けてくれるでしょう

認証は、Skypeポータル認証サービス、企業ネットワーク、およびLDAPを介して行われます。したがって、認証は企業ネットワーク内のユーザーに関する最新のデータに依存します。

ボットの開発中に、人事部門がボットを迅速にデバッグできるシステムをポータル機能に組み込む必要があることに気づきました。そこで、人事部門がユーザーがボットを操作中に記録したエラーを確認し、再トレーニングで解決したり、開発者に任せたりできるポータルページを追加しました。

ポータル上でボットを直接トレーニングする機能は、当初から含まれていませんでした。開発プロセスの中で、人事担当者がボットを使用する際に最も頻繁に行うタスクはボットのトレーニングであることに気づきました。ボットの追加トレーニングのためにテキストファイルを開発者に送信することは、全く許容されません。これは時間がかかりすぎるだけでなく、多くのエラーや問題を引き起こします。

ボットが私たちを助けてくれるでしょう

ポータル上に、ユーザーフレンドリーなボットトレーニングのためのUIを作成しました。これにより、人事担当者は現在のボットトレーニングを確認し、さらにトレーニングを進め、現在のトレーニングを調整することができます。トレーニングはツリー構造で表示され、ノード(枝)はボットとの対話の続きを表します。シンプルな質疑応答から、内容の濃い対話まで、人事担当者のニーズに合わせて自由に作成できます。

ソリューション アーキテクチャについて簡単に説明します。

ボットが私たちを助けてくれるでしょう

ソリューションアーキテクチャはモジュール型です。以下の様々なタスクを担うサービスが含まれています。
• Azure 上の Skype ボット サービス - ユーザーからのリクエストを受け付け、処理します。これは、リクエストを受け付け、初期処理を行うという非常にシンプルなサービスです。
• 管理ポータルは、ポータルの設定とボット自体のためのWebインターフェースを提供するサービスです。ボットは常に最初にポータルにアクセスし、ポータルはリクエストに対する次の処理方法を決定します。
• 認可サービス — ボットと管理ポータルに認証メカニズムを提供します。認可はOAuth2プロトコルを介して行われます。認可が成功すると、このサービスはユーザーの有効なデータに基づいて企業ネットワーク内で認可を実行し、データの非同期化に関連するエラーを制御できます。
• AIテキスト認識モジュール。Pythonで記述されており、テキスト認識にはParlAIフレームワークを使用しています。少なくとも現在の実装では、ニューラルネットワークです。質問の理解にはtfDiffアルゴリズムを使用しています。このモジュールは、通信と学習のためのAPIを提供しています。

最後に、チャットボットの開発は私たちにとって初めての経験であり、システムを可能な限りシンプルにしつつも、機能的で、人件費を最小限に抑えられるよう努めました。非常に興味深い製品ができたと思っています。独自のトレーニングシステム、エラーログ、通知送信機能を備えており、他のメッセンジャーとの連携も可能です。

出所: habr.com

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster