スキルセット返答の生成
    • PDF

    スキルセット返答の生成

    • PDF

    記事の要約

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

    特定のスキルセットの APIを呼び出して適切な返答を生成します。

    リクエスト

    リクエスト形式を説明します。リクエスト形式は次の通りです。

    メソッドURI
    POST
    • /v1/skillsets/{skillset-id}/versions/{version}/final-answer
      • バージョンを指定
    • /v1/tasks/{taskId}/chat-completions
      • バージョンを指定しない

    リクエストヘッダ

    リクエストヘッダの説明は次の通りです。

    フィールド必須の有無説明
    X-NCP-CLOVASTUDIO-API-KEYRequiredテストアプリやサービスアプリの作成時に発行された API Key
    X-NCP-APIGW-API-KEYRequiredテストアプリやサービスアプリの作成時に発行された API Gateway Key
    X-NCP-CLOVASTUDIO-REQUEST-IDOptionalリクエスト ID
    Content-TypeRequiredリクエストデータの形式
    • application/json
    AcceptConditionalレスポンスデータの形式
    • text/event-stream
    参考

    レスポンス結果は基本的に JSON形式で返しますが、Accepttext/event-streamに指定するとストリーム形式で返します。

    リクエストパスパラメータ

    リクエストパスパラメータの説明は次の通りです。

    フィールドタイプ必須の有無説明
    skillset-idStringRequired返答生成対象のスキルセット ID
    versionInteger/StringRequired返答生成対象のスキルセットバージョン
    • バージョンを指定してスキルセット使用時に入力
    • {バージョン番号} | latest
      • {バージョン番号}: 特定のバージョン
        • 1 ≤ version
      • latest: 現在適用されたバージョン
    参考

    versionは、入力するスキルセットのバージョンに応じて、Integerと Stringの中から選択してリクエストしてください。

    リクエストボディ

    リクエストボディの説明は次の通りです。

    フィールドタイプ必須の有無説明
    queryStringRequiredクエリ内容
    tokenStreamBooleanOptional返答生成時のトークンストリーミング使用有無
    chatHistoryArrayOptional返答生成履歴
    chatHistory.roleEnumRequired会話メッセージのロール
    • user | assistant
      • user: ユーザーの発話または質問
      • assistant: モデルの返答
    chatHistory.contentStringRequired会話メッセージの内容
    requestOverrideObjectOptionalすべての APIに適用する呼び出しオプション
    requestOverride.baseOperationObjectOptionalすべての APIに適用する呼び出しオプション情報
    requestOverride.baseOperation.headerObjectOptionalすべての APIに適用するリクエストヘッダ
    requestOverride.baseOperation.queryObjectOptionalすべての APIに適用するリクエストクエリパラメータ
    requestOverride.baseOperation.requestBodyObjectOptionalすべての APIに適用するリクエストボディ
    • GETメソッド APIの場合は適用しない
    requestOverride.operationsArrayOptional特定の APIに適用する呼び出しオプション

    operations

    operationsの説明は次の通りです。

    フィールドタイプ必須の有無説明
    operationIdStringConditional特定の APIのオペレーション ID
    • operationsの入力時は必須
    headerObjectOptional特定の APIに適用するリクエストヘッダ
    queryObjectOptional特定の APIに適用するリクエストクエリパラメータ
    requestBodyObjectOptional特定の APIに適用するリクエストボディ
    • GETメソッド APIの場合は適用しない

    リクエスト例

    リクエストのサンプルコードは次の通りです。

    curl --location --request POST 'https://clovastudio.stream.ntruss.com/testapp/v1/skillsets/{skillset-id}/versions/{version}/final-answer' \
    --header 'X-NCP-CLOVASTUDIO-API-KEY: {CLOVA Studio API Key}' \
    --header 'X-NCP-APIGW-API-KEY: {API Gateway API Key}' \
    --header 'X-NCP-CLOVASTUDIO-REQUEST-ID: {Request ID}' \
    --header 'Content-Type: application/json' \
    --data '{  
        "query": "明日の天気はどう?",
        "tokenStream": true,
        "chatHistory": [
            {
                "role": "user",
                "content": "今日のソウルの天気はどう?"
             },
            {
                "role": "assistant",
                "content": "嵐の前の静けさです。"
             }
         ],
         "requestOverride": {
            "baseOperation": {
                "query": {
                    "appid": "appid-11223344"
                    }
                }
            }
        }'
    

    レスポンス

    レスポンス形式を説明します。

    レスポンスヘッダ

    レスポンスヘッダの説明は次の通りです。

    ヘッダ必須の有無説明
    Content-Type-レスポンスデータの形式
    • application/json

    レスポンスボディ

    レスポンスボディの説明は次の通りです。

    フィールドタイプ必須の有無説明
    statusObject-レスポンスステータス
    resultObject-レスポンス結果
    result.finalAnswerString-モデルの最終実行結果
    • 最後まで実行されなかった場合、空の文字列を返す
    result.tokenCountInteger-返答生成時に測定されたトークン数
    result.useTaskBoolean-呼び出したモデルの学習有無
    • false | true
      • false: 学習していない
      • true: 学習完了
    result.apiResultArray-呼び出した APIの結果

    apiResult

    apiResultの説明は次の通りです。

    フィールドタイプ必須の有無説明
    urlString-返答中に呼び出した API URL
    requestBodyString-返答中に呼び出した APIリクエストボディ
    responseBodyString-返答中に呼び出した APIレスポンスボディ
    apiOrderInteger-API呼び出しの結果に関係なく、レスポンス順序を固定するためのソート基準
    operationIdString-返答中に呼び出した API Specのオペレーション ID
    nameForHumanString-返答中に呼び出した APIが登録されたスキルの名前

    レスポンス例

    レスポンスのサンプルコードは次の通りです。

    成功

    呼び出しに成功した場合のレスポンスのサンプルコードは次の通りです。

    {
      "status": {
        "code": "20000",
        "message": "OK"
      },
      "result": {
        "finalAnswer": "明日のソウルの天気は晴れ、気温は約27度程度と予想されます。",
        "tokenCount": 1032,
        "apiResult": [
          {
            "url": "http://example.com?numOfRows=1&location=서울&date=20240530",
            "requestBody": "string",
            "responseBody": "string",
            "apiOrder": 1,
            "operationId": "weatherAPI",
            "nameForHuman": "WeatherSkill"
          }
        ]
      }
    }
    

    失敗

    呼び出しに失敗した場合のレスポンスのサンプルコードは次の通りです。

    レスポンスストリーム

    生成されるトークンを1つずつ出力するようにトークンストリーミングを使用できます。トークンストリーミング形式を説明します。

    レスポンスヘッダ

    レスポンスヘッダの説明は次の通りです。

    フィールド必須の有無説明
    Accept-レスポンスデータの形式
    • text/event-stream

    レスポンスボディ

    レスポンスボディの説明は次の通りです。

    フィールドタイプ必須の有無説明
    selectedSkillObject-選択されたスキルの名前
    • Planning eventでのみ表示
    finalAnswerString-モデルの最終実行結果
    • 最後まで実行されなかった場合は空の文字列を返す
    • FinalAnswer eventでのみ表示
    tokenCountInteger-イベントで使用されたトークン数
    apiResultObject-返答中に呼び出した APIの結果
    • FinalAnswer eventでのみ表示
    apiResult.urlString-返答中に呼び出した API URL
    apiResult.requestBodyString-返答中に呼び出した APIリクエストボディ
    apiResult.responseBodyString-返答中に呼び出した APIレスポンスボディ
    apiResult.apiOrderInteger-API呼び出しの結果に関係なく、レスポンス順序を固定するためのソート基準
    apiResult.operationIdString-返答中に呼び出した API Specのオペレーション ID
    apiResult.nameForHumanString-返答中に呼び出した APIが登録されたスキルの名前

    Token Event

    TokenEventの説明は次の通りです。

    フィールドタイプ必須の有無説明
    probsArray-レスポンス候補のトークンリストと各トークンの確率
    stopReasonString-結果生成停止の理由(通常、最後のイベントで渡す)
    • length | end_token | stop_before
      • length: 長さ制限
      • end_token: トークン数制限
      • stop_before: 返答生成中 stopBefore設定値の登場
    textString-完全なるテキストペア

    レスポンス例

    レスポンスのサンプルコードは次の通りです。

    成功

    呼び出しに成功した場合のレスポンスのサンプルコードは次の通りです。

    id: aabdfe-dfgwr-edf-hpqwd-f2asd-g
    event: planning
    data: {"selectedSkill": {["nameForHuman":"ホテル検索"]}, "tokenCount": 432}
    id: aabdfe-dfgwr-edf-hpqwd-f1asd-g
    event: cot
    data: {"apiResult": [{"url": "https://example.com/search_reviews_get?keyword=地下鉄の駅からのアクセスが良い", "requestBody": "keyword=地下鉄の駅からのアクセスが良い", "responseBody": "[{\"review_id\": 5,
    \"review_date\": \"20230809\", \"reviewer\": \"ClaudeCalder\", \"rating\": 4.0, \"content\": \"サウナ、
    プールなどの館内設備がないのが残念でしたが、値段が安いので良かったです。近くには地下鉄の駅もあるし、コンビニもあるので、アクセスが
    良いです。短期滞在にはちょうどいいです。\", \"hotel_name\": \"Movenpick Hotel\", \"address\": \"ソウル特別市クァンジン区
    ウォーカーヒルロ 120\", \"room_name\": \"City View\", \"good_cnt\": 9, \"bad_cnt\": 0, \"rating_service\":
    3. 0, \"rating_clean\": 4.0, \"rating_room\": 4.0}]", "apiOrder": 1}], "tokenCount": 2401 }
    id: aabdfe-dfgwr-edf-hpqwd-f2asd-g
    event: finalAnswer
    data: {"finalAnswer": "ソウルで地下鉄の駅からのアクセスが良いホテルは Movenpick Hotelで、ソウル特別市クァンジン区ウォーカーヒルロ 120に
    位置しています。", "apiResult": [{"url": "https://example.com/search_reviews_get?keyword=地下鉄の駅からのアクセスが良い", "requestBody": "keyword=地下鉄の駅からのアクセスが良い", "responseBody":
    "[{\"review_id\": 5, \"review_date\": \"20230809\", \"reviewer\": \"ClaudeCalder\", \"rating\": 4.0,
    \"content\": \"サウナ、プールなどの館内設備がないのが残念でしたが、値段が安いので良かったです。近くには地下鉄の駅もあるし、
    コンビニもあるので、アクセスが良いです。短期滞在にはちょうどいいです。\", \"hotel_name\": \"Movenpick Hotel\",
    \"address\": \"ソウル特別市クァンジン区ウォーカーヒルロ 120\", \"room_name\": \"City View\", \"good_cnt\": 9, \"bad_cnt\":
    0, \"rating_service\": 3.0, \"rating_clean\": 4.0, \"rating_room\": 4.0}]", "apiOrder": 1}],
    "tokenCount": 214 }
    ...
    

    失敗

    呼び出しに失敗した場合のレスポンスのサンプルコードは次の通りです。


    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.