Package tokenizer provides local token counting for Gemini models. This tokenizer downloads its model from the web, but otherwise doesn't require an API call for every [CountTokens] invocation.
CountTokensResponse
type CountTokensResponse struct {
TotalTokens int32
}
CountTokensResponse is the response of [Tokenizer.CountTokens].
Tokenizer
type Tokenizer struct {
// contains filtered or unexported fields
}
Tokenizer is a local tokenizer for text.
func New
New creates a new [Tokenizer] from a model name; the model name is the same as you would pass to a [genai.Client.GenerativeModel].
func (*Tokenizer) CountTokens
func (tok *Tokenizer) CountTokens(parts ...genai.Part) (*CountTokensResponse, error)
CountTokens counts the tokens in all the given parts and returns their sum. Only [genai.Text] parts are suppored; an error will be returned if non-text parts are provided.
Example
package main
import (
"fmt"
"log"
"cloud.google.com/go/vertexai/genai"
"cloud.google.com/go/vertexai/genai/tokenizer"
)
func main() {
tok, err := tokenizer.New("gemini-1.5-flash")
if err != nil {
log.Fatal(err)
}
ntoks, err := tok.CountTokens(genai.Text("a prompt"), genai.Text("another prompt"))
if err != nil {
log.Fatal(err)
}
fmt.Println("total token count:", ntoks.TotalTokens)
}