LLMを活用したAlexaエクスペリエンスを作成するための新しい開発者ツール

Mark Yoshitake Oct 16, 2023
Share:
Smart Home Skills Alexa Skills Smart Home API
Blog_Header_Post_Img

※ このブログは「New developer tools to build LLM-powered experiences with Alexa」の翻訳です。紹介している機能は日本語に対応していない場合があります。

このたびAmazonでは、音声対話に特化して最適化された大規模言語モデル(LLM)を活用した次世代のAlexa(英語)のプレビューを発表しました。このマイルストーンにより、Alexaとの対話がもっと自然でわかりやすく、人との会話にますます近いものになると確信しています。

これまで同様、開発者の皆様には、このロードマップに共に参加し、共通のユーザーに向けた新しいアンビエントエクスペリエンスの定義・開発をご支援いただければさいわいです。今回公開された新しいツールでは、生成AIの進歩を取り入れて、Alexaを使った開発の簡素化と迅速化を実現しています。これらのツールを使用すると、リアルタイムデータにアクセスしたり、生成AIによる高度な没入型ゲームを楽しんだり、各種タスク(レストランの予約、話題のニュース記事の簡潔な要約の取得など)を実行したりといったユーザーエクスペリエンスを作成できるようになります。 

コンテンツやAPIをAlexaのLLMと統合することで、Alexa搭載デバイス向けの会話型エクスペリエンスを作成できます。別の方法として、任意のLLMと統合することもできます。また、直感的なスマートホーム制御を構築するためのツールも、根本から簡素化されています。どちらの方法を選択しても、複雑なコードの記述や特定の対話モデルのトレーニングを行うことなく、Alexaを使用して開発を進めることができます。

開発者はビルド時に、スキルマニフェスト、API仕様、コンテンツソース、自然言語の説明を提供します。Alexaは実行時に、適切なプロバイダーを特定し、API呼び出しをオーケストレートして、ユーザーコンテキスト、デバイスコンテキスト、メモリ(会話履歴、イベントタイムラインなど)に基づいてコンテンツを取得します。

AlexaのLLMを使用した開発:概念的なアーキテクチャ

ユーザーリクエストやデバイス操作(タッチなど)が発生するたびに、Alexaは一連のアクションをオーケストレートし、AlexaのLLMと連携してプロンプトを作成して、タスクが完了するまで繰り返し呼び出しを行います。Alexaは、LLMの予測に基づいてAPIやアクションを実行する前に、メモリ、コンテキスト、ユーザー設定など、追加のシグナルやデータを使用してプロンプトを強化します。

APIをAlexaのLLMに接続する

APIをAlexaのLLMと統合するには、 1)APIのエンドポイントと定義、2)API・ビジネスロジックに関する自然言語のアノテーションと説明、3)APIを呼び出すタイミングに関するCXの例を、すべて提供します。この新しい統合モデルを使用すると、スキルをまたぐマルチターンの会話にユーザーが参加できるエクスペリエンスを作成できます。たとえば、旅行の計画を立てているユーザーが、同じ会話の中で、1年のうち訪れるのに最適な時期、見どころ、ホテルの予約についてたずねたとします。このタスクを実行するためには、提供されたAPIの定義と説明に基づいて、関連するAPIが呼び出されます。Alexaは自然言語推論の中間ステップをオーケストレートしてチェーン化することで、複雑なタスクをより細かく管理しやすいステップに分解し、ユーザーへの応答を作成します。Alexaでは、音声対話でユーザーが求めるものに合わせて、こうした複雑なタスクをリアルタイムで完了できます。

また、LLMベースのエクスペリエンスを作成するにあたり、設定フィールドの数を増やしてスキルマニフェストも強化しました。

modelFacingNameフィールドとmodelFacingDescriptionフィールドは、Alexaスキルが提供する機能を把握するためにモデルによって使用されます。actionProviderは、新しいタイプの統合を有効にして、APIをAlexaと統合します。

Copied to clipboard
{
    "manifest": {
        "modelFacingName": "Restaurant Reservations",
        "modelFacingDescription": "Use this to book restaurant reservations",
        "publishingInformation": {
          // same as before
        },
        "apis": {
            "actionProvider": {
                "endpoint": { 
                    "uri": "arn:aws:lambda:us-east-1:452493640596:function:restaurantReservationsHandler"
                }
            }
        }
    }
}

