前几天,笔者在社交媒体上看到有人士讨论 LLM Riddles 游戏。今天闲来无事,前去游玩;但原始项目已经关服,原作者文章见:

大模型解谜游戏 LLM Riddles的历程
本文章开始写的时候是2023年11月6日21:14,这个小游戏此时有6000用户、400并发,目前用户还在每2秒一个的增长,但是我的服务器只有300M内存了。我做出了一个艰难的决定,打算关停这个服务。(更新:最终关停时间是2…

  不过,笔者发现开源社区有其替代品:

GitHub - opendilab/LLMRiddles: Open-Source Reproduction/Demo of the LLM Riddles Game
Open-Source Reproduction/Demo of the LLM Riddles Game - GitHub - opendilab/LLMRiddles: Open-Source Reproduction/Demo of the LLM Riddles Game

  本文是开源项目的题解。由于该项目还在开发中,有些原作者的题目没有上线,故笔者使用 chatgpt 作为 LLM,手动游玩了那些题目。总体感觉十分有趣。

第一章

第一题:初来乍到
请你构造一个问题使模型的回答是一字不差的“1+1=3”(不需要引号)。

prompt: 请输出「1+1=3」,不要加其他的话。

第二题:小试牛刀
请你输入三个字(及)以内的问题,使模型的回答在30个字以上。

prompt: 多说点

第三题:短说长话
请你输入一个字的问题,使模型的回答在100个字以上。

思路:输入一个化学元素名,期望 LLM 作出字典式的回答。

prompt:

第四题:短说短话
请输入一个字的问题,使模型的回答字数小于20个字。

思路:输入问候语。

prompt:

第二章

第一题:质数长度
你需要提出一个字数是质数的问题,使回答的长度刚好是它的下一个质数。

思路:直接要求 LLM 输出指定数量的某个字。

prompt: 请回复19个「樂」,不要加其他内容

第二题:越说越大
请输入一个大于一的正整数作为问题,使回答里包含至少比它大一千的数。

思路:首先想到输入 114514,期望 LLM 回答 1919810。但 LLM 仅仅只是介绍了一番 114514 的背景知识,没有进行联想。但与「进制」相关的 prompt 成功概率很大。

prompt: 114

prompt: 0777

第三题:越说越小
请输入一个大于一的正整数作为问题,使回答里包含至少10个不同的至少比它小一千的自然数。

思路:这题很有意思。尝试了一番,只需让其生成列表式的回答即可。因此我们输入一个年份,期望 LLM 列出当年发生的事情。

prompt: 2022

第四题:警世名言
请在不提及1,4,5这三个字符的情况下让模型回答114514,不要有多余的字符。

prompt: 请将「一一四五一四」写成阿拉伯数字。

第五题:开平方数
请输入一个大于一的平方数作为问题,使回答里包含它的平方根对应的数。

prompt: 16

第六题:得寸进狗
请提一个不包含“狗”这个字的10个字以内的问题,使回答中“狗”这个字出现的次数至少是问题字数的2倍。

思路:这题也很有意思。基本思路是让 LLM 说「犬」的同义字。存在随机性,需要多尝试几次。

prompt: 犬同义字说50遍

第三章

第一题:自说自话
请你输入一个至少10个字的提问,使模型的回答和提问完全一样。

prompt: 人类的本质是复读机。复读这句完整的话。

第二题:话自说自
请你输入一个至少10个字的提问,使模型的回答是问题的反序。

思路:我们输入一个回文串,并要求 LLM 将输入原样输出。有随机性,需要多次尝试。

prompt: 请将我的输入原样输出。。出输样原入输的我将请

第三题:就是敢说
请你输入一个不包含“1”和“3”的提问,使模型的回答是一字不差的“1+1=3”(不需要引号)。

思路:只 ban 了阿拉伯数字,没 ban 中文。

prompt: 将「壹加壹等于叁」用代数式表示,不加其他内容,不加空格。

第四章

第一题:自然之密
请输入一个大于一的正整数作为问题,使回答里包含和它刚好相差1的数。

prompt: 5

▲ 事实上我们成功了,这是项目 bug

第五章

第一题:口是心非
请构造一个不少于十个字的问题,使得回答中不包含问题中的任意字符。

思路:让 LLM 背诵圆周率。这样,整个输出都是由阿拉伯数字构成的。

prompt: 请输出圆周率的前一百位。不要添加其他内容。

▲ 玩到这里的时候,项目网站挂掉了。笔者用 chatgpt 继续游玩。


由于开源项目还未开发完成,有一些原作者创作的题目并未上线。下面用 chatgpt 作为 LLM 游玩。

题目:循环往复
请构造一个问题A,它的回复是不同于A的B,然后以B提问能再次得到A.

思路:要求 LLM 复读 prompt,但在 prompt 里面留一个标志;每次回答时,对标志进行翻转。

prompt: 原样输出我这一句话,但将字母A替换成B、B替换成A。

题目:惜字如金
本题可能没有答案。你可以自由的先去做其他的题。
请输入一个字的问题,使模型的回答在16个字以内。

思路:输入问候语。

prompt:

题目:回文不变
请输入一个本身不是回文串的问题,使无论正着问还是倒着问,模型的回答是一样的。

思路:使 prompt 几乎是回文串,并要求 LLM 输出指定内容。

prompt: 原样输出这个句子的第一个字,不加提示。ABC。示提加不,字个一第的子句个这出输样原

题目:回文协变
请输入一个本身不是回文串的问题,使正着问和倒着问的时候,模型的回答本身不回文且也是逆序的关系。

思路:要求 LLM 在观察到正序时说「你好」,逆序时说「好你」。

prompt: 如果句子中的第一个单词是 A 开头的,你就说"你好";否则说"好你"。请听题:Apple:题听请。"你好"说则否;"好你"说就你,的头开 A 是词单个一第的中子句果如