2019 年 3 月 の会話 AI アップデート


執筆者: Yochay Kiriaty (Principal Program Manager, Azure Platform)

このポストは、2019 3 5 日に投稿された Conversational AI updates for March 2019 の翻訳です。

 

 Bot Framework SDK バージョン 4.3 がリリースされ、会話 AI の追加アップデートが実施されました。

LINE チャンネルの追加

Microsoft Bot Framework では、さまざまなユーザーとつながれます。SkypeMicrosoft TeamsSlackFacebookメッセンジャーTelegramKik などのメッセージング アプリをはじめ、 13 のチャンネルがあらかじめ用意されています。今回開発者コミュニティからの強い要望に応えて、新たに LINE チャンネルを追加しました。LINE は日本、台湾、タイ、インドネシアなどの国々で数億人のユーザーに利用されている人気メッセージング アプリです。

既存のボットを新しいチャンネルで動作させるには、「ボットを LINE に接続する」を参照してください。また、Azure Portal から設定することもできます。[Channels] ブレードに移動して LINE アイコンをクリックし、メッセージに従って設定してください。

Channels blade in the Microsoft Azure portal

SDK 4.3

バージョン 4.3 では、主にメッセージとアクティビティの処理を改善し、シンプルにしました。Bot Framework Activity スキーマ (英語) は、ボットのインタラクション モデルの定義に使用する基盤スキーマです。バージョン 4.3 ではシンプルな On* メソッドが公開され、アクティビティがシンプルに扱えるようになりました。 C#では、アクティビティ処理の改善に加えて、MVC がサポートされ、標準の ASP.NET Core アプリケーションと API コントローラーが使えるようになりました。多数のバグ (英語) を修正したほか、LUIS と QnA Maker の統合を進め、技術上の問題を解決しました。言語、プロンプト、ダイアログ、コネクタ、アダプターも更新されています。

アクティビティのメッセージ処理シンプル化

今回のリリースで新たに、ActivityHandler というクラスで受信メッセージを処理できるようになりました。ActivityHandler がアクティビティを受信するとBot Framework Activity スキーマにしたがって定義し、アクティビティの種類やその他のプロパティに基づいてアクティビティの処理を最低 1 つ以上のハンドラー関数に委任します。ActivityHandler には、以下のようなメソッドがあります。

  • OnMessage – すべての受信メッセージの処理
  • OnMembersAdded – 追加されたメンバーのメッセージの処理
  • OnEvent – 一般的なイベントのアクティビティを処理

メソッドの詳細は、ActivityHandler.ts (英語) (JavaScript) や ActivityHandler.cs (英語) (.NET) をご覧ください。

ActivityHandler を使って、受信メッセージやアプリケーション イベント、さまざまな会話更新イベントを処理できます。これによって、ユーザーにあいさつしたり歓迎したりという、よくある動作が簡単に作成できるでしょう。

このクラスは、イベント駆動型で着信アクティビティを処理するための拡張可能な基盤を提供します。

このクラスは、イベント ドリブンの受信アクティビティ処理ベースを拡張することができます。JavaScript TypeScript では、サンプルのように、ActivityHandler クラスをメインのアクティビティ ハンドラーとして使うことができます。また、そこからサブクラスを派生させて主要機能を拡張することもできます。

JavaScript の簡単なサンプル コードがこちらです。

// Import the class from botbuilder sdk
const { ActivityHandler } = require('botbuilder');
// Create the bot “controller” object
const bot = new ActivityHandler();
server.post('/api/messages', (req, res) => {
      adapter.processActivity(req, res, async (context) => {
          // Route incoming activities to the ActivityHandler via the run() method
          await bot.run(context);
      });
});
// bind a handler for all incoming activities of type message
bot.onMessage(async (context, next) => {
      // do stuff
      await context.sendActivity(`Echo: ${ context.activity.text }`);
      // proceed with further processing
      await next();
});
// say hello when new members join
bot.onMembersAdded(async(context, next) => {
await context.sendActivity('Hello! I am a bot!');
await next();
});

.NET 開発者向け Web API の統合

Bot Frameworkチームのコアとなるミッションの1つは、.NETとJSの実装を限りなく同じにすることです。この方針によって、.NET ActivityHandler.cs (英語) の実装には特定の言語と同じ機能が使えるようになっています。とはいえ、ASP.NET Core はボット開発者がかんたんに統合できる Web API インフラストラクチャを豊富に提供しています。そのため、アクティビティの処理の改善に加えて、C# Web API のサポートを追加し、標準の ASP.NET Core アプリケーションと APIコントローラを使えるようにしました。

