トークン計算機(チャット v3)

Prev Next

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 リクエストデータの形式
  • application/json

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

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

フィールド タイプ 必須の有無 説明
modelName String Required モデル名
  • <例> HCX-005

リクエストボディ

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

フィールド タイプ 必須の有無 説明
messages Array Required トークン数計算対象の会話メッセージリスト: ChatMessage
tools Array Optional Function Callingの使用可能なツールリスト: tools
toolChoice String | Object Optional Function Callingツール呼び出し動作の方法
  • auto: モデルがツールを自動で呼び出し (String)
  • none: モデルがツールを呼び出さずに一般の返答を生成(String)
  • モデルが特定のツールを強制呼び出し(Object)
toolChoice.type String Optional Function Callingモデルが呼び出すツールタイプ
toolChoice.function Object Optional Function Callingモデルが呼び出すツール
  • function(有効値)
toolChoice.function.name String Optional Function Callingモデルが呼び出すツール名

ChatMessage

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

フィールド タイプ 必須の有無 説明
role Enum Required 会話メッセージのロール
  • system | user | assistant | tool
    • system: ロールを規定する指示文
    • user: ユーザーの発話または質問
    • assistant: ユーザーの発話/質問に対する返答
    • tool: Function Callingによる処理結果を入力
content String | Array Required 会話メッセージ内容
toolCalls Array Conditional assistantの呼び出しツール情報
  • roleが toolの場合、assistantのtoolCallsリクエストのように入力
toolCallId String Conditional ツール ID
  • roleが toolの場合、必ず入力
  • assistantのtoolCallsリクエストと関連付ける用途

content

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

フィールド タイプ 必須の有無 説明
type Enum Required 会話メッセージ内容の形式
  • text | image_url
    • text: テキスト
    • image_url: 画像 URL
text String Conditional 会話メッセージ内容
  • テキスト入力
    • typetextの場合、必ず入力
imageUrl Object Conditional 画像リスト
  • typeimage_urlの場合、imageUrldataUriのうち1つは必ず入力
  • ターンごとに画像は1つまで含めることが可能
  • 最適な結果のためにtextと一緒にリクエストすることがお勧め
imageUrl.url String Conditional ファイル拡張子を含む単一画像の公開 URL
  • 画像サポートスペック
    • 形式: BMP、PNG、JPG、JPEG、WEBP
    • サイズ: 0Byte超過で20MB以下
    • 比率: アスペクト比が1:5または5:1以下
    • 長さ: 横長と縦長のどちらか長い方は2240px以下。短い方は4px以上
dataUri Object Conditional 画像リスト
  • typeimage_urlの場合、imageUrldataUriのうち1つは必ず入力
  • ターンごとに画像は1つまで含めることが可能
  • 最適な結果のためにtextと一緒にリクエストすることがお勧め
dataUri.data String Conditional Base64にエンコードされた画像文字列
  • 画像サポートスペック
    • 形式: BMP、PNG、JPG、JPEG、WEBP
    • サイズ: 0Byte超過で20MB以下
    • 比率: アスペクト比が1:5または5:1以下
    • 長さ: 横長と縦長のどちらか長い方は2240px以下。短い方は4px以上

tools

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

フィールド タイプ 必須の有無 説明
type String Required ツールのタイプ
  • function(有効値)
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(有効値)
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 - 会話メッセージのロール
  • system | user | assistant | tool
    • system: ロールを規定する指示文
    • user: ユーザーの発話または質問
    • assistant: モデルの返答
    • tool: Function Callingによる処理結果を入力
ChatMessage.content Array - メッセージ内容のトークン計算結果: ChatMessage
tools Array - トークン数が計算されたリクエストツールリスト: ToolCount

ChatMessageCount

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

フィールド タイプ 必須の有無 説明
type Enum Required 会話メッセージ内容の形式
  • text | image_url
    • text: テキスト
    • image_url: 画像 URL
text String Conditional 会話メッセージ内容
  • テキスト入力
    • typetextの場合、必ず入力
imageUrl Object Conditional 会話メッセージ内容
  • 画像 URLを入力
    • typeimage_urlの場合、「imageUrl」と「dataUri」のどちらか1つは必ず入力
  • ターンごとに画像は1つまで含めることが可能
  • 最適な結果のためにtextと一緒にリクエストすることがお勧め
imageUrl.url String Conditional ファイル拡張子を含む単一画像の公開 URL
  • 画像サポートスペック
    • 拡張子: BMP、PNG、JPG、JPEG、WEBP
    • サイズ: 20MB未満
    • アスペクト比が1:5または5:1以下
      • 長辺(横長と縦長のどちらか長い方)のサイズ: 2240px以下
dataUri Object Conditional 会話メッセージ内容
  • 画像 URLを入力
    • typeimage_urlの場合、「imageUrl」と「dataUri」のどちらか1つは必ず入力
  • ターンごとに画像は1つまで含めることが可能
  • 最適な結果のためにtextと一緒にリクエストすることがお勧め
dataUri.data String Conditional Base64にエンコードされた画像文字列
  • 画像サポートスペック
    • 拡張子: BMP、PNG、JPG、JPEG、WEBP
    • サイズ: 20MB以下
    • アスペクト比が1:5または5:1以下
      • 長辺(横長と縦長のどちらか長い方)のサイズ: 2240px以下、短い方は4px以上
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
        }
    }
}

失敗

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