人工知能を深く理解したいですか?ビデオチュートリアル「Microsoft Cognitive Services and Text Analysis API:RobotでAIセンチメント分析の実装」をご覧ください。
スマートアシスタントの世界は、siri、cortana、alexa、okgoogle、facebook m、bixbyなどの日ごとに変化しています。ただし、多くの開発者は、独自のAIアシスタントを構築することが実際には非常に簡単であることに気付いていません。ニーズ、IoTデバイス、カスタムAPIに合わせてカスタマイズでき、可能性は無限です。
注:この記事は、API.AIの最新の変更を反映するために2017年に更新されました。
以前、2016年に人工知能を構築するための5つの簡単な方法に関するガイドを書きました。これは、AIアシスタントを構築するためのいくつかの簡単なオプションをカバーしています。この記事では、特定のサービスであるAPI.AIに焦点を当てたいと考えています。これにより、完全に機能するAIアシスタントの構築が非常にシンプルで、初期設定はほとんどありません。
この記事は、api.aiを使用してシンプルなパーソナルアシスタントを実行するのに役立つように設計された一連の記事の1つです。
api.aiは始めます
次に、かなり簡単な登録フォームに移動します。名前、電子メール、パスワードを入力し、[登録]をクリックします。別のログイン資格情報を回避したい人のために、右側のボタンを使用してGitHubまたはGoogleアカウントにサインアップすることもできます。
api.aiがGoogleに買収されたため、Googleアカウントのみでログインするように移行されました。したがって、API.aiを初めて使用する場合は、Googleアカウントでログインする必要があります。
次の画面で「許可」をクリックして、GoogleアカウントにアクセスするためのAPI.AI許可を付与します。
登録後、API.AIインターフェイスに直接移動し、仮想AIアシスタントを作成できます。特定のスキルを作成して教える各アシスタントは、API.AIの「エージェント」と呼ばれます。したがって、最初に、左上隅の[エージェントの作成]ボタンをクリックして、最初のエージェントを作成できます。
プロキシ設定を入力したら、プロキシ名の横にある「保存」を選択してすべてを保存します。 テストコンソール
結果の右側にスクロールすると、API.aiがリクエストの説明方法について詳細に表示されます(上記のスクリーンショットに示すように)。その下には、「show json」と呼ばれるボタンがあります。それをクリックして、APIがアプリケーションにそのような応答を返す方法を確認します。
api.aiはJSONビューアーを開き、これに類似したJSON応答を表示します。
{ "id": "21345678", "timestamp": "2017-05-12T08:04:49.031Z", "lang": "en", "result": { "source": "agent", "resolvedQuery": "How are you?", "action": "input.unknown", "actionIncomplete": false, "parameters": {}, "contexts": [], "metadata": { "intentId": "6320071", "webhookUsed": "false", "webhookForSlotFillingUsed": "false", "intentName": "Default Fallback Intent" }, "fulfillment": { "speech": "Sorry, can you say that again?", "messages": [ { "type": 0, "speech": "Sorry, could you say that again?" } ] }, "score": 1 }, "status": { "code": 200, "errorType": "success" }, "sessionId": "243c" }
ご覧のとおり...あなたのエージェントは応答方法を知りません!現時点では、実際には「スマート」AIではありません。スマートパーツを追加する必要があります。アクションフィールドのinput.nknown値は、どのように進行するかがわからないことを示しています。上記では、「ごめんなさい、もう一度言うことができますか?」というメッセージを返します。これはデフォルトのフォールバックの1つです。それはそれが理解していないことを人間に伝えるのではありませんが、それは再びそれを言うように繰り返し彼らに求めます...それは理想的ではありません、私はむしろロボットが理解していないときにより明確に示すものにそれを変えたいと思います。 このようなことについてもうるさいことで、ここで言っていることを変更したい場合は、デフォルトのバックインセントアイテムをクリックすることで、意図ページで見つけることができます。
しばらく前にapi.aiを使用したことがある人(または実行する)には、実際に箱から出してより多くの機能を提供することが期待されるかもしれません。以前は、「スティーブジョブズは誰ですか?」などのクエリに答えることができました。今はそうではありません!アクションを実行して情報を取得するには、サードパーティAPIとカスタム統合を追加する必要があります。 API.AIは、文の分析と解釈を提供します。
ボットに少しのインテリジェンス(「チャット」機能を表示できるデフォルト機能を追加できます。これは、「お元気ですか?」を含む一般的な質問に対するさまざまな答えを提供します。ただし、これはデフォルトでは有効になりません。それを有効にするには、左側のチャットメニュー項目に移動し、[有効]をクリックします。
有効になった場合、下にスクロールすると、さまざまな一般的な小さなチャットフレーズが表示されます。 「挨拶/別れ」セクションを見つけて、それをクリックして展開します。 「お元気ですか?」に別の返信を追加し、右上隅に「保存」をクリックします。フレーズを追加した後、「挨拶/別れ」セクションの隣にある割合の数が増加し、カスタマイズしたチャットボットの数が表示されます。
それから、テストコンソールに行って「お元気ですか?」ともう一度尋ねると、入力した返信の1つに答えてください。
それが正しく応答しない場合は、試行する前に「保存」をクリックしたかどうかを確認してください!自動的に保存されません。
少なくともいくつかのチャット要素が実行されているので、エージェントが自分のWebアプリケーションインターフェイスに統合する準備ができました。これを行うには、APIキーを取得してプロキシにリモートにアクセスする必要があります。
必要なAPIキーは、プロキシ設定ページにあります。それを見つけるには、エージェント名の横にあるギアアイコンをクリックします。表示されるページに、クライアントアクセストークンを安全な場所にコピーして貼り付けます。これは、API.aiサービスにクエリを発行するために使用する必要があるものです。
あなたがそれを試したいなら、私はここでバリーを走らせます。楽しめ!
JavaScript
を使用してapi.aiに接続しますアプリケーションは次のとおりです
入力フィールドに書かれたコマンドを受け入れ、Enterを押すときにそれを送信します。
次の変数は次のとおりです
<input>
要素が保存されます。 <button>
要素が保存されます。 これらのコード行で、ユーザーが入力フィールドに入る時間を見つけます。これが発生したら、send()関数を実行してデータをapi.aiに送信します:
{ "id": "21345678", "timestamp": "2017-05-12T08:04:49.031Z", "lang": "en", "result": { "source": "agent", "resolvedQuery": "How are you?", "action": "input.unknown", "actionIncomplete": false, "parameters": {}, "contexts": [], "metadata": { "intentId": "6320071", "webhookUsed": "false", "webhookForSlotFillingUsed": "false", "intentName": "Default Fallback Intent" }, "fulfillment": { "speech": "Sorry, can you say that again?", "messages": [ { "type": 0, "speech": "Sorry, could you say that again?" } ] }, "score": 1 }, "status": { "code": 200, "errorType": "success" }, "sessionId": "243c" }
次に、ユーザーがレコードボタンをクリックしてアプリに聞くように依頼したかどうかを観察します(または、聞いている場合は一時停止します)。クリックすると、switchecognition()関数を実行して録音と録音を切り替えます。
var accessToken = "YOURACCESSTOKEN", baseUrl = "https://api.api.ai/v1/", $speechInput, $recBtn, recognition, messageRecording = "正在录制...", messageCouldntHear = "我没有听清,你能再说一遍吗?", messageInternalError = "哦,不,发生了内部服务器错误", messageSorry = "对不起,我还没有答案。";
HTML5の音声認識APIを使用して
$speechInput.keypress(function(event) { if (event.which == 13) { event.preventDefault(); send(); } });
私たちのstartrecognition()関数は次のようになります:
これは、HTML5音声認識APIを実行する方法です。それはすべて、WebKitspeech Recognition()の関数を使用しています。何が起こっているのかについてのヒントは次のとおりです。
stopecognition()関数ははるかに単純です。それはあなたの認識を止め、それをnullに設定します。次に、ボタンを更新して、録音していないことを示します。
{ "id": "21345678", "timestamp": "2017-05-12T08:04:49.031Z", "lang": "en", "result": { "source": "agent", "resolvedQuery": "How are you?", "action": "input.unknown", "actionIncomplete": false, "parameters": {}, "contexts": [], "metadata": { "intentId": "6320071", "webhookUsed": "false", "webhookForSlotFillingUsed": "false", "intentName": "Default Fallback Intent" }, "fulfillment": { "speech": "Sorry, can you say that again?", "messages": [ { "type": 0, "speech": "Sorry, could you say that again?" } ] }, "score": 1 }, "status": { "code": 200, "errorType": "success" }, "sessionId": "243c" }
var accessToken = "YOURACCESSTOKEN", baseUrl = "https://api.api.ai/v1/", $speechInput, $recBtn, recognition, messageRecording = "正在录制...", messageCouldntHear = "我没有听清,你能再说一遍吗?", messageInternalError = "哦,不,发生了内部服务器错误", messageSorry = "对不起,我还没有答案。";
これは、
$speechInput.keypress(function(event) { if (event.which == 13) { event.preventDefault(); send(); } });
のjqueryを使用した典型的なajax postリクエストです。 JSONデータをそれに送信し、JSONデータを取得することを期待しています。また、API.AIのAPIキーに2つのヘッダーを設定する必要があります。フォーマット{q:text、lang: "en"}でapi.aiにデータを送信し、応答を待ちます。 応答を受け取ると、freaRESponse()を実行します。この関数では、JSON文字列をフォーマットして、Webアプリケーションのデバッグセクションに配置され、API.AI応答のspeechセクションを取り出します。これにより、アシスタントのテキスト応答が提供されます。 response()およびdebugRespond()を介して各メッセージを表示します
debugRespond()関数はJSON応答フィールドにテキストを配置します:
$recBtn.on("click", function(event) { switchRecognition(); });
応答()関数にはより多くの手順があります:
$(".debug__btn").on("click", function() { $(this).next().toggleClass("is-active"); return false; });
最初に、応答値が空であるかどうかを確認します。はいの場合、API.AIが有効な回答を返さないため、質問に対する答えがわからないことを示すように設定します。
{ "id": "21345678", "timestamp": "2017-05-12T08:04:49.031Z", "lang": "en", "result": { "source": "agent", "resolvedQuery": "How are you?", "action": "input.unknown", "actionIncomplete": false, "parameters": {}, "contexts": [], "metadata": { "intentId": "6320071", "webhookUsed": "false", "webhookForSlotFillingUsed": "false", "intentName": "Default Fallback Intent" }, "fulfillment": { "speech": "Sorry, can you say that again?", "messages": [ { "type": 0, "speech": "Sorry, could you say that again?" } ] }, "score": 1 }, "status": { "code": 200, "errorType": "success" }, "sessionId": "243c" }
出力するメッセージがあり、録音されているメッセージではない場合、Web Voice APIを使用して、SpeechSynthesisteutteranceオブジェクトを使用してメッセージを声に出して読み取ります。 VoiceuriとLangが設定されていない場合、ブラウザのデフォルトの音声はドイツ語であることがわかりました!これにより、スピーチを変更するまで理解することが困難になります。実際にメッセージを言うには、window.speechsynthesis.speak(msg)関数を使用します。
var accessToken = "YOURACCESSTOKEN", baseUrl = "https://api.api.ai/v1/", $speechInput, $recBtn, recognition, messageRecording = "正在录制...", messageCouldntHear = "我没有听清,你能再说一遍吗?", messageInternalError = "哦,不,发生了内部服务器错误", messageSorry = "对不起,我还没有答案。";
注:「録音...」というテキストを言わないことが重要です。これを行うと、マイクが音声を拾い、記録されたクエリに追加します。
最後に、応答ボックスを表示して、そのテキストを追加して、ユーザーも読むことができるようにします。Webインターフェイスをホスト
$speechInput.keypress(function(event) { if (event.which == 13) { event.preventDefault(); send(); } });
https://www.php.cn/link/e35284b696864480f02bc12997b8b49でもホストされています。グリッチホスティングは完全に無料です!これは素晴らしいサービスであり、試してみることを強くお勧めします。
このプロジェクトを大きくしたい場合は、無料のSSL/TLS証明書を取得するために暗号化を使用するか、Webホストから証明書を購入することを検討してください。 githubリポジトリから私のスタイルを使用してWebアプリケーションを実行すると、次のようになります。「話す」をクリックして、「お元気ですか?」 (ボタンをクリックすると、Chromeがマイクにアクセスできるようにする必要がある場合があります。明らかに、これはページをHTTPSとして提供しない限り毎回発生します。
それはこのように視覚的に応答します(声を出して読んでください。これはスクリーンショットに表示するのが難しいです):
右下隅のボタンをクリックして、JSON応答を表示することもできます。
主に「はっきりと聞こえなかった、もう一度言うことができますか?」というメッセージを受け取っているように見える場合は、ブラウザのマイク許可を確認してください。ページをローカルにロードすると(たとえば、アドレスバーがファイル:///で始まる場合)、Chromeはマイクへのアクセスをまったく提供していないようであるため、とにかくこのエラーになります。どこかでホストする必要があります。 (上記のglitch.comを使用してみてください。)
個人的には、このような小さな話のデフォルトのフレーズのいくつかが好きではありません:
以前に見た設定でこれらのフレーズの多くをカスタマイズしました。たとえば、リストのこの小さなチャットステートメントを非常に奇妙に見つけたので、このようにカスタマイズすることにしました。
だから、独自のチャットボットの作成を開始してください!ユニークにして楽しんでください!
結論
api.aiロボットの開発を続けたいですか?やるべきこと:これは私がSitePointで書いたシリーズ全体です!
api.aiを使用して自分のパーソナルアシスタントを構築した場合、あなたの考えを聞きたいです!あなたもそれをバリーと名付けましたか?どのような問題を設定しましたか?以下のコメントで私に知らせてください、または@thatpatrickguy経由でTwitterで私に連絡してください。
感情的なツールを使用して、人間の要素をAIに注入します。 Microsoft認知サービスとテキスト分析APIに関するビデオチュートリアルをご覧ください。 API.ai
を使用して、独自のAIアシスタントを構築するためのFAQ(FAQ)api.aiは、Slack、Facebook Messenger、Skypeなどの多くの人気のあるプラットフォームに統合されたサポートを提供します。 API.AI SDKとAPIを使用して、AIアシスタントをこれらのプラットフォームと統合できます。このプロセスには、Webhookの設定とAPI.AIコンソールでのプラットフォーム設定の構成が含まれます。
はい、API.AIでは、AIアシスタントの動作をカスタマイズできます。 AIアシスタントがユーザー入力にどのように応答するかを決定するカスタムインテントとエンティティを定義できます。 Fulfillment関数を使用して、特定の意図がトリガーされたときに実行されるカスタムコードを作成することもできます。
AIアシスタントの精度は、トレーニングデータの品質に依存します。意図ごとにさまざまな例フレーズを提供することで、精度を向上させることができます。 API.AIは、ユーザーの相互作用に基づいてモデルを自動的に改善する「機械学習モード」と呼ばれる機能も提供します。
はい、api.aiは複数の言語をサポートしています。さまざまな言語で意図とエンティティを定義することにより、多言語AIアシスタントを構築できます。 API.AIは、ユーザーが入力した言語を自動的に検出します。
API.AIは、AIアシスタントと対話できる組み込みテストコンソールを提供します。ユーザーフレーズを入力して、AIアシスタントがどのように応答するかを確認できます。これにより、開発中にAIアシスタントをテストおよび改善できます。
api.aiはGoogle Cloudの一部であり、その価格は使用状況に基づいています。 1分あたりの特定の数と毎月のリクエストを含む無料のティアがあります。無料層を超えた後、リクエストの数に基づいて支払われます。
はい、API.aiはAndroidおよびiOS用のSDKを提供します。これらのSDKを使用して、AIアシスタントをモバイルアプリケーションと統合できます。
api.aiは、複雑な会話を処理できる「Context」と呼ばれる機能を提供します。コンテキストにより、会話の流れを制御し、意図間の依存関係を管理できます。
はい、API.aiは、ユーザーのインタラクションを分析できる分析機能を提供します。使用統計、意図のパフォーマンス、およびユーザー満足度の評価を表示できます。この情報は、時間の経過とともにAIアシスタントを改善するのに役立ちます。
以上がAPI.AIを使用して独自のAIアシスタントを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。