- 印刷する
- PDF
Chat Completions
- 印刷する
- PDF
Classic/VPC環境で利用できます。
HyperCLOVA Xモデルを使用して会話型の文を生成します。
リクエスト
リクエスト形式を説明します。リクエスト形式は次の通りです。
メソッド | URI |
---|---|
POST |
|
リクエストヘッダ
リクエストヘッダの説明は次の通りです。
ヘッダ | 必須の有無 | 説明 |
---|---|---|
X-NCP-CLOVASTUDIO-API-KEY | Required | テストアプリやサービスアプリの作成時に発行された API KEY |
X-NCP-APIGW-API-KEY | Required | テストアプリやサービスアプリの作成時に発行された API Gateway KEY |
X-NCP-CLOVASTUDIO-REQUEST-ID | Optional | リクエスト ID |
Content-Type | Required | リクエストデータの形式
|
Accept | Conditional | レスポンスデータの形式
|
- レスポンス結果は基本的に JSON形式で返されますが、
Accept
をtext/event-stream
に指定するとレスポンス結果をストリーム形式で返します。 - レスポンスストリームの利用時、API URLは
https://clovastudio.stream.ntruss.com/
を使用してください。
リクエストパスパラメータ
リクエストパスパラメータの説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
modelName | String | Conditional | モデル名
|
taskId | String | Conditional | 学習 ID
|
リクエストボディ
レスポンスボディの説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
messages | Array | Required | 会話メッセージ |
temperature | Double | Optional | 生成トークンに対する多様性の程度(設定値が高いほど多様な文を生成)
|
topK | Integer | Optional | 生成トークン候補群から確率の高いトークン K個を候補に指定してサンプリングtopK ≤ 128 (デフォルト: 0) |
topP | Double | Optional | 生成トークン候補群を累積確率に基づいてサンプリング
|
repeatPenalty | Double | Optional | 同じトークンを生成することに対するペナルティの程度(設定値が高いほど同じ結果値を繰り返し生成する確率は下がる)repeatPenalty ≤ 10.0 (デフォルト: 5.0) |
stopBefore | Array | Optional | トークン生成停止文字 |
maxTokens | Integer | Optional | 最大トークン生成数maxTokens ≤ 2048 (デフォルト: 100) |
includeAiFilters | Boolean | Optional | AIフィルタ(生成された結果値に対する罵倒、蔑み/差別/嫌悪、セクハラ/わいせつなどカテゴリ別に当てはまる程度)結果を表示するかどうか
|
seed | Integer | Optional | モデルの繰り返し実行時、結果値の一貫性レベルを調整
|
一部フィールドの入力時、下記の内容をご確認ください。
messages
: 入力したトークン数とmaxTokens
で入力したトークン数の合計は4096トークンを超えることはできません。messages
で入力したトークン数は、Chat Completionsトークン計算 APIを呼び出すと確認できます。seed
: 使用時にモデルを繰り返し実行しても、一貫した結果値を得る確率を高められます。ただし、結果値の完全性は保証されません。他の条件が変わると結果が微妙に変わる可能性があります。
messages
messages
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
role | Enum | Required | 会話メッセージのロール
|
content | String | Required | 会話メッセージの内容 |
リクエスト例
リクエストのサンプルコードは次の通りです。
curl --location --request POST 'https://clovastudio.stream.ntruss.com/testapp/v1/chat-completions/HCX-003' \
--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' \
--header 'Accept: text/event-stream' \
--data '{
"topK" : 0,
"includeAiFilters" : true,
"maxTokens" : 256,
"temperature" : 0.5,
"messages" : [ {
"role" : "system",
"content" : "test"
}, {
"role" : "user",
"content" : "テストをしてみよう。"
}, {
"role" : "assistant",
"content" : "分かりました。何をテストしてみましょうか。"
} ],
"stopBefore" : [ ],
"repeatPenalty" : 5.0,
"topP" : 0.8
}'
レスポンス
レスポンス形式を説明します。
レスポンスヘッダ
レスポンスヘッダの説明は次の通りです。
ヘッダ | 必須の有無 | 説明 |
---|---|---|
Content-Type | - | レスポンスデータの形式
|
レスポンスボディ
レスポンスボディの説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
status | Object | - | レスポンスステータス |
result | Object | - | レスポンス結果 |
result.message | Object | - | 会話メッセージ |
result.message.role | Enum | - | 会話メッセージのロール
|
result.message.content | String | - | 会話メッセージの内容 |
result.stopReason | Enum | - | 結果生成停止の理由
|
result.inputLength | Integer | - | 入力トークン数(課金の基準で、end of turnといった特殊なトークンも含む) |
result.outputLength | Integer | - | レスポンストークン数 |
result.seed | int | - | 入力 seed値(0を入力したか、未入力の場合はランダムな値を返す) |
result.aiFilter | Array | - | AIフィルタの結果 |
aiFilter
aiFilter
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
groupName | String | - | AIフィルタのカテゴリ
|
name | String | - | AIフィルタの詳細カテゴリ
|
score | String | - | AIフィルタスコア
|
result | String | - | AIフィルタは正常に動作しているか
|
AI Filterは最大500文字まで分析できます。ただし、分析対象テキストに異常な形式、絵文字、記号などが多い場合、正常に分析されないことがあります。
レスポンス例
レスポンスのサンプルコードは次の通りです。
成功
呼び出しに成功した場合のレスポンスのサンプルコードは次の通りです。
{
"status": {
"code": "20000",
"message": "OK"
},
"result": {
"message": {
"role": "assistant",
"content": "文言: 今日一日の出来事を記録して、明日に備えましょう。ダイアリーはあなたの人生をより豊かにしてくれます。\n"
},
"stopReason": "LENGTH",
"inputLength": 100,
"outputLength": 10,
"aiFilter": [
{
"groupName": "curse",
"name": "insult",
"score": "1"
},
{
"groupName": "curse",
"name": "discrimination",
"score": "0"
},
{
"groupName": "unsafeContents",
"name": "sexualHarassment",
"score": "2"
}
]
}
}
失敗
呼び出しに失敗した場合のレスポンスのサンプルコードは次の通りです。
レスポンスストリーム
生成されるトークンを1つずつ出力するようにトークンストリーミングを使用できます。トークンストリーミング形式を説明します。
レスポンスヘッダ
レスポンスヘッダの説明は次の通りです。
ヘッダ | 必須の有無 | 説明 |
---|---|---|
Accept | - | レスポンスデータの形式
|
レスポンスボディ
レスポンスボディの説明は次の通りです。
StreamingChatCompletionsResultEvent
StreamingChatCompletionsResultEvent
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
message | Object | - | 会話メッセージ |
message.role | Enum | - | 会話メッセージのロール
|
message.content | String | - | 会話メッセージの内容 |
stopReason | Enum | - | 結果生成停止の理由
|
inputLength | Integer | - | 入力トークン数(課金の基準で、end of turnといった特殊なトークンも含む) |
outputLength | Integer | - | レスポンストークン数 |
aiFilter | Array | - | AIフィルタの結果 |
StreamingChatCompletionsTokenEvent
StreamingChatCompletionsResultEvent
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
id | String | - | リクエストを識別するイベント ID |
message | Object | - | 会話メッセージ |
message.role | Enum | - | 会話メッセージのロール
|
message.content | String | - | 会話メッセージの内容 |
inputLength | Integer | - | 入力トークン数(課金の基準で、end of turnといった特殊なトークンも含む) |
stopReason | Enum | - | 結果生成停止の理由
|
ErrorEvent
ErrorEvent
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
status | Object | - | レスポンスステータス |
SignalEvent
SignalEvent
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
data | String | - | 渡すシグナルデータ情報 |
レスポンス例
レスポンスのサンプルコードは次の通りです。
成功
呼び出しに成功した場合のレスポンスのサンプルコードは次の通りです。
id: aabdfe-dfgwr-edf-hpqwd-f2asd-g
event: token
data: {"message": {"role": "assistant", "content": “こんに”}}
id: aabdfe-dfgwr-edf-hpqwd-f1asd-g
event: result
data: {"message": {"role": "assistant","content": “ちは”}}
失敗
呼び出しに失敗した場合のレスポンスのサンプルコードは次の通りです。