Classic/VPC環境で利用できます。
Chat Completions V3で HCXモデルに入力した文章のトークン数を計算します。
リクエスト
リクエスト形式を説明します。リクエスト形式は次の通りです。
メソッド | URI |
---|---|
POST | /v3/api-tools/chat-tokenize/{modelName} |
リクエストヘッダ
リクエストヘッダの説明は次の通りです。
フィールド | 必須の有無 | 説明 |
---|---|---|
Authorization |
Required | 認証用 APIキー<例> Bearer nv-************ |
X-NCP-CLOVASTUDIO-REQUEST-ID |
Optional | リクエスト ID |
Content-Type |
Required | リクエストデータの形式
|
リクエストパスパラメータ
リクエストパスパラメータの説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
modelName |
String | Required | モデル名
|
リクエストボディ
リクエストボディの説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
messages |
Array | Required | トークン数計算対象の会話メッセージリスト: ChatMessage |
tools |
Array | Optional | Function Calling の使用可能なツールリスト: tools |
toolChoice |
String | Object | Optional | Function Calling ツール呼び出し動作の方法
|
toolChoice.type |
String | Optional | Function Calling モデルが呼び出すツールタイプ |
toolChoice.function |
Object | Optional | Function Calling モデルが呼び出すツール
|
toolChoice.function.name |
String | Optional | Function Calling モデルが呼び出すツール名 |
ChatMessage
ChatMessage
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
role |
Enum | Required | 会話メッセージのロール
|
content |
String | Array | Required | 会話メッセージ内容
|
toolCalls |
Array | Conditional | assistantの呼び出しツール情報
|
toolCallId |
String | Conditional | ツール ID
|
content
content
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
type |
Enum | Required | 会話メッセージ内容の形式
|
text |
String | Conditional | 会話メッセージ内容
|
imageUrl |
Object | Conditional | 画像リスト
|
imageUrl.url |
String | Conditional | ファイル拡張子を含む単一画像の公開 URL
|
dataUri |
Object | Conditional | 画像リスト
|
dataUri.data |
String | Conditional | Base64にエンコードされた画像文字列
|
tools
tools
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
type |
String | Required | ツールのタイプ
|
function |
Object | Required | 呼び出しfunction 情報 |
function.name |
String | Required | function 名 |
function.description |
String | Required | function の説明 |
function.parameters |
Object | Required | function 使用時に渡されるパラメータ
|
toolCalls
toolCalls
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
id |
String | - | ツール識別子 |
type |
String | - | ツールのタイプ
|
function |
Object | - | 呼び出しfunction 情報 |
function.name |
String | - | function 名 |
function.arguments |
Object | - | function 使用時に渡されるパラメータ |
リクエスト例
リクエストのサンプルコードは次の通りです。
画像でクエリする場合
画像でクエリする場合のリクエストのサンプルコードは次の通りです。
curl --location --request POST 'https://clovastudio.stream.ntruss.com/v3/api-tools/chat-tokenize/{modelName}' \
--header 'Authorization: Bearer {API Key}' \
--header 'X-NCP-CLOVASTUDIO-REQUEST-ID: {Request ID}' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"messages": [
{
"role": "system",
"content": "- 丁寧に回答する AIアシスタントです。"
},
{
"role": "user",
"content": [
{
"type": "image_url",
"imageUrl": [
{
"url": "https://www.******.com/image_a1b1c1.png"
}
]
},
{
"type": "text",
"text": "この写真について説明して"
}
]
},
{
"role": "assistant",
"content": "写真には小さな子供が羊にエサを与えている様子が写っています。"
}
]
}'
テキストでクエリする場合
テキストでクエリする場合のリクエストのサンプルコードは次の通りです。
curl --location --request POST 'https://clovastudio.stream.ntruss.com/v3/api-tools/chat-tokenize/{modelName}' \
--header 'Authorization: Bearer {API Key}' \
--header 'X-NCP-CLOVASTUDIO-REQUEST-ID: {Request ID}' \
--header 'Content-Type: application/json' \
--data '{
"messages":[
{
"content":"明日のソウルの天気はどう?",
"role":"user"
}
],
"tools":[
{
"type":"function",
"function":{
"description":"天気を教えてくれるツール",
"name":"weather",
"parameters":{
"properties":{
"location":{
"description":"ソウル、大田、釜山などの都市名",
"type":"string"
},
"unit":{
"enum":[
"celsius",
"fahrenheit"
],
"type":"string"
},
"date":{
"description":"2023-08-01のような日付形式の文字列。天気が知りたい日付",
"type":"string"
}
},
"required":[
"location"
],
"type":"object"
}
}
},
{
"type":"function",
"function":{
"description":"旅行地を推薦してくれるツール",
"name":"travel",
"parameters":{
"properties":{
"location":{
"description":"The city and state, e.g. San Francisco, CA",
"type":"string"
},
"date":{
"description":"\"2023-08-01~2023-09-01\"のような日付の対形式の文字列。旅行日の範囲",
"type":"string"
}
},
"required":[
"location"
],
"type":"object"
}
}
}
],
"toolChoice":"auto"
}'
レスポンス
レスポンス形式を説明します。
レスポンスボディ
レスポンスボディの説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
messages |
Array | - | トークン数が計算されたリクエスト会話メッセージリスト: ChatMessage |
ChatMessages.role |
Enum | - | 会話メッセージのロール
|
ChatMessage.content |
Array | - | メッセージ内容のトークン計算結果: ChatMessage |
tools |
Array | - | トークン数が計算されたリクエストツールリスト: ToolCount |
ChatMessageCount
ChatMessageCount
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
type |
Enum | Required | 会話メッセージ内容の形式
|
text |
String | Conditional | 会話メッセージ内容
|
imageUrl |
Object | Conditional | 会話メッセージ内容
|
imageUrl.url |
String | Conditional | ファイル拡張子を含む単一画像の公開 URL
|
dataUri |
Object | Conditional | 会話メッセージ内容
|
dataUri.data |
String | Conditional | Base64にエンコードされた画像文字列
|
count |
Integer | Required | 会話メッセージ内容ごとのトークン数計算結果 |
ToolCount
ToolCount
の説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
count |
Integer | Required | ツールリストのトークン数の計算結果 |
レスポンス例
レスポンスのサンプルコードは次の通りです。
成功
呼び出しに成功した場合のレスポンスのサンプルコードは次の通りです。
{
"status": {
"code": "20000",
"message": "OK"
},
"result": {
"messages": [
{
"role": "system",
"content": {
"type": "text",
"text": "- 丁寧に回答する AIアシスタントです。",
"count": 16
}
},
{
"role": "user",
"content": [
{
"type": "image_url",
"imageUrl": {
"url": "https://www.******.com/image_a1b1c1.png"
},
"count": 1478
},
{
"type": "text",
"text": "この写真について説明して",
"count": 12
}
]
},
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "写真には小さな子供が羊にエサを与えている様子が写っています。",
"count": 20
}
]
}
]
}
}
{
"status": {
"code": "20000",
"message": "OK"
},
"result": {
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "明日のソウルの天気はどう?",
"count": 12
}
]
}
],
"tools": {
"count": 230
}
}
}
失敗
呼び出しに失敗した場合のレスポンスのサンプルコードは次の通りです。