開発者がAPI仕様とロジックをより簡単に作成・管理できるように、TypeScriptをはじめとする最も一般的なインターフェース言語のSDKを使用したAPI宣言がサポートされます。

Copied to clipboard
@Service
export class RestaurantReservationService {
  @Description("Use this method to find restaurants by the zipCode")
  public findRestaurants(zipCode: string) : Promise<Restaurant> {
    // restaurant search logic
  }
  
  @Description("Use this to reserve a restaurant, confirm with the user before reserving")
  public reserveRestaurant(restaurant: Restaurant, partySize: number, date: string): Promise<string> {
    // reservation logic 
  }
}

@Description("Restaurant schema")
export interface Restaurant {
    restaurantId: string;
    name: string;
    address: string;
    address2: string;
    city: string;
    state: string;
    country: string;
}

コンテンツをAlexaのLLMに接続する

また、コンテンツ主導型のアンビエントエクスペリエンスを作成して、5億台を超えるAlexa搭載デバイスに配信することもできます。製品マニュアルやウェブサイトなどの非構造化データや、既存のデータベースの構造化データを使用して、ユーザーがプライムビデオで最適な番組を見つけたり、収益レポートの概要を取得したり、熟練のシェフのレシピにアクセスしたりできるようにすることが可能です。これらのエクスペリエンスは検索拡張生成などの技術を利用するため、コアとなるLLMモデルをデータでトレーニングする必要はありません。

コンテンツを統合するには、1)コンテンツに関する短い自然言語の説明(アメニティやゲストサービスに関するFAQなど)、2)サポートの対象とするユースケースに関する説明、3)非構造化コンテンツまたは構造化データをすべて含むコンテンツ仕様を作成し、新しいツールを使用して取り込みます。これらのツールにはベクターデータベースのマネージドインスタンスが含まれているため、独自のサービスをプロビジョニングして管理する必要がなくなります。ユーザーがコンテンツに関連する情報を要求すると、Alexaはコンテンツストアを検索し、最も関連性の高い情報を使用して応答を作成します。

Copied to clipboard

{
    "manifest": {
        "modelFacingName": "Food Recipes",
        "modelFacingDescription": "Use this to find food recipes.",
        "publishingInformation": {
          // same as before
        },
        "apis": {
            "contentProvider": {
                "sources": [
                    {
                        "location": "skillpackage://content/food-recipes.pdf"
                    }
                ]
            }
        }
    }
}

独自のLLMをAlexaのデバイスやエクスペリエンスに接続する

これに加えて、開発者側で既に独自のLLMを専用に構築している場合や、Amazon Bedrockなどのサービスで提供されるLLMを活用している場合もあるかと思います。感情豊かな音声やアンビエントな視覚要素によって実現したLLMベースのエクスペリエンスをAlexaデバイスに配信したい場合は、新しいツールを使用して、Alexaスキルを1つ以上の任意のLLMと統合することができます。サードパーティのLLMを統合する場合に必要となる作業は、Alexaで実行できるマルチモーダルエクスペリエンスをすべてサポートするシンプルなSDKを使用して、自動音声認識(ASR)または発話テキストと統合することだけです。

開発者の皆様からどのようなエクスペリエンスが作り出されるのか、今から楽しみでなりません。また、架空のキャラクターとの会話、独自の曲の作成、Alexa搭載デバイスでのシングルおよびマルチエージェント駆動型ゲームのプレイ、車両の機能の詳細確認といったさまざまなユーザー動作を実現しているCharacter.AI、Splash、BMW、Volley、Sleep Jar、Voice Apps、OpenTableといった企業からも、今後さらなるエクスペリエンスが提供される予定です。

スマートホーム開発者向けの差別化されたサービスを活用する

