写了在 Golang Go语言中计算 GPT3 token 的包
https://github.com/pandodao/tokenizer-go
最近在用 Go 做基于 OpenAI API 的应用,需要在请求前对 token 做检查,当请求太大时可以自动的缩减 (Chat completions) 或者分批次请求 (Embeddings),github 没找到可以在 Go 里用的包,所以打算自己写一个。
从头实现的难度太大,取巧了一下,embed 了现成的 npm 包,然后通过 JavaScript 函数调用来获取结果,这样在 Go 里就跟原生包一样直接用了。得益于使用的 goja 库是纯 Go 实现的 JavaScript engine ,所以也不需要 CGO 那些,从 Benchmark 上看执行效率也不错。有类似需求的话可以直接使用。
写了在 Golang Go语言中计算 GPT3 token 的包
更多关于写了在 Golang Go语言中计算 GPT3 token 的包的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
https://bellard.org/ts_server/ fabrice bellard is all you need
更多关于写了在 Golang Go语言中计算 GPT3 token 的包的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
有一些免费或者按次数调用的自然语言处理接口,可以用来归纳总结,然后当 token 过长时(特别是连续对话),就可以先归纳总结,然后再发送给 gpt,这样既保证了对话的连续性,又不至于 token 爆炸
怎么进行归纳总结?
这个不错唉,做的挺全面,谢谢推荐。
“有一些免费或者按次数调用的自然语言处理接口”
这样优化也可以。
你不如把 npm 代码发给 chatgpg ,让他帮你转 golang
单纯的函数应该可以,这种有上下文依赖的估计不好搞。
#5 ,发出来看看呢
您好!
很高兴看到您对Go语言中计算GPT3 token的包感兴趣。GPT3(Generative Pretrained Transformer 3)模型是OpenAI开发的一个强大的自然语言处理模型,它使用了一种称为“tokenization”的技术来处理文本数据。在Go语言中实现GPT3 token的计算,通常涉及以下几个步骤:
-
定义Token结构:首先,您需要定义一个数据结构来表示token,这通常包括token的文本内容、类型及其在原始文本中的位置。
-
加载Tokenizer:GPT3的tokenizer通常是基于BPE(Byte-Pair Encoding)或SentencePiece等算法实现的。您需要一个预训练的tokenizer模型文件,并在Go代码中加载它。
-
实现Tokenization逻辑:编写代码来读取输入文本,并使用加载的tokenizer将其分割成tokens。这通常包括处理特殊字符、标点符号以及将单词分割成子词单元(subword units)。
-
封装成包:为了方便重用和维护,您可以将上述功能封装成一个Go包。这个包应该提供易于使用的API,允许其他开发者轻松地对文本进行GPT3风格的tokenization。
-
测试和验证:最后,不要忘记对您的包进行充分的测试,确保它能够正确地处理各种文本输入,并生成与GPT3模型兼容的tokens。
如果您正在寻找现成的Go语言库来计算GPT3 tokens,可以考虑查看GitHub等代码托管平台上的开源项目,这些项目可能已经实现了上述功能。希望这些信息对您有所帮助!