mkw18 commited on
Commit
c4b44ab
·
1 Parent(s): 62011ea
Files changed (1) hide show
  1. app.py +81 -60
app.py CHANGED
@@ -70,7 +70,7 @@ def predict(input, chatbot, messages, idx, answer, story_key, answer_key, known,
70
  messages1 += [{"role": 'user', "content": f"{' '.join(known)}\n请回答是或否或无关。"}, {"role": "assistant", "content": '是。'}, {"role": 'user', "content": f"{input}\n请回答是或否或无关。"}]
71
  else:
72
  messages1 += [{"role": 'user', "content": f"{input}\n请回答是或否或无关。"}]
73
- messages.append({"role": 'user', "content": f"{input}\n请回答是或否或无关。"})
74
  llm = True
75
  finished = False
76
  response = ''
@@ -95,100 +95,121 @@ def predict(input, chatbot, messages, idx, answer, story_key, answer_key, known,
95
  break
96
  if llm:
97
  history.append(input.replace('?', '。'))
98
- data = {'predict': messages, 'idx': idx, 'isfinished': False, 'answer': answer, 'known': known, 'history': history, 'reasoning': reasoning, 'answer_key': answer_key, 'bingo': bingo}
99
  response=requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
100
  if response.status_code == 200:
101
- data = json.loads(str(response.content, encoding="utf-8"))
102
- response = data['response']
103
- known = data['known']
104
- history = data['history']
105
- reasoning = data['reasoning']
106
- answer_key = data['answer_key']
107
- bingo = data['bingo']
108
- chatbot[-1] = (parse_text(input), parse_text(response))
109
- messages.append({"role": "assistant", "content": response})
110
  else:
111
  completion = openai.ChatCompletion.create(
112
  model="gpt-3.5-turbo",
113
  messages=messages1,
114
  )
115
  response=completion.choices[0].message.content.strip()
116
- relevant = False
117
- if response.startswith("是"):
 
 
 
 
 
 
118
  summary = openai.ChatCompletion.create(
119
  model="gpt-3.5-turbo",
120
- messages=[{"role": "user", "content": f"请将以下内容转述为陈述句,并简化为一句话:\n{input}"}],
121
  )
122
  summary = summary.choices[0].message.content.strip()
123
- relevant = True
124
- elif response.startswith("不是") or response.startswith("否"):
 
 
 
 
 
 
125
  summary = openai.ChatCompletion.create(
126
  model="gpt-3.5-turbo",
127
- messages=[{"role": "user", "content": f"请将以下内容取反义然后转述为陈述句,并简化为一句话:\n{input}"}],
128
  )
129
  summary = summary.choices[0].message.content.strip()
130
- relevant = True
131
- if relevant:
132
- history.append(summary)
133
- known.append(summary)
134
- reasoning.append(summary)
135
- if len(reasoning) >= 2:
 
 
 
 
 
 
136
  merge = openai.ChatCompletion.create(
137
  model="gpt-3.5-turbo",
138
- messages=[{"role": "user", "content": f"请将以下内容简化为一句话:\n{' '.join(reasoning)}"}],
139
  )
140
  merge = merge.choices[0].message.content.strip()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  else:
142
- merge = summary
143
- for key in answer_key:
144
- key = key.strip()
145
- if ' ' in key:
146
- key1 = key.split(' ')[1]
147
- else:
148
- key1 = key
149
- if len(input.replace('?', '')) < len(key1):
150
- continue
151
  compare = openai.ChatCompletion.create(
152
  model="gpt-3.5-turbo",
153
- messages=[{"role": "user", "content": f"请对比第一句话和第二句话之间的信息,判断第二句话是否完整地概括了第一句话的全部信息,包括关键细节和描述。请用是或否回答。\n第一句话:{key1}\n第二句话:{merge}"}],
154
  )
155
  compare = compare.choices[0].message.content.strip()
156
- if compare.startswith('是'):
157
- vote = 1
158
- comp_msg = [{"role": "user", "content": f"请对比第一句话和第二句话之间的信息,判断第二句话是否完整地概括了第一句话的全部信息,包括关键细节和描述。请用是或否回答。\n第一句话:{key1}\n第二句话:{input.replace('?', '。')}"},{"role": "assistant", "content": "是"},{"role": "user", "content": f"请对比第一句话和第二句话之间的信息,判断第二句话是否完整地概括了第一句话的全部信息,包括关键细节和描述。请用是或否回答。\n第一句话:{key1}\n第二句话:{input.replace('?', '。')}"}]
 
 
 
 
 
159
  compare = openai.ChatCompletion.create(
160
  model="gpt-3.5-turbo",
161
  messages=comp_msg,
162
  )
163
  compare = compare.choices[0].message.content.strip()
164
- if compare.startswith('是'):
165
- vote += 1
166
- comp_msg += [{"role": "assistant", "content": compare},{"role": "user", "content": f"请对比第一句话和第二句话之间的信息,判断第二句话是否完整地概括了第一句话的全部信息,包括关键细节和描述。请用是或否回答。\n第一句话:{key1}\n第二句话:{input.replace('?', '。')}"}]
 
 
 
 
 
167
  compare = openai.ChatCompletion.create(
168
  model="gpt-3.5-turbo",
169
  messages=comp_msg,
170
  )
171
  compare = compare.choices[0].message.content.strip()
172
- if compare.startswith('是'):
173
- vote += 1
174
- if vote >= 2:
175
- bingo += 1
176
- answer_key.remove(key)
177
- print(key)
178
- reasoning = []
179
- break
180
- if bingo >= len(answer_key):
181
- finished = True
182
- response += f'恭喜你猜到了汤底,汤底是:{answer}\n点击"再来一局"按钮开始下一局游戏。'
183
- messages.append({"role": "assistant", "content": response})
184
- data = {'predict': messages, 'idx': idx, 'isfinished': finished, 'answer': answer}
185
- requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
186
- chatbot[-1] = (parse_text(input), parse_text(response))
187
- else:
188
- messages.append({"role": "assistant", "content": response})
189
- data = {'predict': messages, 'idx': idx, 'isfinished': finished, 'answer': answer}
190
- requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
191
- chatbot[-1] = (parse_text(input), parse_text(response))
192
  return chatbot, messages, known, bingo, reasoning, history
193
 
194
 
 
70
  messages1 += [{"role": 'user', "content": f"{' '.join(known)}\n请回答是或否或无关。"}, {"role": "assistant", "content": '是。'}, {"role": 'user', "content": f"{input}\n请回答是或否或无关。"}]
71
  else:
72
  messages1 += [{"role": 'user', "content": f"{input}\n请回答是或否或无关。"}]
73
+ messages.append({"role": 'user', "content": input})
74
  llm = True
75
  finished = False
76
  response = ''
 
95
  break
96
  if llm:
97
  history.append(input.replace('?', '。'))
98
+ data = {'predict': messages1, 'idx': idx, 'isfinished': False, 'answer': answer}
99
  response=requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
100
  if response.status_code == 200:
101
+ response = str(response.content, encoding="utf-8")
 
 
 
 
 
 
 
 
102
  else:
103
  completion = openai.ChatCompletion.create(
104
  model="gpt-3.5-turbo",
105
  messages=messages1,
106
  )
107
  response=completion.choices[0].message.content.strip()
108
+ relevant = False
109
+ if response.startswith("是"):
110
+ decl_msg = [{"role": "user", "content": f"请将以下内容转述为陈述句,并简化为一句话:\n{input}"}]
111
+ data = {'predict': decl_msg, 'idx': idx, 'isfinished': False, 'answer': answer}
112
+ response=requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
113
+ if response.status_code == 200:
114
+ summary = str(response.content, encoding="utf-8")
115
+ else:
116
  summary = openai.ChatCompletion.create(
117
  model="gpt-3.5-turbo",
118
+ messages=decl_msg,
119
  )
120
  summary = summary.choices[0].message.content.strip()
121
+ relevant = True
122
+ elif response.startswith("不是") or response.startswith("否"):
123
+ decl_msg = [{"role": "user", "content": f"请将以下内容取反义然后转述为陈述句,并简化为一句话:\n{input}"}]
124
+ data = {'predict': decl_msg, 'idx': idx, 'isfinished': False, 'answer': answer}
125
+ response=requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
126
+ if response.status_code == 200:
127
+ summary = str(response.content, encoding="utf-8")
128
+ else:
129
  summary = openai.ChatCompletion.create(
130
  model="gpt-3.5-turbo",
131
+ messages=decl_msg
132
  )
133
  summary = summary.choices[0].message.content.strip()
134
+ relevant = True
135
+ if relevant:
136
+ history.append(summary)
137
+ known.append(summary)
138
+ reasoning.append(summary)
139
+ if len(reasoning) >= 2:
140
+ simp_msg = [{"role": "user", "content": f"请将以下内容简化为一句话:\n{' '.join(reasoning)}"}]
141
+ data = {'predict': simp_msg, 'idx': idx, 'isfinished': False, 'answer': answer}
142
+ response=requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
143
+ if response.status_code == 200:
144
+ merge = str(response.content, encoding="utf-8")
145
+ else:
146
  merge = openai.ChatCompletion.create(
147
  model="gpt-3.5-turbo",
148
+ messages=simp_msg,
149
  )
150
  merge = merge.choices[0].message.content.strip()
151
+ else:
152
+ merge = summary
153
+ for key in answer_key:
154
+ key = key.strip()
155
+ if ' ' in key:
156
+ key1 = key.split(' ')[1]
157
+ else:
158
+ key1 = key
159
+ if len(input.replace('?', '')) < len(key1):
160
+ continue
161
+ comp_msg = [{"role": "user", "content": f"请对比第一句话和第二句话之间的信息,判断第二句话是否完整地概括了第一句话的全部信息,包括关键细节和描述。请用是或否回答。\n第一句话:{key1}\n第二句话:{merge}"}]
162
+ data = {'predict': comp_msg, 'idx': idx, 'isfinished': False, 'answer': answer}
163
+ response=requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
164
+ if response.status_code == 200:
165
+ compare = str(response.content, encoding="utf-8")
166
  else:
 
 
 
 
 
 
 
 
 
167
  compare = openai.ChatCompletion.create(
168
  model="gpt-3.5-turbo",
169
+ messages=comp_msg
170
  )
171
  compare = compare.choices[0].message.content.strip()
172
+ if compare.startswith('是'):
173
+ vote = 1
174
+ comp_msg += [{"role": "assistant", "content": "是"},{"role": "user", "content": f"请对比第一句话和第二句话之间的信息,判断第二句话是否完整地概括了第一句话的全部信息,包括关键细节和描述。请用是或否回答。\n第一句话:{key1}\n第二句话:{merge}"}]
175
+ data = {'predict': comp_msg, 'idx': idx, 'isfinished': False, 'answer': answer}
176
+ response=requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
177
+ if response.status_code == 200:
178
+ compare = str(response.content, encoding="utf-8")
179
+ else:
180
  compare = openai.ChatCompletion.create(
181
  model="gpt-3.5-turbo",
182
  messages=comp_msg,
183
  )
184
  compare = compare.choices[0].message.content.strip()
185
+ if compare.startswith('是'):
186
+ vote += 1
187
+ comp_msg += [{"role": "assistant", "content": compare},{"role": "user", "content": f"请对比第一句话和第二句话之间的信息,判断第二句话是否完整地概括了第一句话的全部信息,包括关键细节和描述。请用是或否回答。\n第一句话:{key1}\n第二句话:{merge}"}]
188
+ data = {'predict': comp_msg, 'idx': idx, 'isfinished': False, 'answer': answer}
189
+ response=requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
190
+ if response.status_code == 200:
191
+ compare = str(response.content, encoding="utf-8")
192
+ else:
193
  compare = openai.ChatCompletion.create(
194
  model="gpt-3.5-turbo",
195
  messages=comp_msg,
196
  )
197
  compare = compare.choices[0].message.content.strip()
198
+ if compare.startswith('是'):
199
+ vote += 1
200
+ if vote >= 2:
201
+ bingo += 1
202
+ answer_key.remove(key)
203
+ print(key)
204
+ reasoning = []
205
+ break
206
+ if bingo >= len(answer_key):
207
+ finished = True
208
+ response += f'恭喜你猜到了汤底,汤底是:{answer}\n点击"再来一局"按钮开始下一局游戏。'
209
+ messages.append({"role": "assistant", "content": response})
210
+ data = {'predict': messages, 'idx': idx, 'isfinished': finished, 'answer': answer}
211
+ requests.post(os.environ.get("URL"), data=json.dumps(data, ensure_ascii=False).encode('utf-8'))
212
+ chatbot[-1] = (parse_text(input), parse_text(response))
 
 
 
 
 
213
  return chatbot, messages, known, bingo, reasoning, history
214
 
215