网站建设报价表模板下载,wordpress怎么链接地址,餐饮网站欣赏,环保网站可以做哪些内容什么是token
token是GPT处理文本的基本的单位token本身可以是一个字#xff0c;可以是一个词语#xff0c;或特定语言中的一个字符token负责将输入的文本数据转换为GPT可以处理的数据格式GPT不同模型的计费就是根据token来的
token 的拆分
这里有一个 tiktoken 工具 是 op…什么是token
token是GPT处理文本的基本的单位token本身可以是一个字可以是一个词语或特定语言中的一个字符token负责将输入的文本数据转换为GPT可以处理的数据格式GPT不同模型的计费就是根据token来的
token 的拆分
这里有一个 tiktoken 工具 是 open ai 开源的一个快速分词的工具可以将我们输入的文本的字符串去进行拆分, 拆分成token的列表 我们通过对 Prompt 进行拆分计算出token的数量不同的模型对于token是有限制的可以判断 Prompt 是不是比较长, 导致GPT对应的模型没有办法处理我们也可以通过 token 的数量去进行费用的计算 我们开发了一个自助的聊天工具向用户进行开放对用户而言我们可以通过计算token的数量来计算费用因为openAI它的API的调用的费用也是通过token去进行计算的 举一个例子 比如我们要做一个聊天机器人对于聊天机器人是需要我们的历史的一些聊天的信息需要去判断历史信息也就是追加上下文的信息是不是能够被GPT进行处理这个时候, 可能就会涉及到对于token的一个计算我们需要将上下文的信息去计算它的token看是不是超过了我们想要去设置的阈值这是token拆分实际的一个使用
如何拆分 token
openai 通过不同的编码来指定如何将文本转换成token不同的模型使用不同的编码open ai的模型分为三种编码 cl100k_base: gpt4, gpt-3.5-turbop50k_base: text-davinci-003, text-davinci-002r50k_base: gpt-3这是相关的 token 的编码和模型的一个映射的关系 各个语言的支持情况 对于不同的语言openai 也提供了相关的一些模块去进行引用Python: tiktokenJava: jtokkit 通过这些包完成文本的token的一个拆分去计算指定文本tokens的数量
Java 示例程序如下
Model.java
package org.example;import lombok.AllArgsConstructor;
import lombok.Getter;Getter
AllArgsConstructor
public enum Model {/*** gpt-3.5-turbo*/GPT_3_5_TURBO(gpt-3.5-turbo),GPT_3_5_TURBO_0613(gpt-3.5-turbo-0613),GPT_3_5_TURBO_16K(gpt-3.5-turbo-16k),TEXT_DAVINCI_003(text-davinci-003);private String name;
}Main.java
package org.example;import com.knuddels.jtokkit.Encodings;
import com.knuddels.jtokkit.api.Encoding;
import com.knuddels.jtokkit.api.EncodingRegistry;
import java.util.*;public class Main {private static final EncodingRegistry encodingRegistry Encodings.newDefaultEncodingRegistry();public static int tokens(String modelName, String message) {// 根据模型名称获取编码OptionalEncoding encodingForModel encodingRegistry.getEncodingForModel(modelName);if(encodingForModel.isPresent()) {// 利用编码计算 token 的数量Encoding encoding encodingForModel.get();int sum encoding.countTokens(message);return sum;} else {throw new RuntimeException(model not support);}}public static void getTokens(String modelName, String message) {// 根据模型名称获取编码OptionalEncoding encodingForModel encodingRegistry.getEncodingForModel(modelName);if(encodingForModel.isPresent()) {// 利用编码计算 token 的数量Encoding encoding encodingForModel.get();ListInteger encodeList encoding.encode(message);// 输出for(Integer en:encodeList) {System.out.print(encoding.decode(Arrays.asList(en))); // 这里有可能存在乱码的情况System.out.print( );}System.out.println();} else {throw new RuntimeException(model not support);}}public static void main(String[] args) {int tokens tokens(Model.GPT_3_5_TURBO.getName(), 你是一个诗人请写一首七言绝句);getTokens(Model.GPT_3_5_TURBO.getName(), 你是一个诗人请写一首七言绝句);System.out.println(Prompt你是一个诗人请写一首七言绝句 Tokens count tokens);}
}现在运行一下 可以看到我们的结果已经成功的进行了执行对于我们本次的 Prompt 它的tokens的数量是 17