Update app.py
Browse files
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
|
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",
|