Update app.py
Browse files
app.py
CHANGED
@@ -2,11 +2,12 @@ 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
|
9 |
from threading import Event
|
|
|
10 |
|
11 |
app = Flask(__name__)
|
12 |
logging.basicConfig(level=logging.INFO)
|
@@ -122,8 +123,8 @@ def messages():
|
|
122 |
yield create_event("content_block_start", {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}})
|
123 |
yield create_event("ping", {"type": "ping"})
|
124 |
|
125 |
-
@
|
126 |
-
def
|
127 |
logging.info("Connected to Perplexity AI")
|
128 |
sio.emit('perplexity_ask', previous_messages, {
|
129 |
"version": "2.9",
|
@@ -142,37 +143,42 @@ def messages():
|
|
142 |
"query_source": "home"
|
143 |
})
|
144 |
|
145 |
-
@
|
146 |
-
def
|
147 |
if 'text' in data:
|
148 |
text = json.loads(data['text'])
|
149 |
chunk = text['chunks'][-1] if text['chunks'] else None
|
150 |
if chunk:
|
151 |
response_text.append(chunk)
|
152 |
-
|
153 |
"type": "content_block_delta",
|
154 |
"index": 0,
|
155 |
"delta": {"type": "text_delta", "text": chunk},
|
156 |
})
|
157 |
|
158 |
-
@
|
159 |
-
def
|
160 |
response_event.set()
|
161 |
|
162 |
-
@
|
163 |
-
def
|
164 |
logging.info("Disconnected from Perplexity AI")
|
165 |
response_event.set()
|
166 |
|
167 |
-
@
|
168 |
-
def
|
169 |
logging.error(f"Connection error: {data}")
|
170 |
-
|
171 |
"type": "content_block_delta",
|
172 |
"index": 0,
|
173 |
"delta": {"type": "text_delta", "text": f"Error connecting to Perplexity AI: {data}"},
|
174 |
})
|
175 |
-
|
|
|
|
|
|
|
|
|
|
|
176 |
|
177 |
try:
|
178 |
sio.connect('wss://www.perplexity.ai/', **connect_opts, headers=sio_opts['extraHeaders'])
|
|
|
2 |
import json
|
3 |
import uuid
|
4 |
from datetime import datetime
|
5 |
+
from flask import Flask, request, Response, jsonify, copy_current_request_context
|
6 |
import socketio
|
7 |
import requests
|
8 |
import logging
|
9 |
from threading import Event
|
10 |
+
from functools import partial
|
11 |
|
12 |
app = Flask(__name__)
|
13 |
logging.basicConfig(level=logging.INFO)
|
|
|
123 |
yield create_event("content_block_start", {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}})
|
124 |
yield create_event("ping", {"type": "ping"})
|
125 |
|
126 |
+
@copy_current_request_context
|
127 |
+
def on_connect():
|
128 |
logging.info("Connected to Perplexity AI")
|
129 |
sio.emit('perplexity_ask', previous_messages, {
|
130 |
"version": "2.9",
|
|
|
143 |
"query_source": "home"
|
144 |
})
|
145 |
|
146 |
+
@copy_current_request_context
|
147 |
+
def on_query_progress(data):
|
148 |
if 'text' in data:
|
149 |
text = json.loads(data['text'])
|
150 |
chunk = text['chunks'][-1] if text['chunks'] else None
|
151 |
if chunk:
|
152 |
response_text.append(chunk)
|
153 |
+
return create_event("content_block_delta", {
|
154 |
"type": "content_block_delta",
|
155 |
"index": 0,
|
156 |
"delta": {"type": "text_delta", "text": chunk},
|
157 |
})
|
158 |
|
159 |
+
@copy_current_request_context
|
160 |
+
def on_query_complete(data):
|
161 |
response_event.set()
|
162 |
|
163 |
+
@copy_current_request_context
|
164 |
+
def on_disconnect():
|
165 |
logging.info("Disconnected from Perplexity AI")
|
166 |
response_event.set()
|
167 |
|
168 |
+
@copy_current_request_context
|
169 |
+
def on_connect_error(data):
|
170 |
logging.error(f"Connection error: {data}")
|
171 |
+
return create_event("content_block_delta", {
|
172 |
"type": "content_block_delta",
|
173 |
"index": 0,
|
174 |
"delta": {"type": "text_delta", "text": f"Error connecting to Perplexity AI: {data}"},
|
175 |
})
|
176 |
+
|
177 |
+
sio.on('connect', on_connect)
|
178 |
+
sio.on('query_progress', on_query_progress)
|
179 |
+
sio.on('query_complete', on_query_complete)
|
180 |
+
sio.on('disconnect', on_disconnect)
|
181 |
+
sio.on('connect_error', on_connect_error)
|
182 |
|
183 |
try:
|
184 |
sio.connect('wss://www.perplexity.ai/', **connect_opts, headers=sio_opts['extraHeaders'])
|