Note2-计算 Token 数量

253 阅读1分钟

方法一

利用 usage 属性

print(response.usage)

返回内容 :

CompletionUsage(completion_tokens=13, prompt_tokens=27, total_tokens=40, completion_tokens_details=None, prompt_tokens_details=None)

方法二-使用Tiktoken 软件包

以计算 Prompt Token 为例 :

# 需要留意模型名称跟业务模型对应
encoding = tiktoken.encoding_for_model('gpt-3.5-turbo')

# 去掉Key, 只保留Value
messages=[
    {"system", "You are a helpful assistant."},
    {"user", "Who won the world series in 2020?"},
]

print(f'Prompt_Tokens: {len(encoding.encode(str(messages)))}')

计算 completion 同理,见示例代码。

方法三

API 网站 查看

image.png

示例代码

import os
import tiktoken
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()

# 需要留意模型名称跟业务模型对应
encoding = tiktoken.encoding_for_model('gpt-3.5-turbo')

# 去掉Key, 只保留Value
messages=[
    {"system", "You are a helpful assistant."},
    {"user", "Who won the world series in 2020?"},
]

print(f'Prompt_Tokens: {len(encoding.encode(str(messages)))}')

client = OpenAI(
    api_key=os.getenv('API_KEY'),
    base_url=os.getenv('BASE_URL')
)

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
    ]
)

print(response.usage)

result = response.choices[0].message.content
print(result)
print(f'Completion_Tokens: {len(encoding.encode(str(result)))}')