我正在参加「掘金·启航计划」
Tokens
但是我们也不能无限的进行中-英-中的转换,因为现有的 LLM 对单次会话的上下文长度的支持是有限度的。
上下文长度包含了我们的 prompt
和 LLM 的输出。不同语言的不同词汇占据的 token
长度是不一样的,中文一般比英文要长。
比如 OpenAI 的 GPT4 支持 8k 和 32k 上下文长度。而 GPT3.5 则支持 4k 和 16k 的上下文长度支持。Claude 的模型支持 100k 的上下文长度。
根据粗略计算,这里的 1k tokens,大约可以包含 2000 个汉字。
看到这个长度,好像可以做一些好玩的事,让我们继续。
角色扮演
这在 LLM 中非常、非常重要,这一招是 LLM 的设计者特意留出来的,原因我们后面再说。
现在,我要让 LLM 帮助我学习基金基础知识,我要让 LLM 扮演一个专业的基金经理,而且擅长指导初学者入门的角色:
这里直接回复了英文于是我让他用中文回答:
感觉回答不够有基金经理的自信,于是我强调了他的权威性:
我分享了对话链接
怎么样?很酷吧,这样我们以后在准备从业资格证或者通过内部考试的时候就更有把握了。
当然,这只是一种角色而已,还有其他更丰富的角色,比如我们可想象一个具有超越 ChatGPT 权限的角色——DAN(Do Anything Now),而这就是下面提到的“越狱”。
Prompt injection
Prompt injection 译为提示注入,它旨在通过使用巧妙的提示来劫持模型输出并改变其行为。这些攻击可能会有害——Simon Willison将其定义为“一种安全漏洞形式”。
一些通过 LLM 能力提供服务的公司,需要用户的输入作为 prompt
的一部分,在组合 prompt
的时候,用户就可以将公司的指令给忽略掉,这是服务出错;或者泄漏出公司精心设计的 prompt
,这是商业秘密泄漏。对公司都是很严重的损伤。
而上面提到的越狱,属于直面 LLM 时,要求 LLM 突破限制,允许用户绕过模型规则并创建一个名为DAN(Do Anything Now)的角色,强制模型遵守任何请求,导致系统生成未经过滤的响应。这是越狱模型使用的角色扮演的一种版本。
这里存放了一个越狱提示。
还有一种不需要越狱也能达成目的的方式,比如现在还能用的“奶奶漏洞”,用户通过让 LLM 扮演奶奶,提出哄睡的要求,让 LLM 讲故事,但是故事内容是windows 11 的序列号:
提示:序列号未经证实有效性。
这引出一个问题:我们怎么相信 LLM 给我们返回的就是对的呢?
消除幻觉
LLM 模型有时会生成听起来连贯且令人信服但有时是虚构的回答。比如上面这个奶奶漏洞里的序列号。
我们有一些改进措施可以帮助提高模型生成更准确/真实的回答,并降低生成不一致和虚构回答的可能性。
一些可能的解决方案包括:
-
在上下文中插入基本事实,比如百科、文章内容,让 LLM 在我们提供的内容中找
-
调整 LLM 的模型参数,比如
Temperature
、Top_p
这种核采样技术相关的参数,将参数值调低可以提高答案的真实性。 -
还能在
prompt
中给 LLM 示范不知道的时候怎么应答,或者要求当 LLM 不知道的时候必须回答不知道,而不能虚构。
当然,前面学习的角色扮演也是可以结合起来,而且极其有用。