Spaces:
Sleeping
Sleeping
Update query.py
Browse files
query.py
CHANGED
@@ -1,12 +1,6 @@
|
|
1 |
import requests
|
2 |
import json
|
3 |
import re
|
4 |
-
from urllib.parse import quote
|
5 |
-
|
6 |
-
def extract_between_tags(text, start_tag, end_tag):
|
7 |
-
start_index = text.find(start_tag)
|
8 |
-
end_index = text.find(end_tag, start_index)
|
9 |
-
return text[start_index+len(start_tag):end_index]
|
10 |
|
11 |
class VectaraQuery():
|
12 |
def __init__(self, api_key: str, customer_id: str, corpus_id: str, prompt_name: str = None):
|
@@ -68,7 +62,7 @@ class VectaraQuery():
|
|
68 |
response = requests.post(endpoint, data=json.dumps(body), verify=True, headers=self.get_headers(), stream=True)
|
69 |
if response.status_code != 200:
|
70 |
print(f"Query failed with code {response.status_code}, reason {response.reason}, text {response.text}")
|
71 |
-
return "Sorry, something went wrong
|
72 |
|
73 |
chunks = []
|
74 |
accumulated_text = "" # Initialize text accumulation
|
@@ -77,42 +71,17 @@ class VectaraQuery():
|
|
77 |
if line: # filter out keep-alive new lines
|
78 |
data = json.loads(line.decode('utf-8'))
|
79 |
res = data['result']
|
80 |
-
response_set = res['responseSet']
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
st_code = chat['status']
|
90 |
-
print(f"Chat query failed with code {st_code}")
|
91 |
-
if st_code == 'RESOURCE_EXHAUSTED':
|
92 |
-
self.conv_id = None
|
93 |
-
return 'Sorry, Vectara chat turns exceeds plan limit.'
|
94 |
-
return 'Sorry, something went wrong in my brain. Please try again later.'
|
95 |
-
conv_id = chat.get('conversationId', None) if chat else None
|
96 |
-
if conv_id:
|
97 |
-
self.conv_id = conv_id
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
if len(accumulated_text) > pattern_max_length:
|
102 |
-
accumulated_text = re.sub(r"\[\d+\]", "", accumulated_text)
|
103 |
-
accumulated_text = re.sub(r"\s+\.", ".", accumulated_text)
|
104 |
-
out_chunk = accumulated_text[:-pattern_max_length]
|
105 |
-
chunks.append(out_chunk)
|
106 |
-
yield out_chunk
|
107 |
-
accumulated_text = accumulated_text[-pattern_max_length:]
|
108 |
-
|
109 |
-
if summary['done']:
|
110 |
-
break
|
111 |
|
112 |
-
|
113 |
-
if len(accumulated_text) > 0:
|
114 |
-
accumulated_text = re.sub(r" \[\d+\]\.", ".", accumulated_text)
|
115 |
-
chunks.append(accumulated_text)
|
116 |
-
yield accumulated_text
|
117 |
-
|
118 |
-
return ''.join(chunks)
|
|
|
1 |
import requests
|
2 |
import json
|
3 |
import re
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
5 |
class VectaraQuery():
|
6 |
def __init__(self, api_key: str, customer_id: str, corpus_id: str, prompt_name: str = None):
|
|
|
62 |
response = requests.post(endpoint, data=json.dumps(body), verify=True, headers=self.get_headers(), stream=True)
|
63 |
if response.status_code != 200:
|
64 |
print(f"Query failed with code {response.status_code}, reason {response.reason}, text {response.text}")
|
65 |
+
return "Sorry, something went wrong. Please try again later."
|
66 |
|
67 |
chunks = []
|
68 |
accumulated_text = "" # Initialize text accumulation
|
|
|
71 |
if line: # filter out keep-alive new lines
|
72 |
data = json.loads(line.decode('utf-8'))
|
73 |
res = data['result']
|
74 |
+
response_set = res['responseSet']
|
75 |
+
|
76 |
+
if response_set:
|
77 |
+
for result in response_set:
|
78 |
+
text = result['text']
|
79 |
+
# Extract relevant information from the text
|
80 |
+
reason = re.search(r"Reason Why it Can't be Used: (.*?)\n", text).group(1)
|
81 |
+
alternative = re.search(r"Alternative: (.*?)\n", text).group(1)
|
82 |
+
notes = re.search(r"Notes: (.*?)\n", text).group(1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
|
84 |
+
response = f"Reason: {reason}\nAlternative: {alternative}\nNotes: {notes}"
|
85 |
+
return response
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
|
87 |
+
return "No relevant information found."
|
|
|
|
|
|
|
|
|
|
|
|