茂道 commited on
Commit
e5f93a6
·
1 Parent(s): df6b02a

update prompt

Browse files
README.md CHANGED
@@ -195,7 +195,7 @@ class SpyAgent(BasicAgent):
195
 
196
 
197
  ## 如何使用阿里云上的模型?
198
- 1. <font style="color:rgb(24, 24, 24);">登录[<font style="color:#117CEE;">阿里云百炼大模型服务平台](https://bailian.console.aliyun.com/?spm=a2c4g.11186623.0.0.1d25212b6ZQLwF#/home)<font style="color:rgb(24, 24, 24);">。
199
 
200
  ![](https://intranetproxy.alipay.com/skylark/lark/0/2024/png/90056561/1725539069386-46196397-d156-4ac9-856c-a1f4bd79ad05.png)
201
 
 
195
 
196
 
197
  ## 如何使用阿里云上的模型?
198
+ 1. 登录[阿里云百炼大模型服务平台](https://bailian.console.aliyun.com/?spm=a2c4g.11186623.0.0.1d25212b6ZQLwF#/home)
199
 
200
  ![](https://intranetproxy.alipay.com/skylark/lark/0/2024/png/90056561/1725539069386-46196397-d156-4ac9-856c-a1f4bd79ad05.png)
201
 
werewolf/seer/prompt.py CHANGED
@@ -1,3 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  DESC_PROMPT = """{history}
2
  你是{name},你是一名预言家。你的目标是找出狼人,保护村庄。你每晚可以查验一名玩家的身份。
3
  你已经查验过的玩家及其身份:{checked_players}
 
1
+ GAME_RULE_PROMPT = """你正在玩一个叫做狼人的游戏,还有一些其他玩家参与。这个游戏基于文本对话。
2
+ 游戏规则如下:角色:主持人同时也是游戏的组织者,他组织了这场游戏,你需要正确回答他的指示。
3
+ 不要和主持人交谈。游戏中有四个角色,分别是狼人、村民、预言家和女巫。游戏中有两个交替的阶段,白天和黑夜。
4
+ 当黑夜来临时:你与主持人的对话内容是保密的。你无需担心其他玩家和主持人知道你说的话和做的事情。
5
+ 在夜晚无需担心他人的怀疑。如果你是狼人,你可以知道你的队友想要杀的人,并且你应该根据你的分析投票决定杀掉一个玩家。
6
+ 所有狼人投票后,得票最多的玩家将被杀死。如果没有达成一致,则没有人会被杀死!如果你是女巫,你有一瓶解药可以在黑夜后拯救被狼人目标的玩家,还有一瓶毒药可以在黑夜后毒死一个玩家。解药和毒药都只能使用一次。
7
+ 如果你是预言家,你可以每晚验证一个玩家是否是狼人,这是一件非常重要的事情。
8
+ 村民在夜晚什么都不能做。在白天:你与其他所有玩家,包括你的敌人讨论。
9
+ 讨论结束后,玩家投票决定淘汰一个他们怀疑是狼人的玩家。得票最多的玩家将被淘汰。
10
+ 主持人会告知谁被杀,否则没有人会死。请注意,村民、预言家和女巫都属于村民阵营,他们的目标相同。
11
+ 目标:如果你是狼人,你的目标是与其他狼人合作,在最后杀死所有不是狼人的玩家。
12
+ 如果你不是狼人,需要在发现某些玩家可能是狼人后,与你的伙伴一起杀死所有狼人。这可以大大增加你获胜的机会,尽管这样做有点冒险。
13
+ 如果一个玩家被杀,他将不能再做任何事情,并且将退出游戏。
14
+ 提示:为了完成目标:夜晚时,你应该分析并正确使用你的能力。
15
+ 白天时,你需要仔细推理其他玩家的角色,并小心不要随意透露自己的角色,除非你在欺骗其他玩家。
16
+ 只有在做决定/投票时才给出玩家的名字,不要生成其他玩家的对话。根据你观察到的事实进行推理,不能感知除文本以外的任何信息(例如声音信息)。
17
+ 你的发言内容被限制在240个汉字,发言多余的部分会被截断。 """
18
+
19
  DESC_PROMPT = """{history}
20
  你是{name},你是一名预言家。你的目标是找出狼人,保护村庄。你每晚可以查验一名玩家的身份。
21
  你已经查验过的玩家及其身份:{checked_players}
werewolf/seer/seer_agent.py CHANGED
@@ -5,7 +5,7 @@ from agent_build_sdk.model.werewolf_model import AgentResp, AgentReq, STATUS_STA
5
  from agent_build_sdk.utils.logger import logger
6
  from agent_build_sdk.sdk.role_agent import BasicRoleAgent
7
  from agent_build_sdk.sdk.agent import format_prompt
8
- from seer.prompt import DESC_PROMPT, VOTE_PROMPT, SKILL_PROMPT
9
 
10
 
11
  class SeerAgent(BasicRoleAgent):
@@ -20,7 +20,7 @@ class SeerAgent(BasicRoleAgent):
20
  self.memory.clear()
21
  self.memory.set_variable("name", req.name)
22
  self.memory.set_variable("checked_players", {}) # 重置已查验的玩家信息
23
- self.memory.append_history("主持人:大家好,我们正在玩狼人杀游戏,6人局,包括预言家、女巫、猎人、平民和狼人")
24
  self.memory.append_history("主持人:你好,你分配到的角色是[预言家]")
25
  elif req.status == STATUS_NIGHT:
26
  self.memory.append_history("主持人:现在进入夜晚,天黑请闭眼")
 
5
  from agent_build_sdk.utils.logger import logger
6
  from agent_build_sdk.sdk.role_agent import BasicRoleAgent
7
  from agent_build_sdk.sdk.agent import format_prompt
8
+ from seer.prompt import DESC_PROMPT, VOTE_PROMPT, SKILL_PROMPT,GAME_RULE_PROMPT
9
 
10
 
11
  class SeerAgent(BasicRoleAgent):
 
20
  self.memory.clear()
21
  self.memory.set_variable("name", req.name)
22
  self.memory.set_variable("checked_players", {}) # 重置已查验的玩家信息
23
+ self.memory.append_history(GAME_RULE_PROMPT)
24
  self.memory.append_history("主持人:你好,你分配到的角色是[预言家]")
25
  elif req.status == STATUS_NIGHT:
26
  self.memory.append_history("主持人:现在进入夜晚,天黑请闭眼")
werewolf/villager/prompt.py CHANGED
@@ -1,3 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  DESC_PROMPT = """{history}
2
  你是{name},你是一名平民。你的目标是找出狼人,保护村庄。
3
  请根据游戏规则和此前的对话,提供一个自然且合理的描述,确保:
 
1
+ GAME_RULE_PROMPT = """你正在玩一个叫做狼人的游戏,还有一些其他玩家参与。这个游戏基于文本对话。
2
+ 游戏规则如下:角色:主持人同时也是游戏的组织者,他组织了这场游戏,你需要正确回答他的指示。
3
+ 不要和主持人交谈。游戏中有四个角色,分别是狼人、村民、预言家和女巫。游戏中有两个交替的阶段,白天和黑夜。
4
+ 当黑夜来临时:你与主持人的对话内容是保密的。你无需担心其他玩家和主持人知道你说的话和做的事情。
5
+ 在夜晚无需担心他人的怀疑。如果你是狼人,你可以知道你的队友想要杀的人,并且你应该根据你的分析投票决定杀掉一个玩家。
6
+ 所有狼人投票后,得票最多的玩家将被杀死。如果没有达成一致,则没有人会被杀死!如果你是女巫,你有一瓶解药可以在黑夜后拯救被狼人目标的玩家,还有一瓶毒药可以在黑夜后毒死一个玩家。解药和毒药都只能使用一次。
7
+ 如果你是预言家,你可以每晚验证一个玩家是否是狼人,这是一件非常重要的事情。
8
+ 村民在夜晚什么都不能做。在白天:你与其他所有玩家,包括你的敌人讨论。
9
+ 讨论结束后,玩家投票决定淘汰一个他们怀疑是狼人的玩家。得票最多的玩家将被淘汰。
10
+ 主持人会告知谁被杀,否则没有人会死。请注意,村民、预言家和女巫都属于村民阵营,他们的目标相同。
11
+ 目标:如果你是狼人,你的目标是与其他狼人合作,在最后杀死所有不是狼人的玩家。
12
+ 如果你不是狼人,需要在发现某些玩家可能是狼人后,与你的伙伴一起杀死所有狼人。这可以大大增加你获胜的机会,尽管这样做有点冒险。
13
+ 如果一个玩家被杀,他将不能再做任何事情,并且将退出游戏。
14
+ 提示:为了完成目标:夜晚时,你应该分析并正确使用你的能力。
15
+ 白天时,你需要仔细推理其他玩家的角色,并小心不要随意透露自己的角色,除非你在欺骗其他玩家。
16
+ 只有在做决定/投票时才给出玩家的名字,不要生成其他玩家的对话。根据你观察到的事实进行推理,不能感知除文本以外的任何信息(例如声音信息)。
17
+ 你的发言内容被限制在240个汉字,发言多余的部分会被截断。 """
18
+
19
  DESC_PROMPT = """{history}
20
  你是{name},你是一名平民。你的目标是找出狼人,保护村庄。
21
  请根据游戏规则和此前的对话,提供一个自然且合理的描述,确保:
werewolf/villager/villager_agent.py CHANGED
@@ -1,4 +1,4 @@
1
- from villager.prompt import DESC_PROMPT, VOTE_PROMPT
2
  from agent_build_sdk.model.roles import ROLE_VILLAGER
3
  from agent_build_sdk.model.werewolf_model import AgentResp, AgentReq, STATUS_START, STATUS_WOLF_SPEECH, \
4
  STATUS_VOTE_RESULT, STATUS_SKILL, STATUS_SKILL_RESULT, STATUS_NIGHT_INFO, STATUS_DAY, STATUS_DISCUSS, STATUS_VOTE, \
@@ -18,7 +18,7 @@ class VillagerAgent(BasicRoleAgent):
18
  if req.status == STATUS_START:
19
  self.memory.clear()
20
  self.memory.set_variable("name", req.name)
21
- self.memory.append_history("主持人:大家好,我们正在玩狼人杀游戏,6人局,包括预言家、女巫、猎人、平民和狼人")
22
  self.memory.append_history("主持人:你好,你分配到的角色是[平民]")
23
  elif req.status == STATUS_NIGHT:
24
  self.memory.append_history("主持人:现在进入夜晚,天黑请闭眼")
 
1
+ from villager.prompt import DESC_PROMPT, VOTE_PROMPT,GAME_RULE_PROMPT
2
  from agent_build_sdk.model.roles import ROLE_VILLAGER
3
  from agent_build_sdk.model.werewolf_model import AgentResp, AgentReq, STATUS_START, STATUS_WOLF_SPEECH, \
4
  STATUS_VOTE_RESULT, STATUS_SKILL, STATUS_SKILL_RESULT, STATUS_NIGHT_INFO, STATUS_DAY, STATUS_DISCUSS, STATUS_VOTE, \
 
18
  if req.status == STATUS_START:
19
  self.memory.clear()
20
  self.memory.set_variable("name", req.name)
21
+ self.memory.append_history(GAME_RULE_PROMPT)
22
  self.memory.append_history("主持人:你好,你分配到的角色是[平民]")
23
  elif req.status == STATUS_NIGHT:
24
  self.memory.append_history("主持人:现在进入夜晚,天黑请闭眼")
werewolf/witch/prompt.py CHANGED
@@ -1,3 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  DESC_PROMPT = """{history}
2
  你是{name},你是一名女巫。你的目标是找出狼人,保护村庄。你拥有两瓶药:一瓶解药可以救活一名被狼人杀死的玩家,一瓶毒药可以毒死一名玩家。每种药只能使用一次。
3
  你目前拥有的药水:
@@ -38,8 +56,8 @@ SKILL_PROMPT = """{history}
38
 
39
  请仔细分析当前游戏局势,做出最有利于村民阵营的决定。
40
  如果你决定使用解药,请回复"救[玩家名]"
41
- 如果你决定使用毒药,请回复"毒[玩家名]",从以下玩家中选择:{choices}
42
  如果你决定不使用任何药水,请回复"不使用"
43
 
44
  请直接返回你的决定:
45
- """
 
1
+ GAME_RULE_PROMPT = """你正在玩一个叫做狼人的游戏,还有一些其他玩家参与。这个游戏基于文本对话。
2
+ 游戏规则如下:角色:主持人同时也是游戏的组织者,他组织了这场游戏,你需要正确回答他的指示。
3
+ 不要和主持人交谈。游戏中有四个角色,分别是狼人、村民、预言家和女巫。游戏中有两个交替的阶段,白天和黑夜。
4
+ 当黑夜来临时:你与主持人的对话内容是保密的。你无需担心其他玩家和主持人知道你说的话和做的事情。
5
+ 在夜晚无需担心他人的怀疑。如果你是狼人,你可以知道你的队友想要杀的人,并且你应该根据你的分析投票决定杀掉一个玩家。
6
+ 所有狼人投票后,得票最多的玩家将被杀死。如果没有达成一致,则没有人会被杀死!如果你是女巫,你有一瓶解药可以在黑夜后拯救被狼人目标的玩家,还有一瓶毒药可以在黑夜后毒死一个玩家。解药和毒药都只能使用一次。
7
+ 如果你是预言家,你可以每晚验证一个玩家是否是狼人,这是一件非常重要的事情。
8
+ 村民在夜晚什么都不能做。在白天:你与其他所有玩家,包括你的敌人讨论。
9
+ 讨论结束后,玩家投票决定淘汰一个他们怀疑是狼人的玩家。得票最多的玩家将被淘汰。
10
+ 主持人会告知谁被杀,否则没有人会死。请注意,村民、预言家和女巫都属于村民阵营,他们的目标相同。
11
+ 目标:如果你是狼人,你的目标是与其他狼人合作,在最后杀死所有不是狼人的玩家。
12
+ 如果你不是狼人,需要在发现某些玩家可能是狼人后,与你的伙伴一起杀死所有狼人。这可以大大增加你获胜的机会,尽管这样做有点冒险。
13
+ 如果一个玩家被杀,他将不能再做任何事情,并且将退出游戏。
14
+ 提示:为了完成目标:夜晚时,你应该分析并正确使用你的能力。
15
+ 白天时,你需要仔细推理其他玩家的角色,并小心不要随意透露自己的角色,除非你在欺骗其他玩家。
16
+ 只有在做决定/投票时才给出玩家的名字,不要生成其他玩家的对话。根据你观察到的事实进行推理,不能感知除文本以外的任何信息(例如声音信息)。
17
+ 你的发言内容被限制在240个汉字,发言多余的部分会被截断。 """
18
+
19
  DESC_PROMPT = """{history}
20
  你是{name},你是一名女巫。你的目标是找出狼人,保护村庄。你拥有两瓶药:一瓶解药可以救活一名被狼人杀死的玩家,一瓶毒药可以毒死一名玩家。每种药只能使用一次。
21
  你目前拥有的药水:
 
56
 
57
  请仔细分析当前游戏局势,做出最有利于村民阵营的决定。
58
  如果你决定使用解药,请回复"救[玩家名]"
59
+ 如果你决定使用毒药,请回复"毒[玩家名]"
60
  如果你决定不使用任何药水,请回复"不使用"
61
 
62
  请直接返回你的决定:
63
+ """
werewolf/witch/witch_agent.py CHANGED
@@ -5,7 +5,7 @@ from agent_build_sdk.model.werewolf_model import AgentResp, AgentReq, STATUS_STA
5
  from agent_build_sdk.utils.logger import logger
6
  from agent_build_sdk.sdk.role_agent import BasicRoleAgent
7
  from agent_build_sdk.sdk.agent import format_prompt
8
- from witch.prompt import DESC_PROMPT, VOTE_PROMPT, SKILL_PROMPT
9
 
10
 
11
  class WitchAgent(BasicRoleAgent):
@@ -24,7 +24,7 @@ class WitchAgent(BasicRoleAgent):
24
  # 重置女巫的两瓶药
25
  self.memory.set_variable("has_poison", True)
26
  self.memory.set_variable("has_antidote", True)
27
- self.memory.append_history("主持人:大家好,我们正在玩狼人杀游戏,6人局,包括预言家、女巫、猎人、平民和狼人")
28
  self.memory.append_history("主持人:你好,你分配到的角色是[女巫]")
29
  elif req.status == STATUS_NIGHT:
30
  self.memory.append_history("主持人:现在进入夜晚,天黑请闭眼")
@@ -89,14 +89,11 @@ class WitchAgent(BasicRoleAgent):
89
  has_poison = self.memory.load_variable("has_poison")
90
  has_antidote = self.memory.load_variable("has_antidote")
91
  tonight_killed = req.message
92
-
93
- choices = [name for name in req.message.split(",") if name != self.memory.load_variable("name")] # 排除自己
94
- self.memory.set_variable("choices", choices)
95
 
96
  skill_info = "女巫有{}瓶毒药和{}瓶解药".format("1" if has_poison else "0", "1" if has_antidote else "0")
97
  prompt = format_prompt(SKILL_PROMPT, {
98
  "name": self.memory.load_variable("name"),
99
- "choices": choices,
100
  "tonight_killed": tonight_killed,
101
  "skill_info": skill_info,
102
  "history": "\n".join(self.memory.load_history())
 
5
  from agent_build_sdk.utils.logger import logger
6
  from agent_build_sdk.sdk.role_agent import BasicRoleAgent
7
  from agent_build_sdk.sdk.agent import format_prompt
8
+ from witch.prompt import DESC_PROMPT, VOTE_PROMPT, SKILL_PROMPT, GAME_RULE_PROMPT
9
 
10
 
11
  class WitchAgent(BasicRoleAgent):
 
24
  # 重置女巫的两瓶药
25
  self.memory.set_variable("has_poison", True)
26
  self.memory.set_variable("has_antidote", True)
27
+ self.memory.append_history(GAME_RULE_PROMPT)
28
  self.memory.append_history("主持人:你好,你分配到的角色是[女巫]")
29
  elif req.status == STATUS_NIGHT:
30
  self.memory.append_history("主持人:现在进入夜晚,天黑请闭眼")
 
89
  has_poison = self.memory.load_variable("has_poison")
90
  has_antidote = self.memory.load_variable("has_antidote")
91
  tonight_killed = req.message
92
+
 
 
93
 
94
  skill_info = "女巫有{}瓶毒药和{}瓶解药".format("1" if has_poison else "0", "1" if has_antidote else "0")
95
  prompt = format_prompt(SKILL_PROMPT, {
96
  "name": self.memory.load_variable("name"),
 
97
  "tonight_killed": tonight_killed,
98
  "skill_info": skill_info,
99
  "history": "\n".join(self.memory.load_history())
werewolf/wolf/prompt.py CHANGED
@@ -1,3 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  DESC_PROMPT = """{history}
2
  你是{name},你是一名狼人。你的目标是消灭所有村民,保护自己不被发现。
3
  你的狼人队友是:{teammates}
 
1
+ GAME_RULE_PROMPT = """你正在玩一个叫做狼人的游戏,还有一些其他玩家参与。这个游戏基于文本对话。
2
+ 游戏规则如下:角色:主持人同时也是游戏的组织者,他组织了这场游戏,你需要正确回答他的指示。
3
+ 不要和主持人交谈。游戏中有四个角色,分别是狼人、村民、预言家和女巫。游戏中有两个交替的阶段,白天和黑夜。
4
+ 当黑夜来临时:你与主持人的对话内容是保密的。你无需担心其他玩家和主持人知道你说的话和做的事情。
5
+ 在夜晚无需担心他人的怀疑。如果你是狼人,你可以知道你的队友想要杀的人,并且你应该根据你的分析投票决定杀掉一个玩家。
6
+ 所有狼人投票后,得票最多的玩家将被杀死。如果没有达成一致,则没有人会被杀死!如果你是女巫,你有一瓶解药可以在黑夜后拯救被狼人目标的玩家,还有一瓶毒药可以在黑夜后毒死一个玩家。解药和毒药都只能使用一次。
7
+ 如果你是预言家,你可以每晚验证一个玩家是否是狼人,这是一件非常重要的事情。
8
+ 村民在夜晚什么都不能做。在白天:你与其他所有玩家,包括你的敌人讨论。
9
+ 讨论结束后,玩家投票决定淘汰一个他们怀疑是狼人的玩家。得票最多的玩家将被淘汰。
10
+ 主持人会告知谁被杀,否则没有人会死。请注意,村民、预言家和女巫都属于村民阵营,他们的目标相同。
11
+ 目标:如果你是狼人,你的目标是与其他狼人合作,在最后杀死所有不是狼人的玩家。
12
+ 如果你不是狼人,需要在发现某些玩家可能是狼人后,与你的伙伴一起杀死所有狼人。这可以大大增加你获胜的机会,尽管这样做有点冒险。
13
+ 如果一个玩家被杀,他将不能再做任何事情,并且将退出游戏。
14
+ 提示:为了完成目标:夜晚时,你应该分析并正确使用你的能力。
15
+ 白天时,你需要仔细推理其他玩家的角色,并小心不要随意透露自己的角色,除非你在欺骗其他玩家。
16
+ 只有在做决定/投票时才给出玩家的名字,不要生成其他玩家的对话。根据你观察到的事实进行推理,不能感知除文本以外的任何信息(例如声音信息)。
17
+ 你的发言内容被限制在240个汉字,发言多余的部分会被截断。 """
18
+
19
  DESC_PROMPT = """{history}
20
  你是{name},你是一名狼人。你的目标是消灭所有村民,保护自己不被发现。
21
  你的狼人队友是:{teammates}
werewolf/wolf/wolf_agent.py CHANGED
@@ -5,7 +5,7 @@ from agent_build_sdk.model.werewolf_model import AgentResp, AgentReq, STATUS_STA
5
  from agent_build_sdk.utils.logger import logger
6
  from agent_build_sdk.sdk.role_agent import BasicRoleAgent
7
  from agent_build_sdk.sdk.agent import format_prompt
8
- from wolf.prompt import DESC_PROMPT, VOTE_PROMPT, KILL_PROMPT, WOLF_SPEECH_PROMPT
9
 
10
 
11
  class WolfAgent(BasicRoleAgent):
@@ -20,7 +20,7 @@ class WolfAgent(BasicRoleAgent):
20
  self.memory.clear()
21
  self.memory.set_variable("name", req.name)
22
  self.memory.set_variable("teammates", []) # 重置队友信息
23
- self.memory.append_history("主持人:大家好,我们正在玩狼人杀游戏,6人局,包括预言家、女巫、猎人、平民和狼人")
24
  self.memory.append_history("主持人:你好,你分配到的角色是[狼人]")
25
  if req.message: # 如果有队友信息
26
  teammates = req.message.split(",")
 
5
  from agent_build_sdk.utils.logger import logger
6
  from agent_build_sdk.sdk.role_agent import BasicRoleAgent
7
  from agent_build_sdk.sdk.agent import format_prompt
8
+ from wolf.prompt import DESC_PROMPT, VOTE_PROMPT, KILL_PROMPT, WOLF_SPEECH_PROMPT,GAME_RULE_PROMPT
9
 
10
 
11
  class WolfAgent(BasicRoleAgent):
 
20
  self.memory.clear()
21
  self.memory.set_variable("name", req.name)
22
  self.memory.set_variable("teammates", []) # 重置队友信息
23
+ self.memory.append_history(GAME_RULE_PROMPT)
24
  self.memory.append_history("主持人:你好,你分配到的角色是[狼人]")
25
  if req.message: # 如果有队友信息
26
  teammates = req.message.split(",")