スキルトレーナー活用のユースケース

Prev Next

Classic/VPC環境で利用できます。

このユースケースでは、NAVERの地理空間検索 APIを活用して様々な業者を推奨するリクエストにレスポンスできる対話型 AIサービスの作成方法について説明します。このユースケースにより、スキルトレーナーを活用してサービスを作成する全体的なプロセスを理解できます。

対話型 AIサービスを作成するステップは、次の通りです。

事前準備

このユースケースで使用する APIは NAVER開発者センターで提供する検索 APIを活用します。スキルトレーナーで検索 APIを呼び出すには、NAVER開発者センターでアプリケーションを登録した後、APIの呼び出しに必要な認証情報を獲得します。このステップで獲得した認証情報は、データ収集時に呼び出しオプションに適用されます。

NAVER APIを使用するために認証情報を獲得する方法は、次の通りです。

  1. NAVER開発者センターでアプリケーションを登録します。
    • アプリケーションを登録する方法は、アプリケーション登録をご参照ください。
    • アプリケーションの登録時の 使用 API検索 API を選択します。
  2. API呼び出し時にクライアント IDとクライアントシークレットをご確認ください。
参考
  • NAVER APIを使用するにあたって NAVER開発者センターのサービス利用約款を遵守するものとします。約款遵守義務を違反して発生したすべての法的責任は、ユーザー側の責任となります。
  • NAVER APIを使用する方法に関する詳細は、NAVER開発者センターの API共通ガイドをご参照ください。

Step 1. スキルセット作成

スキルセットを作成する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、 i_menu > Services > AI Services > CLOVA Studio メニューを順にクリックします。
  2. My Product メニューで [CLOVA Studioに移動する] ボタンをクリックします。
  3. CLOVA Studioで スキルトレーナー メニューをクリックします。
  4. [スキルセット作成] ボタンをクリックします。
  5. スキルセット作成画面が表示されたら、以下のように入力します。
    • スキルセット : 地理空間検索
    • スキルセット説明 : ユーザーが入力した検索キーワードに合わせて適切な地理空間検索結果を提供します。NAVER地域サービスに登録された様々な会社と機関を照会でき、希望する検索結果をソート方法(ブログのレビュー数順、精度順など)をリクエストできます。
    • サービス分野 : プレイス
  6. スキルセット名の重複有無を確認するには、 [重複チェック] ボタンをクリックします。
  7. [保存] ボタンをクリックします。
  8. スキルセットにスキルを追加するには、 [スキル作成] ポタンをクリックします。

Step 2. スキル作成

