聊聊ChatGPT是如何组织对话的

article/2024/12/22 13:03:59

为什么要组织对话?

总所周知,ChatGPT的训练大致可分为下图中展示的几个阶段,其中,在Pretraining阶段,模型的训练数据是纯文本,目标是根据上文预测下一个token,而在后面的几个阶段中,为了让模型具备对话的能力,相应的就需要使用对话数据进行训练。而对话数据一般包含多个角色的文本,如何将这些文本有效地组织、拼接起来(openAI将其称之为Chat Markup Language,简称ChatML),是本文要聊的内容。

from Microsoft Build 2023 《State of GPT》

ChatGPT的ChatML

根据openAI的介绍[1],ChatML v0会将每个角色(systemuserassistant)的文本进行如下拼接:

<|im_start|>system
You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.
Knowledge cutoff: 2021-09-01
Current date: 2023-03-01<|im_end|>
<|im_start|>user
How are you<|im_end|>
<|im_start|>assistant
I am doing well!<|im_end|>
<|im_start|>user
How are you now?<|im_end|>

其中<|im_start|><|im_end|>是special token,进行tokenizer encode的时候他们会被编码成对应的单个token id,他们专门用来表示一个角色说话的startend

那么,如果对话文本中包含了<|im_end|>岂不是会造成模型的困扰?为了防止这种类型的注入攻击,似乎openAI会将对话文本中的<|im_start|><|im_end|>过滤掉。

可能是过滤了<|im_start|>,ChatGPT的回复中没有提到<|im_start|>

将<|im_start|>改成<im_start>,ChatGPT能够完整输出用户刚刚的问题

另外,值得注意的是system prompt中的小trick,其中包含了Current date的信息,在响应用户提问的时候进行动态的修改,使模型能够回复一些和当前日期相关的问题。

当这只是ChatML v0的格式,是3月份时候的版本了,最新版的gpt-3.5-turbo-0613中角色增加了function,目前ChatGPT的ChatML演进到了什么格式还是未知,一些眼尖的开发者也发现了当前的ChatML已经不是v0了[2]。

StarChat的ChatML

ChatML的格式不止openAI一种,StarChat提供了另一种思路[3]:

<|system|>
Below is a dialogue between a human and AI assistant called StarChat.
<|end|>
<|user|>
Is it possible to imagine a society without law?<|end|>
<|assistant|>
It is difficult to imagine ...<|end|>
<|user|>
It seems like you ...<|end|>
<|assistant|>
You are correct ...<|end|>
<|user|>
Yeah, but laws are complicated ...<|end|>

其中<|system|><|assistant|><|user|><|end|>是special token,[3]中很贴心地提供详细的代码,感兴趣的读者可以进一步了解。

将角色信息用special token表示,可以更好的避免注入攻击,但由于这些special token对应的embedding在预训练阶段是未经过训练的,在SFT过程中需要充分的训练才能有好的表现。

总结

ChatML是训练对话大模型的一个小细节,本文介绍的两种方式都是利用了special token来显式表示对话的边界,同时还能节约上下文的空间,相比于直接使用###user xxx ###assistant xxx是要更好的。

The devil is in the detail.

Reference

[1] openai-python/chatml.md

[2] ChatML update for th gpt-3.5-turbo-0613 and gpt-4

[3] 使用 StarCoder 创建一个编程助手


http://chatgpt.dhexx.cn/article/J0fkA3SM.shtml

相关文章

和ChatGPT的一番对话

试用了一下ChatGPT&#xff0c;问了几个问题&#xff0c;虽然对人工智能充满信心&#xff0c;但是ChatGPT给我的感觉还没有形成气候。TA的很多回答是基于一些网络信息进行的糅合&#xff0c;甚至只是简单的复制。不过&#xff0c;毕竟还是处在发展的初级阶段&#xff0c;存在一…

chatgpt这么火?前端如何实现类似chatgpt的对话页面

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;…

实现chatgpt自然对话

1.概述 ChatGPT是当前自然语言处理领域的重要进展之一&#xff0c;通过预训练和微调的方式&#xff0c;ChatGPT可以生成高质量的文本&#xff0c;可应用于多种场景&#xff0c;如智能客服、聊天机器人、语音助手等。本文将详细介绍ChatGPT的原理、实战演练和流程图&#xff0c…

ChatGPT时代:ChatGPT全能应用一本通

引言 随着人工智能技术的不断发展和进步&#xff0c;我们进入了ChatGPT时代。ChatGPT是基于GPT架构的大型语言模型&#xff0c;它具备强大的自然语言处理和生成能力&#xff0c;使得我们能够进行更加自由、流畅的对话。作为ChatGPT的全能应用&#xff0c;它可以被视为一本通&a…

企业软件怎样利用ChatGPT?

文/明道云创始人任向晖 作为商业和科技话题的博主&#xff0c;不评论一下ChatGPT似乎是不应该的。毫无疑问&#xff0c;ChatGPT的出现已经远远超过了科技商业要闻的标准&#xff0c;它的革命性已经被飙速增长的用户所直接证明&#xff0c;以至于留给我们的问题只有两个&#xf…

ChatGPT有哪些应用场景?

&#x1f4d6; 作者简介&#xff1a;在职Java架构师&#xff0c;分享Java、架构相关知识 &#x1f4d6; 多年工作总结&#xff1a;Java学习路线总结&#xff0c;逆袭Java架构师 &#x1f4d6; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动、助你实现技…

【分享】Github上有趣的ChatGPT应用源码与好用的ChatGPT插件

