smgc commited on
Commit
15dd0c2
1 Parent(s): 569a702

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -20
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
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.INFO)
35
  handler = logging.StreamHandler()
36
  handler.setFormatter(CustomFormatter())
37
  logger.addHandler(handler)
@@ -164,16 +164,15 @@ def messages():
164
  def generate():
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,8 +185,8 @@ def messages():
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,14 +257,14 @@ def messages():
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,7 +272,7 @@ def messages():
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,16 +282,21 @@ def messages():
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,4 +398,5 @@ if __name__ == '__main__':
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)
 
 
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
 
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)
 
164
  def generate():
165
  nonlocal total_output_tokens
166
 
167
+ yield 'retry: 1000\n\n' # 设置重试间隔
168
+
169
  def send_event(event_type, data):
170
  event = create_event(event_type, data)
171
+ logger.debug(f"Sending event: {event_type}")
172
+ return event
 
 
 
173
 
174
+ # 发送初始事件
175
+ yield send_event("message_start", {
176
  "type": "message_start",
177
  "message": {
178
  "id": msg_id,
 
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
  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
 
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
  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
  })
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
+