Codificador/decodificador Swift BPE para modelos OpenAI GPT. Uma interface programática para tokenização de texto para API OpenAI GPT.
A família de modelos GPT processa texto usando tokens, que são sequências comuns de caracteres encontrados no texto. Os modelos entendem as relações estatísticas entre esses tokens e se destacam na produção do próximo token em uma sequência de tokens.
Você pode usar a ferramenta abaixo para entender como um trecho de texto seria tokenizado pela API e a contagem total de tokens nesse trecho de texto.
Esta biblioteca é baseada no codificador nodeJS gpt-3 e no codificador/decodificador OpenAI Official Python GPT
Também criei GPTTokenizerUI, uma biblioteca SPM que você pode integrar em seu aplicativo para fornecer GUI para inserir texto e mostrar os resultados de tokenização usados pela API GPT.
platform :ios , '15.0'
use_frameworks!
target 'MyApp' do
pod 'GPTEncoder' , '~> 1.0.3'
end
let encoder = SwiftGPTEncoder ( )
let str = " The GPT family of models process text using tokens, which are common sequences of characters found in text. "
let encoded = encoder . encode ( text : str )
print ( " String: ( str ) " )
print ( " Encoded this string looks like: ( encoded ) " )
print ( " Total number of token(s): ( encoded . count ) and character(s): ( str . count ) " )
print ( " We can look at each token and what it represents " )
encoded . forEach { print ( " Token: ( encoder . decode ( tokens : [ $0 ] ) ) " ) }
print ( encoded )
let decoded = encoder . decode ( tokens : encoded )
print ( " We can decode it back into: n ( decoded ) " )
Para codificar uma String
em um array de tokens Int
, você pode simplesmente invocar encode
passando a string.
let encoded = encoder . encode ( text : " The GPT family of models process text using tokens, which are common sequences of characters found in text. " )
// Output: [464, 402, 11571, 1641, 286, 4981, 1429, 2420, 1262, 16326, 11, 543, 389, 2219, 16311, 286, 3435, 1043, 287, 2420, 13]
Para decodificar uma matriz de tokens Int
de volta para a String
você pode invocar decode
passando a matriz de tokens.
let decoded = encoder . decode ( tokens : [ 464 , 402 , 11571 , 1641 , 286 , 4981 , 1429 , 2420 , 1262 , 16326 , 11 , 543 , 389 , 2219 , 16311 , 286 , 3435 , 1043 , 287 , 2420 , 13 ] )
// Output: "The GPT family of models process text using tokens, which are common sequences of characters found in text."
Internamente, um cache é usado para melhorar o desempenho ao codificar os tokens; você também pode redefinir o cache.
encoder . clearCache ( )