kaggle-environments 1.14.3__py2.py3-none-any.whl → 1.14.5__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of kaggle-environments might be problematic. Click here for more details.
- kaggle_environments/__init__.py +1 -1
- kaggle_environments/envs/llm_20_questions/llm_20_questions.json +2 -1
- kaggle_environments/envs/llm_20_questions/llm_20_questions.py +102 -105
- {kaggle_environments-1.14.3.dist-info → kaggle_environments-1.14.5.dist-info}/METADATA +12 -12
- {kaggle_environments-1.14.3.dist-info → kaggle_environments-1.14.5.dist-info}/RECORD +9 -9
- {kaggle_environments-1.14.3.dist-info → kaggle_environments-1.14.5.dist-info}/WHEEL +1 -1
- {kaggle_environments-1.14.3.dist-info → kaggle_environments-1.14.5.dist-info}/LICENSE +0 -0
- {kaggle_environments-1.14.3.dist-info → kaggle_environments-1.14.5.dist-info}/entry_points.txt +0 -0
- {kaggle_environments-1.14.3.dist-info → kaggle_environments-1.14.5.dist-info}/top_level.txt +0 -0
kaggle_environments/__init__.py
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
"configuration": {
|
|
8
8
|
"episodeSteps": 61,
|
|
9
9
|
"actTimeout": 60,
|
|
10
|
+
"runTimeout": 9600,
|
|
10
11
|
"agentTimeout": {
|
|
11
12
|
"description": "Obsolete field kept for backwards compatibility, please use observation.remainingOverageTime.",
|
|
12
13
|
"type": "number",
|
|
@@ -68,4 +69,4 @@
|
|
|
68
69
|
"defaults": ["ACTIVE", "INACTIVE", "ACTIVE", "INACTIVE"]
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
|
-
|
|
72
|
+
|
|
@@ -20,6 +20,17 @@ model = None
|
|
|
20
20
|
tokenizer = None
|
|
21
21
|
model_initialized = False
|
|
22
22
|
|
|
23
|
+
ERROR = "ERROR"
|
|
24
|
+
DONE = "DONE"
|
|
25
|
+
INACTIVE = "INACTIVE"
|
|
26
|
+
ACTIVE = "ACTIVE"
|
|
27
|
+
TIMEOUT = "TIMEOUT"
|
|
28
|
+
|
|
29
|
+
GUESS = "guess"
|
|
30
|
+
ASK = "ask"
|
|
31
|
+
GUESSER = "guesser"
|
|
32
|
+
ANSWERER = "guesser"
|
|
33
|
+
|
|
23
34
|
keywords_list = json.loads(KEYWORDS_JSON)
|
|
24
35
|
keyword_cat = random.choice(keywords_list)
|
|
25
36
|
category = keyword_cat["category"]
|
|
@@ -42,12 +53,12 @@ def guesser_agent(obs):
|
|
|
42
53
|
)
|
|
43
54
|
|
|
44
55
|
prompt = ""
|
|
45
|
-
if obs.turnType ==
|
|
56
|
+
if obs.turnType == ASK:
|
|
46
57
|
prompt = "{}{}".format(
|
|
47
58
|
info_prompt.format(q_a_thread=q_a_thread),
|
|
48
59
|
questions_prompt
|
|
49
60
|
)
|
|
50
|
-
elif obs.turnType ==
|
|
61
|
+
elif obs.turnType == GUESS:
|
|
51
62
|
prompt = "{}{}".format(
|
|
52
63
|
info_prompt.format(q_a_thread=q_a_thread),
|
|
53
64
|
guess_prompt
|
|
@@ -73,7 +84,66 @@ def answerer_agent(obs):
|
|
|
73
84
|
return ""
|
|
74
85
|
|
|
75
86
|
|
|
76
|
-
agents = {
|
|
87
|
+
agents = {GUESSER: guesser_agent, ANSWERER: answerer_agent}
|
|
88
|
+
|
|
89
|
+
def guesser_action(active, inactive, step):
|
|
90
|
+
guessed = False
|
|
91
|
+
if not active.action:
|
|
92
|
+
active.status = ERROR
|
|
93
|
+
elif active.observation.turnType == ASK:
|
|
94
|
+
question = active.action[:2000]
|
|
95
|
+
active.observation.questions.append(question)
|
|
96
|
+
inactive.observation.questions.append(question)
|
|
97
|
+
elif active.observation.turnType == GUESS:
|
|
98
|
+
guess = active.action[:100]
|
|
99
|
+
active.observation.guesses.append(guess)
|
|
100
|
+
inactive.observation.guesses.append(guess)
|
|
101
|
+
if active.action and keyword_guessed(active.action):
|
|
102
|
+
guessed = True
|
|
103
|
+
score = 20 - int(step / 3)
|
|
104
|
+
end_game(active, inactive, score, DONE, DONE)
|
|
105
|
+
return guessed
|
|
106
|
+
|
|
107
|
+
def end_game(active, inactive, reward, status, inactive_status):
|
|
108
|
+
active.observation.keyword = keyword
|
|
109
|
+
active.observation.category = category
|
|
110
|
+
inactive.observation.keyword = keyword
|
|
111
|
+
inactive.observation.category = category
|
|
112
|
+
active.reward = reward
|
|
113
|
+
inactive.reward = reward
|
|
114
|
+
active.status = status
|
|
115
|
+
inactive.status = inactive_status
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def answerer_action(active, inactive):
|
|
119
|
+
active.observation.keyword = keyword
|
|
120
|
+
active.observation.category = category
|
|
121
|
+
response = active.action
|
|
122
|
+
if not response:
|
|
123
|
+
response = "none"
|
|
124
|
+
end_game(active, inactive, -1, ERROR, DONE)
|
|
125
|
+
elif "yes" in response.lower():
|
|
126
|
+
response = "yes"
|
|
127
|
+
elif "no" in response.lower():
|
|
128
|
+
response = "no"
|
|
129
|
+
else:
|
|
130
|
+
response = "maybe"
|
|
131
|
+
end_game(active, inactive, -1, ERROR, DONE)
|
|
132
|
+
active.observation.answers.append(response)
|
|
133
|
+
inactive.observation.answers.append(response)
|
|
134
|
+
|
|
135
|
+
def increment_turn(active, inactive, step, guessed):
|
|
136
|
+
if step == 59 and not guessed:
|
|
137
|
+
end_game(active, inactive, -1, DONE, DONE)
|
|
138
|
+
elif active.observation.turnType == "guess":
|
|
139
|
+
active.observation.turnType = "ask"
|
|
140
|
+
elif active.observation.turnType == "ask":
|
|
141
|
+
active.observation.turnType = "guess"
|
|
142
|
+
active.status = INACTIVE
|
|
143
|
+
inactive.status = ACTIVE
|
|
144
|
+
else:
|
|
145
|
+
active.status = INACTIVE
|
|
146
|
+
inactive.status = ACTIVE
|
|
77
147
|
|
|
78
148
|
|
|
79
149
|
def interpreter(state, env):
|
|
@@ -81,14 +151,14 @@ def interpreter(state, env):
|
|
|
81
151
|
return state
|
|
82
152
|
|
|
83
153
|
# Isolate the active and inactive agents.
|
|
84
|
-
active1 = state[0] if state[0].status ==
|
|
85
|
-
inactive1 = state[0] if state[0].status ==
|
|
86
|
-
active2 = state[2] if state[2].status ==
|
|
87
|
-
inactive2 = state[2] if state[2].status ==
|
|
88
|
-
if active1.status ==
|
|
154
|
+
active1 = state[0] if state[0].status == ACTIVE else state[1]
|
|
155
|
+
inactive1 = state[0] if state[0].status == INACTIVE else state[1]
|
|
156
|
+
active2 = state[2] if state[2].status == ACTIVE else state[3]
|
|
157
|
+
inactive2 = state[2] if state[2].status == INACTIVE else state[3]
|
|
158
|
+
if active1.status == DONE and inactive1.status == DONE:
|
|
89
159
|
active1 = None
|
|
90
160
|
inactive1 = None
|
|
91
|
-
if active2.status ==
|
|
161
|
+
if active2.status == DONE or inactive2.status == DONE:
|
|
92
162
|
active2 = None
|
|
93
163
|
inactive2 = None
|
|
94
164
|
if active1 is None and inactive1 is None and active2 is None and inactive2 is None:
|
|
@@ -96,110 +166,37 @@ def interpreter(state, env):
|
|
|
96
166
|
|
|
97
167
|
step = state[0].observation.step
|
|
98
168
|
|
|
169
|
+
end_early = (active1 and active1.status) in (TIMEOUT, ERROR) or (active2 and active2.status in (TIMEOUT, ERROR))
|
|
170
|
+
either_guessed = False
|
|
171
|
+
|
|
99
172
|
if active1 is not None:
|
|
100
173
|
guessed = False
|
|
101
|
-
if active1.observation.role ==
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
inactive1.observation.questions.append(active1.action)
|
|
105
|
-
elif active1.observation.turnType == "guess":
|
|
106
|
-
active1.observation.guesses.append(active1.action)
|
|
107
|
-
inactive1.observation.guesses.append(active1.action)
|
|
108
|
-
if keyword_guessed(active1.action):
|
|
109
|
-
guessed = True
|
|
110
|
-
score = 20 - int(step / 3)
|
|
111
|
-
active1.reward = score
|
|
112
|
-
inactive1.reward = score
|
|
113
|
-
active1.status = "DONE"
|
|
114
|
-
inactive1.status = "DONE"
|
|
115
|
-
active1.observation.keyword = keyword
|
|
116
|
-
active1.observation.category = category
|
|
117
|
-
inactive1.observation.keyword = keyword
|
|
118
|
-
inactive1.observation.category = category
|
|
174
|
+
if active1.observation.role == GUESSER:
|
|
175
|
+
guessed = guesser_action(active1, inactive1, step)
|
|
176
|
+
either_guessed = guessed
|
|
119
177
|
else:
|
|
120
|
-
active1
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
elif response.lower().__contains__("no"):
|
|
126
|
-
response = "no"
|
|
127
|
-
else:
|
|
128
|
-
response = "maybe"
|
|
129
|
-
active1.observation.answers.append(response)
|
|
130
|
-
inactive1.observation.answers.append(response)
|
|
131
|
-
|
|
132
|
-
if step == 59 and not guessed:
|
|
133
|
-
active1.observation.keyword = keyword
|
|
134
|
-
active1.observation.category = category
|
|
135
|
-
inactive1.observation.keyword = keyword
|
|
136
|
-
inactive1.observation.category = category
|
|
137
|
-
active1.reward = -1
|
|
138
|
-
inactive1.reward = -1
|
|
139
|
-
active1.status = "DONE"
|
|
140
|
-
inactive1.status = "DONE"
|
|
141
|
-
elif active1.observation.turnType == "guess":
|
|
142
|
-
active1.observation.turnType = "ask"
|
|
143
|
-
elif active1.observation.turnType == "ask":
|
|
144
|
-
active1.observation.turnType = "guess"
|
|
145
|
-
active1.status = "INACTIVE"
|
|
146
|
-
inactive1.status = "ACTIVE"
|
|
178
|
+
answerer_action(active1, inactive1)
|
|
179
|
+
if active1.status in (TIMEOUT, ERROR):
|
|
180
|
+
end_game(active1, inactive1, 0, active1.status, DONE)
|
|
181
|
+
elif end_early:
|
|
182
|
+
end_game(active1, inactive1, 0, DONE, DONE)
|
|
147
183
|
else:
|
|
148
|
-
active1
|
|
149
|
-
inactive1.status = "ACTIVE"
|
|
184
|
+
increment_turn(active1, inactive1, step, guessed)
|
|
150
185
|
|
|
151
186
|
if active2 is not None:
|
|
152
187
|
guessed = False
|
|
153
|
-
if active2.observation.role ==
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
inactive2.observation.questions.append(active2.action)
|
|
157
|
-
elif active2.observation.turnType == "guess":
|
|
158
|
-
active2.observation.guesses.append(active2.action)
|
|
159
|
-
inactive2.observation.guesses.append(active2.action)
|
|
160
|
-
if keyword_guessed(active2.action):
|
|
161
|
-
guessed = True
|
|
162
|
-
score = 20 - int(step / 3)
|
|
163
|
-
active2.reward = score
|
|
164
|
-
inactive2.reward = score
|
|
165
|
-
active2.status = "DONE"
|
|
166
|
-
inactive2.status = "DONE"
|
|
167
|
-
active2.observation.keyword = keyword
|
|
168
|
-
active2.observation.category = category
|
|
169
|
-
inactive2.observation.keyword = keyword
|
|
170
|
-
inactive2.observation.category = category
|
|
188
|
+
if active2.observation.role == GUESSER:
|
|
189
|
+
guessed = guesser_action(active2, inactive2, step)
|
|
190
|
+
either_guessed = either_guessed or guessed
|
|
171
191
|
else:
|
|
172
|
-
active2
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
elif response.lower().__contains__("no"):
|
|
178
|
-
response = "no"
|
|
179
|
-
else:
|
|
180
|
-
response = "maybe"
|
|
181
|
-
active2.observation.answers.append(response)
|
|
182
|
-
inactive2.observation.answers.append(response)
|
|
183
|
-
|
|
184
|
-
if step == 59 and not guessed:
|
|
185
|
-
active2.observation.keyword = keyword
|
|
186
|
-
active2.observation.category = category
|
|
187
|
-
inactive2.observation.keyword = keyword
|
|
188
|
-
inactive2.observation.category = category
|
|
189
|
-
active2.reward = -1
|
|
190
|
-
inactive2.reward = -1
|
|
191
|
-
active2.status = "DONE"
|
|
192
|
-
inactive2.status = "DONE"
|
|
193
|
-
elif active2.observation.turnType == "guess":
|
|
194
|
-
active2.observation.turnType = "ask"
|
|
195
|
-
elif active2.observation.turnType == "ask":
|
|
196
|
-
active2.observation.turnType = "guess"
|
|
197
|
-
active2.status = "INACTIVE"
|
|
198
|
-
inactive2.status = "ACTIVE"
|
|
192
|
+
answerer_action(active2, inactive2)
|
|
193
|
+
if active2.status in (TIMEOUT, ERROR):
|
|
194
|
+
end_game(active2, inactive2, 0, active2.status, DONE)
|
|
195
|
+
elif end_early:
|
|
196
|
+
end_game(active2, inactive2, 0, DONE, DONE)
|
|
199
197
|
else:
|
|
200
|
-
active2
|
|
201
|
-
|
|
202
|
-
|
|
198
|
+
increment_turn(active2, inactive2, step, guessed)
|
|
199
|
+
|
|
203
200
|
return state
|
|
204
201
|
|
|
205
202
|
|
|
@@ -207,7 +204,7 @@ def renderer(state, env):
|
|
|
207
204
|
|
|
208
205
|
for s in state:
|
|
209
206
|
print("role: ", s.observation.role)
|
|
210
|
-
if s.observation.role ==
|
|
207
|
+
if s.observation.role == GUESSER:
|
|
211
208
|
transcript = ""
|
|
212
209
|
for i in range(0, len(s.observation.guesses)):
|
|
213
210
|
transcript = "{}Q: {} A: {}\nG: {}\n".format(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kaggle-environments
|
|
3
|
-
Version: 1.14.
|
|
3
|
+
Version: 1.14.5
|
|
4
4
|
Summary: Kaggle Environments
|
|
5
5
|
Home-page: https://github.com/Kaggle/kaggle-environments
|
|
6
6
|
Author: Kaggle
|
|
@@ -10,17 +10,17 @@ Keywords: Kaggle
|
|
|
10
10
|
Requires-Python: >=3.8
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
License-File: LICENSE
|
|
13
|
-
Requires-Dist: Flask
|
|
14
|
-
Requires-Dist: gymnasium
|
|
15
|
-
Requires-Dist: jsonschema
|
|
16
|
-
Requires-Dist: numpy
|
|
17
|
-
Requires-Dist: pettingzoo
|
|
18
|
-
Requires-Dist: requests
|
|
19
|
-
Requires-Dist: scipy
|
|
20
|
-
Requires-Dist: shimmy
|
|
21
|
-
Requires-Dist: stable-baselines3
|
|
22
|
-
Requires-Dist: transformers
|
|
23
|
-
Requires-Dist: vec-noise
|
|
13
|
+
Requires-Dist: Flask >=1.1.2
|
|
14
|
+
Requires-Dist: gymnasium ==0.29.0
|
|
15
|
+
Requires-Dist: jsonschema >=3.0.1
|
|
16
|
+
Requires-Dist: numpy >=1.19.5
|
|
17
|
+
Requires-Dist: pettingzoo ==1.24.0
|
|
18
|
+
Requires-Dist: requests >=2.25.1
|
|
19
|
+
Requires-Dist: scipy >=1.11.2
|
|
20
|
+
Requires-Dist: shimmy >=1.2.1
|
|
21
|
+
Requires-Dist: stable-baselines3 ==2.1.0
|
|
22
|
+
Requires-Dist: transformers >=4.33.1
|
|
23
|
+
Requires-Dist: vec-noise >=1.1.4
|
|
24
24
|
|
|
25
25
|
# [<img src="https://kaggle.com/static/images/site-logo.png" height="50" style="margin-bottom:-15px" />](https://kaggle.com) Environments
|
|
26
26
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
kaggle_environments/__init__.py,sha256=
|
|
1
|
+
kaggle_environments/__init__.py,sha256=sQ-D4OKiM-2xFoo9MlUPMX_TYBykHXx-VQE9QWp-ro0,1702
|
|
2
2
|
kaggle_environments/agent.py,sha256=BpYrAC6EOhJF3Wzynq-CWg8l-z5uXW1Lq4qUsyOM0ik,6203
|
|
3
3
|
kaggle_environments/api.py,sha256=eLBKqr11Ku4tdsMUdUqy74FIVEA_hdV3_QUpX84x3Z8,798
|
|
4
4
|
kaggle_environments/core.py,sha256=IrEkN9cIA2djBAxI8Sz1GRpGNKjhqbnBdV6irAeTm8Q,27851
|
|
@@ -71,8 +71,8 @@ kaggle_environments/envs/kore_fleets/starter_bots/ts/test/fullob.json,sha256=lEW
|
|
|
71
71
|
kaggle_environments/envs/kore_fleets/starter_bots/ts/test/observation.json,sha256=SIgLl8uTPmv2T_-g3gsFaibh_DWfvZNlZS7yPXL1Cnc,5998
|
|
72
72
|
kaggle_environments/envs/llm_20_questions/keywords.py,sha256=BnyVrV0_xbiDt_Td4YXSKae9hHndAo5YYfYVtyL4eS4,45282
|
|
73
73
|
kaggle_environments/envs/llm_20_questions/llm_20_questions.js,sha256=qy6V_j7GOqjCbCowBdJ6dtr23HCvK2MdSbQWi-0blPY,5923
|
|
74
|
-
kaggle_environments/envs/llm_20_questions/llm_20_questions.json,sha256=
|
|
75
|
-
kaggle_environments/envs/llm_20_questions/llm_20_questions.py,sha256=
|
|
74
|
+
kaggle_environments/envs/llm_20_questions/llm_20_questions.json,sha256=VYxgQEDCaJv910sQdE_FOtV2w1V83Y3C6nTjx4FFZyo,2101
|
|
75
|
+
kaggle_environments/envs/llm_20_questions/llm_20_questions.py,sha256=x5vPzxe0t-OZSUf_KBaiIlvW_PCbpKPqOE7ORPTCjXA,9073
|
|
76
76
|
kaggle_environments/envs/lux_ai_2021/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
77
|
kaggle_environments/envs/lux_ai_2021/agents.py,sha256=bDqsY17Jxrk69a8HXb96ex2U1ipKkQPVJuXxmiA5hMA,421
|
|
78
78
|
kaggle_environments/envs/lux_ai_2021/index.html,sha256=4Ec1FuHuuH1EvkvlLOpNUUFYLovnS_IA-rOOHEUjcGY,1550
|
|
@@ -176,9 +176,9 @@ kaggle_environments/envs/tictactoe/tictactoe.js,sha256=NZDT-oSG0a6a-rso9Ldh9qkJw
|
|
|
176
176
|
kaggle_environments/envs/tictactoe/tictactoe.json,sha256=zMXZ8-fpT7FBhzz2FFBvRLn4XwtngjEqOieMvI6cCj8,1121
|
|
177
177
|
kaggle_environments/envs/tictactoe/tictactoe.py,sha256=iLNU5V-lz7Xab-d1vpPMfU5jDM3QtgBUH63Y_SU7I9Y,3639
|
|
178
178
|
kaggle_environments/static/player.html,sha256=HH8qvFfTIDw8eZvw5W88jcCu58Lo4_eUQ1ak46KWVGQ,22945
|
|
179
|
-
kaggle_environments-1.14.
|
|
180
|
-
kaggle_environments-1.14.
|
|
181
|
-
kaggle_environments-1.14.
|
|
182
|
-
kaggle_environments-1.14.
|
|
183
|
-
kaggle_environments-1.14.
|
|
184
|
-
kaggle_environments-1.14.
|
|
179
|
+
kaggle_environments-1.14.5.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
180
|
+
kaggle_environments-1.14.5.dist-info/METADATA,sha256=Zn6TzB6J1NEXFrMd2W2M_DFkdXgqXQ_wZhx5uus8H18,10700
|
|
181
|
+
kaggle_environments-1.14.5.dist-info/WHEEL,sha256=m9WAupmBd2JGDsXWQGJgMGXIWbQY3F5c2xBJbBhq0nY,110
|
|
182
|
+
kaggle_environments-1.14.5.dist-info/entry_points.txt,sha256=HbVC-LKGQFV6lEEYBYyDTtrkHgdHJUWQ8_qt9KHGqz4,70
|
|
183
|
+
kaggle_environments-1.14.5.dist-info/top_level.txt,sha256=v3MMWIPMQFcI-WuF_dJngHWe9Bb2yH_6p4wat1x4gAc,20
|
|
184
|
+
kaggle_environments-1.14.5.dist-info/RECORD,,
|
|
File without changes
|
{kaggle_environments-1.14.3.dist-info → kaggle_environments-1.14.5.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|