smgc commited on
Commit
477e039
1 Parent(s): 40d6495

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -27
app.py CHANGED
@@ -2,7 +2,7 @@ import os
2
  import json
3
  import uuid
4
  from datetime import datetime
5
- from flask import Flask, request, Response, jsonify, stream_with_context
6
  import socketio
7
  import requests
8
  import logging
@@ -31,7 +31,7 @@ class CustomFormatter(logging.Formatter):
31
 
32
  def setup_logging():
33
  logger = logging.getLogger()
34
- logger.setLevel(logging.DEBUG) # 设置为DEBUG级别以捕获更多信息
35
  handler = logging.StreamHandler()
36
  handler.setFormatter(CustomFormatter())
37
  logger.addHandler(handler)
@@ -165,14 +165,15 @@ def messages():
165
  nonlocal total_output_tokens
166
 
167
  def send_event(event_type, data):
168
- if isinstance(data, dict):
169
- data = json.dumps(data, ensure_ascii=False)
170
- event_data = f"event: {event_type}\ndata: {data}\n\n"
171
- logger.debug(f"Sending event: {event_type}")
172
- return event_data
173
-
174
- # 发送初始事件
175
- yield send_event("message_start", {
 
176
  "type": "message_start",
177
  "message": {
178
  "id": msg_id,
@@ -185,8 +186,8 @@ def messages():
185
  "usage": {"input_tokens": input_tokens, "output_tokens": total_output_tokens},
186
  },
187
  })
188
- yield send_event("content_block_start", {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}})
189
- yield send_event("ping", {"type": "ping"})
190
 
191
  def on_query_progress(data):
192
  nonlocal total_output_tokens, response_text
@@ -257,14 +258,14 @@ def messages():
257
  sio.sleep(0.1)
258
  while response_text:
259
  chunk = response_text.pop(0)
260
- yield send_event("content_block_delta", {
261
  "type": "content_block_delta",
262
  "index": 0,
263
  "delta": {"type": "text_delta", "text": chunk},
264
  })
265
 
266
  if timeout_event.is_set():
267
- yield send_event("content_block_delta", {
268
  "type": "content_block_delta",
269
  "index": 0,
270
  "delta": {"type": "text_delta", "text": "Request timed out"},
@@ -272,7 +273,7 @@ def messages():
272
 
273
  except Exception as e:
274
  logger.error(f"Error during socket connection: {str(e)}", exc_info=True)
275
- yield send_event("content_block_delta", {
276
  "type": "content_block_delta",
277
  "index": 0,
278
  "delta": {"type": "text_delta", "text": f"Error during socket connection: {str(e)}"},
@@ -282,21 +283,16 @@ def messages():
282
  if sio.connected:
283
  sio.disconnect()
284
 
285
- # 发送最终事件
286
- yield send_event("content_block_stop", {"type": "content_block_stop", "index": 0})
287
- yield send_event("message_delta", {
288
  "type": "message_delta",
289
  "delta": {"stop_reason": "end_turn", "stop_sequence": None},
290
  "usage": {"output_tokens": total_output_tokens},
291
  })
292
- yield send_event("message_stop", {"type": "message_stop"})
293
 
294
- headers = {
295
- 'Content-Type': 'text/event-stream',
296
- 'Cache-Control': 'no-cache',
297
- 'X-Accel-Buffering': 'no',
298
- }
299
- return Response(stream_with_context(generate()), headers=headers)
300
 
301
  except Exception as e:
302
  logger.error(f"Request error: {str(e)}", exc_info=True)
@@ -398,5 +394,4 @@ if __name__ == '__main__':
398
  })
399
  if not API_KEY:
400
  logger.warning("PPLX_KEY environment variable is not set", extra={'event_type': 'config_warning'})
401
- app.run(host='0.0.0.0', port=port, debug=False)
402
-
 
2
  import json
3
  import uuid
4
  from datetime import datetime
5
+ from flask import Flask, request, Response, jsonify
6
  import socketio
7
  import requests
8
  import logging
 
31
 
32
  def setup_logging():
33
  logger = logging.getLogger()
34
+ logger.setLevel(logging.INFO)
35
  handler = logging.StreamHandler()
36
  handler.setFormatter(CustomFormatter())
37
  logger.addHandler(handler)
 
165
  nonlocal total_output_tokens
166
 
167
  def send_event(event_type, data):
168
+ event = create_event(event_type, data)
169
+ logger.info(f"Sending {event_type} event", extra={
170
+ 'event_type': event_type,
171
+ 'data': {'content': event}
172
+ })
173
+ yield event
174
+
175
+ # Send initial events
176
+ yield from send_event("message_start", {
177
  "type": "message_start",
178
  "message": {
179
  "id": msg_id,
 
186
  "usage": {"input_tokens": input_tokens, "output_tokens": total_output_tokens},
187
  },
188
  })
189
+ yield from send_event("content_block_start", {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}})
190
+ yield from send_event("ping", {"type": "ping"})
191
 
192
  def on_query_progress(data):
193
  nonlocal total_output_tokens, response_text
 
258
  sio.sleep(0.1)
259
  while response_text:
260
  chunk = response_text.pop(0)
261
+ yield from send_event("content_block_delta", {
262
  "type": "content_block_delta",
263
  "index": 0,
264
  "delta": {"type": "text_delta", "text": chunk},
265
  })
266
 
267
  if timeout_event.is_set():
268
+ yield from send_event("content_block_delta", {
269
  "type": "content_block_delta",
270
  "index": 0,
271
  "delta": {"type": "text_delta", "text": "Request timed out"},
 
273
 
274
  except Exception as e:
275
  logger.error(f"Error during socket connection: {str(e)}", exc_info=True)
276
+ yield from send_event("content_block_delta", {
277
  "type": "content_block_delta",
278
  "index": 0,
279
  "delta": {"type": "text_delta", "text": f"Error during socket connection: {str(e)}"},
 
283
  if sio.connected:
284
  sio.disconnect()
285
 
286
+ # Send final events
287
+ yield from send_event("content_block_stop", {"type": "content_block_stop", "index": 0})
288
+ yield from send_event("message_delta", {
289
  "type": "message_delta",
290
  "delta": {"stop_reason": "end_turn", "stop_sequence": None},
291
  "usage": {"output_tokens": total_output_tokens},
292
  })
293
+ yield from send_event("message_stop", {"type": "message_stop"})
294
 
295
+ return Response(generate(), content_type='text/event-stream')
 
 
 
 
 
296
 
297
  except Exception as e:
298
  logger.error(f"Request error: {str(e)}", exc_info=True)
 
394
  })
395
  if not API_KEY:
396
  logger.warning("PPLX_KEY environment variable is not set", extra={'event_type': 'config_warning'})
397
+ app.run(host='0.0.0.0', port=port)