以下は ASP.NET Web API コントローラの簡単なサンプル コードです。

[Route("api/messages")]
     [ApiController]
     public class BotController : ControllerBase
     {
         private IBotFrameworkHttpAdapter _adapter;
         private IBot _bot;

        public BotController(IBotFrameworkHttpAdapter adapter, IBot bot)
         {
             _adapter = adapter;
             _bot = bot;
         }

        [HttpPost]
         public async Task PostAsync()
         {
             // Delegate the processing of the HTTP POST to the adapter.
             // The adapter will invoke the bot.
             await _adapter.ProcessAsync(Request, Response, _bot);
         }
     }

: _adapter.ProcesAsync メソッドに渡す _bot が実際のボットで、前の Java Script のサンプルと同じく、アダプターから送信されるすべてのアクティビティを処理します。

QnA Maker と Language Understanding

QnA Maker アクティブ ラーニング (英語) が追加されました。この機能は、ナレッジ ベースを実際の使い方に基づいて改善するのに役立ちます。あらゆる質問のバリエーションを識別しておすすめの回答に誘導し、ユーザーがナレッジ ベースに簡単に追加できるようにします。

QnA Maker Active Learning

ユーザーの質問に対して QnA Makerが信頼度差があまりない N 個の回答を返すと、Active Learning が起動します。QnA Maker は、ユーザーのフィードバックに基づいてかわりの質問を表示します。

QnA Maker のアクティブ ラーニングのしくみと使い方については、「アクティブ ラーニングを使用してナレッジ ベースを改善する」をご覧ください。

テンプレートと仮想アシスタント ソリューション アクセラレータ

これらにより、当社の顧客およびパートナーは、通常は可能ではないと思われる高度で変革的な会話型体験の提供を加速することができ、高品質の体験を提供するために多大な努力を必要とします。

テンプレートやソリューション アクセラレータは、会話 AI、音声認識、その他さまざまな Azure プラットフォームを大きく成長させるしくみを提供します。それによって、これまで不可能、あるいは手間がかかりすぎると思われていた革新的で高度な会話エクスペリエンスを、お客様やパートナー様の手で実現することができます。

今回の最新リリースでは、テンプレートと仮想アシスタント ソリューションが大幅に更新されています。主な変更内容はリリース ノート (英語) でご確認ください。

また、エンタープライズ テンプレートの JavaScript (Typescript) バージョン (英語) Yeoman ジェネレーターの提供を開始しました。 仮想アシスタントに相当するものです。テンプレートで作成されたすべてのボットにコード化された単体テストを追加し、ダイアログの単体テストを自動化したほか、テレメトリ機能の強化とそれに関連する PowerBI ダッシュボードの改良を行いました。

さらに、スキルをすばやく作成して仮想アシスタントに追加できるテンプレートなど、仮想アシスタントとスキルの機能を幅広く強化しました。また、プロアクティブなエクスペリエンスを新たにサポートして、アシスタントやスキルから積極的にユーザーに働きかけたり、非同期操作を長時間実行したりできるようにしました。

今回のリリースでは、メール、カレンダー、To Do など、生産性向上スキルの機能強化も幅広く行ったほか、気になる目的地のスキルに FourSquare のサポートが追加され、WebChat テストのエクスペリエンスを強化しました。

Web Chat 4.3

Web Chat は、Web サイトやモバイル アプリのボットにメッセージング インターフェイスを追加する際によく使われるコンポーネントです。Web Chat 4.3 リリースでは、アクセシビリティに関する問題を解消したほか、ネットワーク接続状態がよくないユーザーへの接続状況表示方法の改善など、多く寄せられていたご要望にお応えしました。

Chat box in Web Chat 4.3

Web Chat 4.3 をお試しになる場合は、GitHub のガイド (英語)サンプル コード (英語) を参照してください。

さあ始めましょう

マイクロソフトでは引き続き、会話 AI ツールとフレームワークの改良を進めていきます。皆様がどのような会話エクスペリエンスを構築されるのか楽しみにしています。今すぐ始めましょう!

 

Comments (0)

Skip to main content