返回提交历史
Modified
g4f/gui/client/js/chat.v1.js
+38
-52
Modified
g4f/gui/server/backend.py
+7
-7
XFEstudio/gpt4free
Improve error handling in gui
c7307030
代码差异
2 个文件
+45
-59
@@ -65,39 +65,37 @@ const remove_cancel_button = async () => {
65
65
const ask_gpt = async () => {
66
66
regenerate.classList.add(`regenerate-hidden`);
67
67
messages = await get_messages(window.conversation_id);
68
try {
69
window.scrollTo(0, 0);
70
window.controller = new AbortController();
71
68
72
jailbreak = document.getElementById("jailbreak");
73
provider = document.getElementById("provider");
74
model = document.getElementById("model");
75
prompt_lock = true;
76
window.text = ``;
69
window.scrollTo(0, 0);
70
window.controller = new AbortController();
77
71
78
stop_generating.classList.remove(`stop_generating-hidden`);
72
jailbreak = document.getElementById("jailbreak");
73
provider = document.getElementById("provider");
74
model = document.getElementById("model");
75
prompt_lock = true;
76
window.text = ``;
79
77
80
message_box.scrollTop = message_box.scrollHeight;
81
window.scrollTo(0, 0);
82
await new Promise((r) => setTimeout(r, 500));
83
window.scrollTo(0, 0);
78
stop_generating.classList.remove(`stop_generating-hidden`);
84
79
85
message_box.innerHTML += `
86
<div class="message">
87
<div class="assistant">
88
${gpt_image} <i class="fa-regular fa-phone-arrow-down-left"></i>
89
</div>
90
<div class="content" id="gpt_${window.token}">
91
<div id="cursor"></div>
92
</div>
93
</div>
94
`;
80
message_box.scrollTop = message_box.scrollHeight;
81
window.scrollTo(0, 0);
82
await new Promise((r) => setTimeout(r, 500));
83
window.scrollTo(0, 0);
95
84
96
message_box.scrollTop = message_box.scrollHeight;
97
window.scrollTo(0, 0);
98
await new Promise((r) => setTimeout(r, 1000));
99
window.scrollTo(0, 0);
85
message_box.innerHTML += `
86
<div class="message">
87
<div class="assistant">
88
${gpt_image} <i class="fa-regular fa-phone-arrow-down-left"></i>
89
</div>
90
<div class="content" id="gpt_${window.token}">
91
<div id="cursor"></div>
92
</div>
93
</div>
94
`;
100
95
96
message_box.scrollTop = message_box.scrollHeight;
97
window.scrollTo(0, 0);
98
try {
101
99
const response = await fetch(`/backend-api/v2/conversation`, {
102
100
method: `POST`,
103
101
signal: window.controller.signal,
@@ -122,8 +120,10 @@ const ask_gpt = async () => {
122
120
}),
123
121
});
124
122
125
const reader = response.body.getReader();
123
await new Promise((r) => setTimeout(r, 1000));
124
window.scrollTo(0, 0);
126
125
126
const reader = response.body.getReader();
127
127
while (true) {
128
128
const { value, done } = await reader.read();
129
129
if (done) break;
@@ -142,43 +142,29 @@ const ask_gpt = async () => {
142
142
}
143
143
144
144
if (text.includes(`G4F_ERROR`)) {
145
console.log("response", text);
145
146
document.getElementById(`gpt_${window.token}`).innerHTML = "An error occured, please try again, if the problem persists, please use a other model or provider";
146
147
}
147
148
add_message(window.conversation_id, "assistant", text);
149
150
message_box.scrollTop = message_box.scrollHeight;
151
await remove_cancel_button();
152
prompt_lock = false;
153
154
await load_conversations(20, 0);
155
window.scrollTo(0, 0);
156
157
148
} catch (e) {
158
159
message_box.scrollTop = message_box.scrollHeight;
160
await remove_cancel_button();
161
prompt_lock = false;
162
163
await load_conversations(20, 0);
164
165
149
console.log(e);
166
150
167
151
let cursorDiv = document.getElementById(`cursor`);
168
152
if (cursorDiv) cursorDiv.parentNode.removeChild(cursorDiv);
169
153
170
154
if (e.name != `AbortError`) {
171
let error_message = `oops ! something went wrong, please try again / reload. [stacktrace in console]`;
172
173
document.getElementById(`gpt_${window.token}`).innerHTML = error_message;
174
add_message(window.conversation_id, "assistant", error_message);
155
text = `oops ! something went wrong, please try again / reload. [stacktrace in console]`;
156
document.getElementById(`gpt_${window.token}`).innerHTML = text;
175
157
} else {
176
158
document.getElementById(`gpt_${window.token}`).innerHTML += ` [aborted]`;
177
add_message(window.conversation_id, "assistant", text + ` [aborted]`);
159
text += ` [aborted]`
178
160
}
179
180
window.scrollTo(0, 0);
181
161
}
162
add_message(window.conversation_id, "assistant", text);
163
message_box.scrollTop = message_box.scrollHeight;
164
await remove_cancel_button();
165
prompt_lock = false;
166
window.scrollTo(0, 0);
167
await load_conversations(20, 0);
182
168
regenerate.classList.remove(`regenerate-hidden`);
183
169
};
184
170
@@ -74,14 +74,14 @@ class Backend_Api:
74
74
provider = g4f.Provider.ProviderUtils.convert.get(provider)
75
75
76
76
def try_response():
77
response = g4f.ChatCompletion.create(
78
model=model,
79
provider=provider,
80
messages=messages,
81
stream=True,
82
ignore_stream_and_auth=True
83
)
84
77
try:
78
response = g4f.ChatCompletion.create(
79
model=model,
80
provider=provider,
81
messages=messages,
82
stream=True,
83
ignore_stream_and_auth=True
84
)
85
85
yield from response
86
86
except Exception as e:
87
87
print(e)