support dynamic timeout
Browse files
app.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
import openai
|
2 |
import tiktoken
|
3 |
|
|
|
4 |
import concurrent
|
5 |
import collections
|
6 |
import threading
|
@@ -116,6 +117,8 @@ def ask(query, timeout=600):
|
|
116 |
|
117 |
def askingChatGPT(qs, qas, min_interval_seconds=3, max_interval_seconds=15, max_retry_times=3):
|
118 |
|
|
|
|
|
119 |
for i, q in enumerate(qs):
|
120 |
ask_start_time = time.time()
|
121 |
|
@@ -134,13 +137,14 @@ def askingChatGPT(qs, qas, min_interval_seconds=3, max_interval_seconds=15, max_
|
|
134 |
retry_times = 0
|
135 |
a = None
|
136 |
while a is None and retry_times<max_retry_times:
|
137 |
-
a = ask_(q,
|
138 |
retry_times += 1
|
139 |
|
140 |
qas.append({"q":q, "a":a})
|
141 |
|
142 |
ask_end_time = time.time()
|
143 |
elapsed_time = ask_end_time - ask_start_time
|
|
|
144 |
delayTime = min_interval_seconds - elapsed_time
|
145 |
if delayTime>0:
|
146 |
time.sleep(delayTime)
|
|
|
1 |
import openai
|
2 |
import tiktoken
|
3 |
|
4 |
+
import numpy as np
|
5 |
import concurrent
|
6 |
import collections
|
7 |
import threading
|
|
|
117 |
|
118 |
def askingChatGPT(qs, qas, min_interval_seconds=3, max_interval_seconds=15, max_retry_times=3):
|
119 |
|
120 |
+
history_elapsed_time = [max_interval_seconds]*10
|
121 |
+
|
122 |
for i, q in enumerate(qs):
|
123 |
ask_start_time = time.time()
|
124 |
|
|
|
137 |
retry_times = 0
|
138 |
a = None
|
139 |
while a is None and retry_times<max_retry_times:
|
140 |
+
a = ask_(q, timeout=np.mean(sorted(history_elapsed_time)[:8]))
|
141 |
retry_times += 1
|
142 |
|
143 |
qas.append({"q":q, "a":a})
|
144 |
|
145 |
ask_end_time = time.time()
|
146 |
elapsed_time = ask_end_time - ask_start_time
|
147 |
+
history_elapsed_time = history_elapsed_time[1:] + [elapsed_time]
|
148 |
delayTime = min_interval_seconds - elapsed_time
|
149 |
if delayTime>0:
|
150 |
time.sleep(delayTime)
|