smgc commited on
Commit
b95c660
1 Parent(s): 5192c54

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -11
app.py CHANGED
@@ -132,7 +132,6 @@ def messages():
132
  msg_id = str(uuid.uuid4())
133
  response_event = Event()
134
  response_text = []
135
- output_tokens = 0 # 初始化 output_tokens
136
 
137
  if not stream:
138
  # 处理 stream 为 false 的情况
@@ -142,7 +141,6 @@ def messages():
142
  log_request(request.remote_addr, request.path, 200)
143
 
144
  def generate():
145
- nonlocal output_tokens # 使用 nonlocal 声明 output_tokens
146
  yield create_event("message_start", {
147
  "type": "message_start",
148
  "message": {
@@ -178,20 +176,12 @@ def messages():
178
  sio.emit('perplexity_ask', (previous_messages, emit_data))
179
 
180
  def on_query_progress(data):
181
- nonlocal response_text, output_tokens # 使用 nonlocal 声明 response_text 和 output_tokens
182
  if 'text' in data:
183
  text = json.loads(data['text'])
184
  chunk = text['chunks'][-1] if text['chunks'] else None
185
  if chunk:
186
  response_text.append(chunk)
187
- output_tokens = calculate_tokens(''.join(response_text)) # 更新 output_tokens
188
-
189
- # 在 message_delta 事件中包含 output_tokens
190
- yield create_event("message_delta", {
191
- "type": "message_delta",
192
- "delta": {"stop_reason": None, "stop_sequence": None},
193
- "usage": {"input_tokens": input_tokens, "output_tokens": output_tokens},
194
- })
195
 
196
  # 检查是否是最终响应
197
  if data.get('final', False):
@@ -220,6 +210,13 @@ def messages():
220
 
221
  while not response_event.is_set():
222
  sio.sleep(0.1)
 
 
 
 
 
 
 
223
 
224
  except Exception as e:
225
  logging.error(f"Error during socket connection: {str(e)}")
@@ -232,6 +229,9 @@ def messages():
232
  if sio.connected:
233
  sio.disconnect()
234
 
 
 
 
235
  yield create_event("content_block_stop", {"type": "content_block_stop", "index": 0})
236
  yield create_event("message_delta", {
237
  "type": "message_delta",
 
132
  msg_id = str(uuid.uuid4())
133
  response_event = Event()
134
  response_text = []
 
135
 
136
  if not stream:
137
  # 处理 stream 为 false 的情况
 
141
  log_request(request.remote_addr, request.path, 200)
142
 
143
  def generate():
 
144
  yield create_event("message_start", {
145
  "type": "message_start",
146
  "message": {
 
176
  sio.emit('perplexity_ask', (previous_messages, emit_data))
177
 
178
  def on_query_progress(data):
179
+ nonlocal response_text
180
  if 'text' in data:
181
  text = json.loads(data['text'])
182
  chunk = text['chunks'][-1] if text['chunks'] else None
183
  if chunk:
184
  response_text.append(chunk)
 
 
 
 
 
 
 
 
185
 
186
  # 检查是否是最终响应
187
  if data.get('final', False):
 
210
 
211
  while not response_event.is_set():
212
  sio.sleep(0.1)
213
+ while response_text:
214
+ chunk = response_text.pop(0)
215
+ yield create_event("content_block_delta", {
216
+ "type": "content_block_delta",
217
+ "index": 0,
218
+ "delta": {"type": "text_delta", "text": chunk},
219
+ })
220
 
221
  except Exception as e:
222
  logging.error(f"Error during socket connection: {str(e)}")
 
229
  if sio.connected:
230
  sio.disconnect()
231
 
232
+ # 动态计算输出的 token 数量
233
+ output_tokens = calculate_tokens(''.join(response_text))
234
+
235
  yield create_event("content_block_stop", {"type": "content_block_stop", "index": 0})
236
  yield create_event("message_delta", {
237
  "type": "message_delta",