スキルを作成する方法は、次の通りです。

  1. Step 1. スキルセット作成を参照してスキルセットを作成します。

  2. [スキル作成] ボタンをクリックします。

  3. スキル情報画面が表示されたら、スキル名に「地理空間検索」と入力した後、 [重複チェック] ボタンをクリックします。

  4. API Spec領域に作成した後、 [検証する] ボタンをクリックします。

    {
      "info": {
        "title": "NAVER地理空間検索",
        "version": "1.0.0",
        "description": "NAVER地域サービスに登録された会社と機関を検索するためのスキル"
      },
      "paths": {
        "/v1/search/local.json": {
          "get": {
            "summary": "国内の地域情報検索結果を並べます。",
            "responses": {
              "200": {
                "content": {
                  "application/json": {
                    "schema": {
                      "type": "object",
                      "properties": {
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "link": {
                                "type": "string"
                              },
                              "mapx": {
                                "type": "string"
                              },
                              "mapy": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "address": {
                                "type": "string"
                              },
                              "category": {
                                "type": "string"
                              },
                              "telephone": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "roadAddress": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "start": {
                          "type": "integer"
                        },
                        "total": {
                          "type": "integer"
                        },
                        "display": {
                          "type": "integer"
                        },
                        "lastBuildDate": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "description": "- **title**: 会社名\\n- **address**: 地番住所(e.g.ソウル特別市中区乙支路3街229-1)\\n- **roadAddress**: 道路名住所(e.g.ソウル特別市中区乙支路15キル6-5)\\n- **category**: カテゴリ(e.g.レストラン、カフェ、病院、ヘアサロン、企業、公共機関)\\n- **description**: 会社に関する説明(e.g.練炭火韓牛カルビ専門店、江南駅近くの雰囲気抜群のカフェ)\\n- **link**: ホームページリンク"
              }
            },
            "parameters": [
              {
                "in": "query",
                "name": "query",
                "schema": {
                  "type": "string"
                },
                "required": true,
                "description": "**query**: ユーザーの行きたいお店の説明(e.g.亭子洞近くのグルメ、江南駅近くの雰囲気抜群のカフェ)\\n"
              },
              {
                "in": "query",
                "name": "display",
                "schema": {
                  "type": "integer",
                  "default": "2"
                },
                "required": true,
                "description": "リクエストしたクエリに関する検索結果数です。唯一なお店や会社の場合は結果を1つだけ表示してください。"
              },
              {
                "in": "query",
                "name": "sort",
                "schema": {
                  "type": "string"
                },
                "required": false,
                "description": "検索結果ソート方法\\n- **random**: 精度順に降順(デフォルト値)\\n- **comment**: カフェ、ブログのレビュー件数順で降順ソートが必要な場合に値を使用してください(e.g.レビューが多い順に並べてください。有名な場所を教えてください。人気の場所を教えてください。)\\n"
              }
            ],
            "description": "地域の会社や機関を検索します。",
            "operationId": "getLocalInfo"
          }
        }
      },
      "openapi": "3.0.2",
      "servers": [
        {
          "url": "https://openapi.naver.com"
        }
      ]
    }
    
  5. Manifest領域に以下のように入力します。

    • Name for model : LocalSearch
    • Description for human : NAVER地域サービスに登録された会社と機関を検索した結果を返します。
    • Description for model : NAVER地域サービスに登録された会社と機関を検索するには、LocalSearchスキルを使用します。/v1/search/local.jsonは会社や機関の名前、住所(ex. 道路名住所、地番住所)を検索キーワードとして入力する時に動作します。ご希望のソート方法(ex.ブログのレビュー数順、精度順など)を含めて検索結果をリクエストできます。
  6. Name for model[重複チェック] ボタンをクリックします。

  7. 必須情報をすべて入力した後、 [作成する] ボタンをクリックします。

    • 現在までのタスク内容を保存するには、 [一時保存] ボタンをクリックします。
    • すべての領域に入力した場合でも、 [一時保存] ボタンをクリックすると、タスクステータスが「タスク中」に保存されます。
  8. スキル作成完了画面が表示されたら、 [確認] ボタンをクリックします。

  9. バージョンが作成されたか確認します。

参考

API Spec作成方法と Manifest作成方法に関する詳細は、スキルをご参照ください。

Step 3. データ収集

データ収集ステップではユーザーの質問を分析した後、適切なスキルを呼び出します。クエリ分析結果で分離したクエリの数ほどのスキルが呼び出されますが、もしユーザーの質問が2つのクエリに分離された場合はスキルもそれぞれ2回呼び出します。このユースケースでは「NAVER 1784の住所と、近くのカフェをおすすめしてください」でデータを収集するため、スキルを2回呼び出します。

スキルを呼び出すステップは、次の通りです。
Step 1. 呼び出すスキルの情報を読み取ります。
Step 2. スキル情報を基に APIを呼び出すための URLとパラメータを作成し、実際の呼び出し結果(APIレスポンス)を受け取ります。
Step 3. 呼び出し結果を基に自然言語でまとめた内容を作成されます。

もしデータ収集プロセスで APIを呼び出すためのアクション入力項目が正確に作成されなかった場合は、呼び出し結果も正常に作成されません。この場合はモデルがクエリをしっかり理解できるようにアクション入力項目を変更します。このようなレビュープロセスは APIの複雑性や特性によって変わります。

データを収集する方法は次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、 i_menu > Services > AI Services > CLOVA Studio メニューを順にクリックします。

  2. My Product メニューで [CLOVA Studioに移動する] ボタンをクリックします。

  3. CLOVA Studioで スキルトレーナー メニューをクリックします。

  4. データを収集するスキルセットをクリックします。

  5. データ収集 メニューをクリックします。

  6. 呼び出しオプションの事前準備で発行した API情報をフォーマット例を参照して入力します。

  7. User Queryに「NAVER 1784の住所と、近くのカフェをおすすめしてください」を入力した後、 [実行] ボタンをクリックします。

  8. 画面左側でクエリ分析とスキル呼び出し結果をご確認ください。

    • もし途中で変更が必要な内容がある場合は、 [中止する] ボタンをクリックして変更したい領域を変更した後、 [適用] ボタンをクリックします。
    参考

    このユースケースで使用する地理空間検索 APIは呼び出しパラメータの中で queryパラメータに簡潔な値を入力することでしっかり動作します。モデルが作成したパラメータ値によると「NAVER 1784近くのカフェ」であるため、この検索キーワードでは API検索結果を作成できないことがあります。そのため、アクション入力項目でクエリを「NAVER 1784カフェ」に変更した後、 [適用] ボタンをクリックして API検索結果を作成し直します。

  9. スキル呼び出しステップの変更とレビューが終わると、 [タスク完了] ボタンをクリックしてデータ収集を完了します。

    • 最終回答ステップでは2つのスキル呼び出し結果を取り合わせた回答が作成されます。
  10. 希望する回答形式がある場合は、以下のように形式に合わせたケースを複数件収集します。

    {ユーザーリクエスト内容}をお知らせします。
    1. {場所1の名前}
    - 住所: {場所1の住所}
    2. {場所2の名前}
    - 住所: {場所2の住所}
    
    さらに必要な地域情報がある場合はお知らせください。 
    
  11. モデルが複数のケースを学習できるように、様々な User Queryを活用してデータを収集します。

    • 最小20つ以上のデータを収集した後に学習を行うことをお勧めします。
    • 以下のようにクエリを収集できます。
      • 亭子洞で人気のあるヘアサロン
      • 江南駅近くのカフェを探して
      • 聖水洞のグルメ店を探して。レビューが多い順に並べて。
      • 盆唐区庁の情報を教えて

Step 4. データ学習

様々なユーザークエリでデータを収集した後、モデルがより正確で詳細な回答を作成できるようにスキルセットを学習させます。データを学習するには、「完了」ステータスのスキルと収集されたデータが1つ以上必要です。

データを学習する方法は次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、 i_menu > Services > AI Services > CLOVA Studio メニューを順にクリックします。
  2. My Product メニューで [CLOVA Studioに移動する] ボタンをクリックします。
  3. CLOVA Studioで スキルトレーナー メニューをクリックします。
  4. データを収集するスキルセットをクリックします。
  5. データ学習 メニューをクリックします。
  6. [学習を開始する] ボタンをクリックします。

Step 5. スキルセット API呼び出し

バージョン管理メニューでデータ収集画面で学習されたバージョンに対するテストを行えます。もし結果に満足できない場合はデータを追加で収集して学習を再び行います。
サービスを適用するためのスキルセット APIを呼び出す方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、 i_menu > Services > AI Services > CLOVA Studio メニューを順にクリックします。
  2. My Product メニューで [CLOVA Studioに移動する] ボタンをクリックします。
  3. CLOVA Studioで スキルトレーナー メニューをクリックします。
  4. スキルセットをクリックします。
  5. バージョン管理 メニューをクリックします。
  6. サービスに適用する最終バージョンの [コードを見る] ボタンをクリックし、スキルセット API呼び出し情報を確認します。
    • スキルセット APIを呼び出す方法は、APIガイドをご参照ください。

スキルセット APIの呼び出し例は、次の通りです。詳細な呼び出し方法は、APIガイドをご参照ください。

curl --location --request POST 'https://clovastudio.stream.ntruss.com/testapp/v1/skillsets/{SKILLSET_ID}/versions/{VERSION}/final-answer' \
--header 'Authorization: Bearer {API_KEY}' \
--header 'X-NCP-CLOVASTUDIO-REQUEST-ID: {REQUEST_ID}' \
--header 'Content-Type: application/json' \
--data '{  
    "query": "NAVERのアドレスを教えてください",
    "tokenStream": true,
    "requestOverride": {
        "baseOperation": {
            "header": {
                "X-Naver-Client-Id": "{CLIENT_ID}", // アプリケーション登録時に発行されたクライアント ID値
                "X-Naver-Client-Secret": "{CLIENT_SECRET}" // アプリケーション登録時に発行されたクライアントシークレット値
            }
        }
    }
}'