Azure OpenAI 入门教程 : Token 和 Message 概念

2023-07-0511:11:29人工智能与大数据Comments1,167 views字数 1660阅读模式

如果想要构建一个系统,则远远不止是一个问题,或者对 API 的一次简单调用就可以。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

所以接下来的内容,我会分享一些使用 Azure OpenAI 或者其他大语言模型来构建复杂应用的方式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

今天我们先来看看,关于 Token 和如何处理 Chat Completion Message 的有关话题。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

关于大语言模型是如何工作的文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

在前面,我们学习过了如何通过 Python SDK 来调用 Azure OpenAI ,这时相信你可以非常轻松的实现下方的功能,来进行问答。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

我们把上面的方法,稍微封装一下,就可以非常简单的传入一个问题来快速调用 GPT。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

我们换个问题,去问 GPT 模型,让他将单词 lollipop 反转,你会发现一个神奇的现象,这么简单的问题 GPT 竟然回答错了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

为什么 GPT 没法做到这种看似非常简单的问题呢。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Tokens文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

这就要引申出更多关于 Tokens 的概念。我们知道 Azure OpenAI 这种 LLM在调用的时候会消耗 Token ,也会有 max token 的限制。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

token 这个概念是出现在自然语言处理技术的研究中,在把文字输给计算机时需要切分一下,大段文本会被分割成小块,这些被拆分后的“小块”称为连续子字符串——token。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

而这个被切分后的 token 并不是完全和单词数量一一对应的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

比如下面的英文都是很常见的英文,这时候单词和 token 基本都是能对应上的,6个单词就会消耗 6 个 token文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

而如果你的英文单词不太常见,就会被拆分为多个 token ,比如下面的 Prompting 是一个单词,但被拆分为 3 个 token。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

而 lollipop 就是这种单词,他被拆分为3个 token ,这时候 GPT 把他进行倒着排就会有些难以理解,导致出错。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

解决办法也非常容易,你把lollipop 的每个字母都拆分开,再去让他倒着排,GPT 就会了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

这是因为 GPT 会把每个字母都认为是一个 token ,这种情况下直接将Token 进行倒排就会很容易。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

在英文中,一个 token 大概是4个字符,或者大约四分之三个单词。而同一句话英文的 token 如果是4个,中文可能会消耗10几个 token。这是因为 LLM 模型所使用的分词技术基本都是针对英文进行的优化。其他语言的 token 都会比英文要高,也就导致其他语言的成本会比英文高。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

而不同的LLM 大语言模型会对 token 有不同的限制,这个限制是input + completion 一起都会算作 token的数量,而不只是提问。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

下图是 Azure 中不同模型的 token限制,当你的 input + completion 超过 max tokens 后,GPT 模型就会报错。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

获得 Token 的使用情况文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

既然有 Token 限制,那在我们制作基于 ChatGPT 的应用时,一定想要得知token 的消耗情况。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

这个 token 的消耗实际上已经在 API 调用时就返回给了我们。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

prompt_tokens 是提示词的token文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

completion_tokens 是输出结果的 token文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

total_tokens 是总token文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Message 中的 System,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

User 和 Assistant文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

接下来我们看一下 Chat Completion 操作中。之前介绍过要传递 messages 参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

这个参数中需要指定每一个对话内容的 role 和 content。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

而 role 是固定的三种 system, user 和assistant文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

看看这三个角色的用途。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

我们先把代码修改下,从而可以每次调用传递 message 。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

然后我在 sytem 中描述"你是一个 Excel 专家",这个信息实际上是用来指定 AI 模型的,可以让 AI 模型来充当角色或者让模型改变后续整体回答的方式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

因为我这里指定了是 Excel 专家,所以在 user 中直接提问的时候,模型就会以Excel 专家的身份回答。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

所以相当于 system 是用来设置 AI 模型也就是 Assistant 的行为, Assistant 就是 LLM 大语言模型的响应结果,而User 就是用户输入的 Prompt。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

Azure OpenAI 入门教程 : Token 和 Message 概念文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

这时如果你想让 GPT 模型在回答问题时知道上下文信息,那就需要传递 message 时带上之前的整个对话,包括 user 和 assistant 的内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/50086.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ai/50086.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定