Talk-Bot开放接口

对外接口


什么是token?

<p>[TOC]</p> <h1>token 简介</h1> <p>Token 是大语言模型处理信息的最小单元,它介于“字”和“词”之间,你可以用下方的网址,来计算一段文字会变成多少 token:[gpt-tokenizer](<a href="https://gpt-tokenizer.dev">https://gpt-tokenizer.dev</a> &quot;gpt-tokenizer&quot;) <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7c6cbe8e19bd3d06851c443c78e4f81b&amp;amp;file=file.png" alt="" /> 大部分情况下,你都可以使用 1 汉字 = 2 token 来近似估算中文聊天的中文所需 token 数。</p> <h1>使用 Tiktoken 计算 token</h1> <p><a href="https://github.com/openai/tiktoken/blob/main/README.md"><code>tiktoken</code></a>是 OpenAI 推出的一款快速开源标记器。</p> <p>给定一个文本字符串(例如<code>&amp;quot;tiktoken is great!&amp;quot;</code>)和一个编码(例如<code>&amp;quot;cl100k_base&amp;quot;</code>),标记器可以将文本字符串拆分为标记列表(例如<code>[&amp;quot;t&amp;quot;, &amp;quot;ik&amp;quot;, &amp;quot;token&amp;quot;, &amp;quot; is&amp;quot;, &amp;quot; great&amp;quot;, &amp;quot;!&amp;quot;]</code>)。</p> <p>将文本字符串拆分为标记很有用,因为 GPT 模型会以标记的形式查看文本。了解文本字符串中有多少个 token 可以告诉您: (a) 字符串是否太长而无法由文本模型处理 (b) OpenAI API 调用的费用是多少(因为使用费按 token 计费)</p> <h1>查看模型编码</h1> <p>编码指定如何将文本转换为标记。不同的模型使用不同的编码。</p> <p><code>tiktoken</code>支持 OpenAI 模型使用的四种编码:</p> <table> <thead> <tr> <th>编码名称</th> <th>OpenAI 模型</th> </tr> </thead> <tbody> <tr> <td><code>cl100k_base</code></td> <td><code>gpt-4</code>, <code>gpt-4-turbo</code>,<code>gpt-3.5-turbo</code>, <code>text-embedding-ada-002</code>, <code>text-embedding-3-small</code>, <code>text-embedding-3-large</code></td> </tr> <tr> <td><code>o200k_base</code></td> <td><code>gpt-4o</code>, <code>gpt-4o-mini</code>, <code>chatgpt-4o-latest</code>, <code>o1-mini</code>, <code>o1-preview</code></td> </tr> <tr> <td><code>p50k_base</code></td> <td>Codex models, <code>text-davinci-002</code>, <code>text-davinci-003</code></td> </tr> <tr> <td><code>r50k_base</code> (or <code>gpt2</code>)</td> <td>GPT-3 models like <code>davinci</code></td> </tr> </tbody> </table> <p>官方提供了Python版本的tiktoken库,您可以使用如下代码检索模型的编码</p> <pre><code>import tiktoken encoding = tiktoken.encoding_name_for_model('gpt-3.5-turbo') print(encoding)</code></pre> <p>请注意p50k_base与有很大重叠r50k_base,并且对于非代码应用程序,它们通常会给出相同的标记</p> <h1>各语言的 Tiktoken libraries</h1> <p><strong>官方目前只提供Python版本,其它语言也有一些开源的社区库供大家参考。</strong></p> <p>官方Python示例:</p> <ul> <li>Python:<a href="https://github.com/openai/tiktoken/blob/main/README.md">tiktoken</a></li> </ul> <pre><code>import tiktoken def num_tokens_from_string(string: str, encoding_name: str) -&amp;gt; int: encoding = tiktoken.get_encoding(encoding_name) num_tokens = len(encoding.encode(string)) return num_tokens encoding = tiktoken.encoding_name_for_model('gpt-3.5-turbo') tokens = num_tokens_from_string('tiktoken is great!', encoding) print(tokens)</code></pre> <p>其它语言社区库:</p> <p>对于<code>cl100k_base</code>、<code>o200k_base</code>和<code>p50k_base</code>编码:</p> <ul> <li>.NET / C#: <a href="https://github.com/dmitry-brazhenko/SharpToken">SharpToken</a> , <a href="https://github.com/aiqinxuancai/TiktokenSharp">TiktokenSharp</a></li> <li>Java:<a href="https://github.com/knuddelsgmbh/jtokkit">jtokkit</a></li> <li>Golang:<a href="https://github.com/pkoukk/tiktoken-go">tiktoken-go</a></li> <li>Rust:<a href="https://github.com/zurawiki/tiktoken-rs">tiktoken-rs</a></li> </ul> <p>对于<code>r50k_base</code>( <code>gpt2</code>) 编码,许多语言中都有可用的标记器。</p> <ul> <li>Python:<a href="https://github.com/openai/tiktoken/blob/main/README.md">tiktoken</a>(或者<a href="https://huggingface.co/docs/transformers/model_doc/gpt2#transformers.GPT2TokenizerFast">GPT2TokenizerFast</a>)</li> <li>JavaScript:<a href="https://www.npmjs.com/package/gpt-3-encoder">GPT-3-编码器</a></li> <li>.NET / C#:<a href="https://github.com/dluc/openai-tools">GPT 标记器</a></li> <li>Java:<a href="https://github.com/hyunwoongko/gpt2-tokenizer-java">gpt2-tokenizer-java</a></li> <li>PHP:<a href="https://github.com/CodeRevolutionPlugins/GPT-3-Encoder-PHP">GPT-3-编码器-PHP</a></li> <li>Golang:<a href="https://github.com/pkoukk/tiktoken-go">tiktoken-go</a></li> <li>Rust:<a href="https://github.com/zurawiki/tiktoken-rs">tiktoken-rs</a></li> </ul>

页面列表

ITEM_HTML