現在、Alexaには4億台を超えるスマートホームデバイスが接続されています。ユーザーの生活をさらに快適なものにするため、あらゆるブランドのデバイスがシームレスに連携するスマートホームエクスペリエンスを作成できるようにするうえで、パートナーの存在は非常に重要です。Amazonでは生成AIを活用することによって、ユーザーが柔軟で自然な会話を通じてスマートホームデバイスを制御し、さまざまなアクションを実行できるようにします。AlexaのLLMは、製品独自の差別化された機能にマッピングされます。広範にわたるユースケースをカバーするために、開発者には一般的な統合(オン/オフ、開始/停止アクションなど)と、より複雑な統合(動的照明、掃除機のカスタム清掃操作に関連するアクションなど)の両方を実現できる方法が提供されます。

一般的なユースケースでAlexaとデバイスを統合するためのシンプルながら効果的な方法としては、既存のAlexa.RangeControllerやAlexa.ModeControllerといったスマートホームの汎用コントローラーインターフェースを引き続き使用できますが、アクションコントローラーと呼ばれる新しいインターフェースは、これをさらに拡張したものです。アクションコントローラーは、デバイスメーカー側で単純なアクション、ターゲット、状態をモデル化してデバイスを制御できるようにすることで、ユーザーとデバイスとの自然な対話を可能にします。具体的には、AlexaのLLMを使用しているユーザーが「Alexa, the floor is dirty(アレクサ、床が汚れてる)」と言った場合、Alexaは意図されたアクションが「vacuum(掃除機を掛ける)」であると推測し、状態を「start(開始)」にすることができるようになります。 アクションコントローラーを使用すると、デバイスメーカーはサポートする新しいアクションとターゲットを簡単にモデル化できます。アクションコントローラーを使用するには、1)サポートするデバイスアクション(「clean(清掃する)」、「mop(モップを掛ける)」、「dock(ドックに戻す)」など)の定義、2)ターゲット(「kitchen(キッチン)」、「living room(リビング)」など)のリストの定義、3)サポートする状態の選択(start(開始)/stop(停止)/pause(一時停止)/resume(再開)から1つ以上のアクションを選択)、4)必要なディレクティブと状態更新(リクエストされたアクションがAlexaからスキルに送信された場合)の実装を行う必要があります。

以下は、アクションコントローラーインスタンスを使用してモデル化された多機能デバイスの例です。この例では、デバイスは清掃タイプのアクション(「vacuum(掃除機を掛ける)」など)、ターゲット区域のリスト、デバイスアクションの状態(start(開始)/stop(停止)/pause(一時停止)/resume(再開))をサポートしています。

Copied to clipboard
{ "capabilities": [{
    "type": "AlexaInterface",
    "interface": "Alexa.ActionController",
    "instance": "Robot.Clean",
    "configuration": {
        "supportedActions": [{ //An identifier device maker defined for the actions reported.
            "id": "Vacuum-device-maker-defined-identifier",
            "friendlyNames": [{
                "@type": "asset",
                "value": {
                  "assetId": "Alexa.Actions.Vacuum"
        }}]}],
        "supportedStates": [
          "START",
          "STOP",
          "PAUSE",
          "RESUME"
        ],
        "target": {
          "supportedTargets": [{ //A list of identifiers device maker defined for the targets reported
             "id": "space-id-1",
             "friendlyNames": [
              {
                "@type": "asset",
                "value": {
                "assetId": "Alexa.Space.Kitchen"
}}]}]}}}]}

以下は、開始アクションでデバイスメーカーが受け取るディレクティブの例です。

Copied to clipboard
{
  "directive": {
  "header": {
  "namespace": "Alexa.ActionController",
  "instance": "Robot.Clean",
  "name": "PerformAction",
  "messageId": "message id",
  }
  "payload": {
  "actionId": "Vacuum-device-maker-defined-identifier",
  "targetIds": ["<the target identifier>"],
  "state": "START"
  }}}

