聊天的内部:system、user 与历史
“AI 入门”课程第 11 课,共 23 课。免费,有动画和小测验。
聊天其实是一份长文档
你以为你们在一来一回地聊天。其实应用把所有内容拼成一份带角色的文档。System:应用隐藏的指令。User:你的消息。Assistant:模型的回复。模型每次拿到整份文档,然后续写下一段 assistant 的回复。听着怪,其实很简单:聊天就是一个剧本,模型负责接着往下写。
System:隐藏的设定
system 消息位于最开头,在你说第一句话之前,你通常看不到它。它由应用的开发者编写:用什么语气、哪些问题不回答、能用哪些工具。自定义指令,也就是设置里那个可以写“回答简短点,我是学生”的输入框,应用也会放进这一部分。所以它在每个新对话里都生效。
每次都从头再读一遍
在两条消息之间,模型什么都不记得。你每发一条新消息,应用就把整段聊天记录从头到尾再发给它一遍。但它能看的内容不是无限的。上下文窗口就是模型一次能读多少文字,用词元(token,也就是一小块文字)来计算。聊天特别长时,早期的消息可能被挤出窗口,或者被关注得更少。
当对话跑偏了
聊天记录有用的时候才是帮手。例如:你在写论文,已经否掉了第一版提纲,可模型老是绕回去。原因是旧提纲还在记录里,模型每次都会重读它。解决办法:开个新对话。把要点简短地贴进去:主题、已经定下的内容、不想要的方向。干净的记录往往比在旧对话里争十轮更管用。
AI 记得别的对话吗
模型本身不会:它不会在你聊天的同时被重新训练,每个新对话对它来说都是一张白纸。但很多应用有记忆功能。它会保存关于你的笔记,比如“正在准备化学考试”,再把这些笔记放到对话开头,就像 system 消息一样。这些笔记通常可以在设置里查看和删除。值得去看看里面存了什么。
自测一下
- 你在一段很长的对话里发了新消息。模型收到的是什么?
正确答案: 整段聊天记录,从头到尾再来一遍. 模型在两条消息之间什么都不记得,所以应用每次都把整段记录发过去,只要还装得进上下文窗口。 - 模型老是绕回你已经否掉的想法。怎么办最好?
正确答案: 开个新对话,附上简短的要点. 被否掉的想法还在记录里,模型会反复读到。新对话里没有它,要点由你自己带过去。 - 设置里的自定义指令会放到哪里?
正确答案: 放进每个新对话隐藏的 system 部分. 应用把它们放在每个对话开头,就像 system 消息。它们不会让模型本身重新训练。
← 好用的提示词 给个例子:few-shot →