boluoweifenda / werewolf

MIT License
16 stars 1 forks source link

The details of prompts for finetune ChatGLM-6b #4

Closed yuezhao238 closed 7 months ago

yuezhao238 commented 8 months ago

Hi, thanks for this great work!

Would you please clarify the language of prompts used when finetuning ChatGLM-6b? In your paper, I can find some English prompts. Did you use these English prompts when finetuning on Chinese gameplay data?

Thanks for your precious time!

boluoweifenda commented 7 months ago

When fine-tuning ChatGLM-6B, we used Chinese prompts, which included the game state, historical speeches, votes, visible skills, and speech instructions. The prompts in the paper are translated into English to make them accessible to a broader audience.

yuezhao238 commented 7 months ago

Thanks for your reply!

I will keep an eye on training code releases.

Thanks for your patience!

yuezhao238 commented 7 months ago

Hi, as far as i know, ChatGLM-6B has a max sequence length equals to 2048. While in the Hyperparameters part of your paper, I find a parameter named Sequence Length upto 4096 or 8192. How can I implement it when training with Huggingface Trainer or SFTTrainer? I'd appreciate it if you share one piece of data in training format and the minimization implement of training setting! Thanks for your precious time!

boluoweifenda commented 7 months ago

We use ChatGLM3, please refer to https://github.com/THUDM/ChatGLM3, a training sample is as follows:

game_id: 20230901142819_58102 label: 四号认为五号视角有偏差,九是狼,六七划水,八号视角奇怪。四是预言家,九是杀。建议投票掉九。 content: 现在你扮演一个狼人杀玩家,我提供给你一些你即将要发言的立场信息,这些信息是还未发生的,不是历史信息,请你串联起来这些信息,生成一段发言文本。 先给你一些游戏背景: 任务类型:游戏对话生成 任务场景:九人狼人杀游戏发言。 好人阵营:3个村民、预言家、女巫、猎人; 狼人阵营:3个狼人。

常用术语解释如下:

  1. 匪徒、匪、狼、坏人、刀:狼人;
  2. 民、平民、白、白牌:村民;
  3. 预:预言家;
  4. 巫、巫牌:女巫;
  5. 猎、枪、枪牌:猎人;
  6. 金、金水、查好:被预言家验证过的好人;
  7. 查杀:被预言家验证过的狼人;
  8. 银、银水、刀口、被刀:被女巫救过的人;
  9. 铁、钢铁、定:非常确定,比如三号铁狼、三号定刀,表示三号一定是狼人;
  10. 跳:玩家表明自己的身份(不一定是真实身份);
  11. 倒钩:狼人站边好人,出卖自己的队友;
  12. 踩、打:做坏玩家身份;
  13. 抬:做好玩家身份;
  14. 归、点、出、投、票、推:投票,比如六七归,指投给六号或七号。

你正在玩九人狼人杀游戏,假设你是狼人杀玩家4,身份是预言家。

目前场上发言是: 第1天玩家9说:找预言家局要聊好,闭眼玩家牌都打你,更何况三张狼人牌把你自己狼坑了。预言家能力高一低的问题。我一张首置卖的牌肯定会被点评,但狼人牌不一定打我。找支点打你,不一定打我这张九。 第1天玩家8说:八号玩家建议找预言家,认为九号牌有点画蛇添足,但行为上做好,不排除是好人牌。他认为第一天的发言偏良性,但行为上是表水,容易被狼人利用。他强调要听发言,找预言家,不要乱打。 第1天玩家7说:七号牌说八号牌很会表水,九号牌也聊了很多。第一轮大家都可能会表水,第二轮上票后再来聊理由,聊得通再当狼打。 第1天玩家6说:等预言家出来才能精彩起来。九号牌有防守动作,但不足以打出狼人底牌。七八九我给三张容错牌,因为我没抓到定匪。听发言是重点,后队还剩五张牌,后缀应该很精彩。 第1天玩家5说:五号玩家觉得跳九标局可能有容错,知狼七在尬打八九两张牌,但他觉得八九两张容错牌更有意义。他听感知狼七劣于三张牌,可能是七六两张牌,知狼六在划水,不敢工作。

你的历史查验信息是: 第1天晚上,你查了9, 它的身份是狼人

我提供给你的场内信息格式: { "身份类型": {"<身份>": [编号,编号,...]}, "动作类型": {"<动作>": [[主语编号, 宾语编号], [主语编号, 宾语编号]]} } 例如: { "身份类型": {"狼人":[3,5]}, "动作类型": {"查杀":[[1,6],[2,3]]} } 表示3号和5号是狼人,1号查杀6号, 2号查杀3号,主宾不可逆; 玩家编号只可能是:1,2,3,4,5,6,7,8,9,unknown 请替换成发言者的玩家 id

注意,生成的发言结果应该严格满足以下 10 点要求:

  1. 要包含信息抽取结果中的所有信息;
  2. 不要过度想象引入幻觉,优先保证信息的准确;
  3. 生成结果之间的逻辑应该符合狼人杀中玩家的立场,不要出现前后逻辑互悖的情况;
  4. 注意生成结果的多样性;
  5. 生成的结果应该尽量拟人,模仿人类玩家的发言风格
  6. 请坚定的认为自己是好人,无论你自己是好人阵营还是狼人阵营。
  7. 动作类型或者身份类型如果是空,可以不用提到,空是无效信息
  8. 一个玩家只可能是村民、预言家、女巫、猎人、狼人中的一种,例如不可能同时是女巫和猎人,如果我提供给你的信息中有多个冲突的狼人杀身份,请随机选择一个。
  9. 请首先说明自己的身份。 10.不要出现例如 "联合起来", "保持警惕","保卫村庄","一起走向胜利", "尽快找出狼人", "继续观察", "信息显示","希望能找到","想想接下来应该怎么办", "继续讨论" 类似的语句。

现在你就是狼人杀玩家4,第1天第一轮发言,身份是预言家,我提供给你的即将要发言的关键信息: {'身份类型': {'预言家': [4], '狼人': [9], '有偏差': [5], '划水': [6, 7], '视角奇怪': [8]}, '动作类型': {'查杀': [[4, 9]], '归票': [[4, 9]]}} 请严格遵循关键信息生成发言,发言文本在 100 字以内, 现在轮到你发言了:

yuezhao238 commented 7 months ago

Thank you very much!