単純なアクション以外のデバイス制御や、より複雑なデバイスの状態・パラメーターが必要な場合は、新しく導入されたダイナミックコントローラーを使用できます。このツールによって、開発者はカスタムインターフェースを定義できます。ダイナミックコントローラーを使用すると、ユーザーはより多様な発話を使用して、これまで以上に会話らしくスマートホームデバイスの独自機能を制御できるようになります。たとえば、ユーザーが照明ソリューションプロバイダーにリクエストを行う際、これまでは事前定義されたオプションのリストからしか選択ができませんでしたが、今後は「make the lights like a misty forest(照明を霧がかった森のようにして)」のようにリクエストできるようになります。ダイナミックコントローラーを使用することで、スマートホーム開発者は、事前定義されたAPIに依存したり、複雑な音声モデルを作成したりすることなく、独自のデバイス機能をAlexaと簡単に統合できます。

ダイナミックコントローラーを使用するには、1)独自のデバイス機能を説明するペイロードの定義、2)Alexaに送信するディレクティブの定義、3)サポートの対象とするユースケースに関する説明の追加を行う必要があります。これ以外の処理はAlexaのLLMが行います。ダイナミックコントローラーでは、独自の機能をユーザーが活用できるように、より多様な発話(スマート照明ソリューションの場合は「make the lights like a misty forest(照明を霧がかった森のようにして)」など)がサポートされます。

以下は、スマート照明デバイスメーカーがダイナミックコントローラーを使用して、「make the lights like a misty forest(照明を霧がかった森のようにして)」というユーザーの発話に対応する例です。 LLMは、霧がかった森の色、対応するエネルギーレベル、適切な機能インターフェース(CreateTemporaryDynamicScene)を発話から推測して、該当するスキルにディレクティブを送信します。ディレクティブにはデバイスエンドポイントとリクエストされたペイロードが含まれます。これには、ユーザーの動的照明のシーンを設定するための最適な方法が示されています。

Copied to clipboard
// Lighting partner Skill Manifest and API spec
{
"name": "Smart Lighting Partner name",
"namespace": "Smart Lighting Partner Skill name",
"publishingInformation": {
  "locales": {
  "en-US": {
  "name": "",
  "summary": "This skill allows users to control and interact with Smart light devices",
  "description": "This skill has basic and advanced smart devices control features.",
  "examplePhrases": [
  "Alexa, set the lights to a Misty forest.",
   "Alexa, make my lights look like a Sunset"
  ],
  "keywords": ["Smart Home", "Lights", "Smart Devices"]
  }},
  "category": "SMART_HOME"
  },
"capabilities": [// Dynamic Controller capabilities
{
  "name": "CreateTemporaryDynamicScene",
  "description": "Creates a custom dynamic lighting scene based on the desired color palette",
  "payload": {
  "name": "primaryColor",
  "name": "secondaryColor",
  "name": "tertiaryColor",
  "name": "energyLevel"
  }}]}

以下は、デバイスメーカーがダイナミックコントローラーに対して返す必要がある検出応答の例です。この例では、スマート照明デバイスメーカーの一時的な動的シーン操作の作成がデバイスでサポートされています。

Copied to clipboard
{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "Unique identifier, preferably a version 4 UUID"
    },
    "payload": {
      "endpoints": [{
        "endpointId": "office_endpoint_id",
        "manufacturerName": "Lighting manufacturer name",
        "description": "A lighting product",
        "friendlyName": "Office Light",
        "displayCategories": ["Light"],
        "capabilities": [{
            "type": "AlexaSkillInterface",
            "interface": "Lighting partner Skill",
            "configurations": {
              "operations": ["CreateTemporaryDynamicScene"]
}}]}]}}}

GE Cync、GE Appliances、Philips Hue、iRobot、Roborock、Xiaomiは、今後数か月以内に、アクションコントローラーとダイナミックコントローラーを使用した新機能をリリースし、アップデートを配布する予定です。Amazonではこれからさらに多くのブランドと連携して、優れたユーザーエクスペリエンスを実現できることを楽しみにしています。

新しいツールの詳細については、Alexa開発者ポータルをご参照ください。最新情報を受け取るにはサインアップしてください。サインアップすると、新しいツールが利用可能になった場合にいち早くアクセスできるようになります。スマートホーム開発者の皆様は、プレビューの参加希望フォームからサインアップしてください。

詳細情報

AlexaのLLMとの統合
一般的なデバイスアクションの統合
独自のデバイス機能の統合

詳細情報

AlexaのLLMとの統合
一般的なデバイスアクションの統合
独自のデバイス機能の統合