哈喽&#xff0c;大家好&#xff0c;我是木易巷&#xff01; 今天给大家分享几个Github上有趣的ChatGPT应用源码与好用的ChatGPT插件&#xff0c;一起来看看吧&#xff01; 一、Github上有趣的ChatGPT应用源码 1. ChatGPT 源码地址&#xff1a;https://github.com/lencx/Ch…

ChatGPT应用——充当 Linux 终端

我想让你充当 Linux 终端。我将输入命令&#xff0c;您将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出&#xff0c;而不是其他任何内容。不要写解释。除非我指示您这样做&#xff0c;否则不要键入命令。当我需要用英语告诉你一些事情时&#xff0c;我会把…

ChatGPT应用场景: 基于对话生成的智能客服系统

关于ChatGPT&#xff0c;今天小编简单说下用在客服服务的要点。 ChatGPT可以用于开发基于对话生成的智能客服系统&#xff0c;帮助企业提供高效、便捷、满意的在线客服服务&#xff0c;从而提升客户体验和满意度。 以下是ChatGPT应用于智能客服系统的一些场景&#xff1a; 1.…

ChatGPT应用于软件测试中的切入口(干货!)

以上均为本人原创&#xff0c;转载请说明出处&#xff0c;谢谢&#xff01; 如果您觉得这篇文章还不错的话&#xff0c;请点击关注&#xff0c;转发&#xff0c;再看&#xff1b; 全是干货&#xff0c;话不多说 开搞&#xff01; 1. 测试想法生成器 可以使用ChatGPT技术&…

Edge加载weTab扩展,实现ChatGPT应用

1、找开Edge浏览器&#xff0c;点右上角三个点儿&#xff0c;如下图&#xff0c;再点【扩展】 2、在弹出的窗口中点【管理扩展】 我上这个中&#xff0c;上面已经存在【WeTab-免费ChatGPT新标签页】&#xff0c;说明我已经加载这个扩展项啦 3、再在弹出的扩展页中&#xff0c;…

ChatGPT-计算机应用新起点

ChatGPT是一款由OpenAI公司开发的大型语言模型&#xff0c;采用了GPT-3.5的架构&#xff0c;是目前最为先进的自然语言处理技术之一。该模型可以生成各种类型的自然语言文本&#xff0c;例如文章、对话、摘要等等&#xff0c;并可以理解语义和上下文&#xff0c;生成高质量的语…

ChatGPT 应用汇总及操作手册

汇总手册地址&#xff1a;https://www.mojidoc.com/05dbc-uvhdkr22fjazlowmiihngdoxvq-00b?continueFlag8f75ea3c60f02d7aee7fc531bc0ee944 GPT-3 相关 AI 工具汇总&#xff1a;共615 个 AI 技术落地的工具&#xff0c;包含了共 179 个使用场景&#xff0c;点击这里直接访问 h…

ChatGPT应用实践

运用ExcelPowerBIChatGPT&#xff0c;先让报表有形状&#x1f4b9;&#xff0c;再到“会说话”。全套方案在我的一亩三分地落地了。&#x1f60b;支持私有化部署且近乎零成本(非商用)。

ChatGPT应用与Python实战开发

最近什么最火一定是ChatGPT的AI技术&#xff0c;那什么语言最火呢&#xff0c;那一定是Python语言。这两个最火的语言在一起能擦出什么样的火花呢&#xff0c;来蚂蚁老师课堂学习新鲜出炉的课程吧&#xff0c;帮你解决一大部分的疑惑&#xff0c;感兴趣的小伙伴&#xff0c;查看…

chatgpt应用程序软件开发

作为一个语言模型&#xff0c;ChatGPT被用于各种应用程序和软件中&#xff0c;可以提供以下功能&#xff1a; 自然语言对话&#xff1a;ChatGPT可以与用户进行自然的、流畅的自然语言交互&#xff0c;从而帮助用户解决问题、获取信息或提供娱乐。 文本生成&#xff1a;…

【AI聊天丨 ChatGPT应用案例一】— 仅用30分钟,ChatGPT帮你完成专利交底书!

Hi&#xff0c;大家好&#xff0c;我是零点壹客&#xff0c;今天主要也是想和大家一起唠唠ChatGPT&#xff0c; 尤其这两个月&#xff0c;ChatGPT出奇的火&#xff0c;想必各位圈友们或多或少的都已经有些了解。 ChatGPT的出现很大程度上已经改变了我们的工作方式&#xff0c;尤…

第03课:如何快速构建自己的ChatGPT应用?

本节我们来介绍如何用ChatGPT构建自己的应用。毫无疑问,我们首先应该从官网上去了解和获取一些有用的信息。 官网地址:https://openai.com/ (如果想登陆官网,需要科学上网哈) 如下图所示,首先关注官网上的导航Developers,这是我们开发应用必须要了解的,它给我们提供了…

基于Python开发ChatGPT应用

注意&#xff1a;后续技术分享&#xff0c;第一时间更新&#xff0c;以及更多更及时的技术资讯和学习技术资料&#xff0c;将在公众号CTO Plus发布&#xff0c;请关注公众号&#xff1a;CTO Plus ChatGPT 是目前非常热门的一种人工智能模型&#xff0c;它是基于深度学习技术的一…

ChatGPT 应用——使用 chatGPT 写高考作文

写作文&#xff0c;很简单&#xff0c;但写一篇好的作文&#xff0c;是非常有难度的。 想要写一篇高分作文&#xff0c;需要对作文题目有正确的理解&#xff0c;需要展现独到的观点和深入的思考&#xff0c;需要具备清晰的逻辑结构&#xff0c;需要准确而得体的语言表达。 正…