XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Fix show html in gui

3b7b79f5
Heiner Lohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

4 个文件 +25 -22
Modified g4f/client/service.py +7 -5
@@ -26,7 +26,8 @@ def get_model_and_provider(model : Union[Model, str],
26 26 stream : bool,
27 27 ignored : list[str] = None,
28 28 ignore_working: bool = False,
29 ignore_stream: bool = False) -> tuple[str, ProviderType]:
29 ignore_stream: bool = False,
30 logging: bool = True) -> tuple[str, ProviderType]:
30 31 """
31 32 Retrieves the model and provider based on input parameters.
32 33
@@ -92,10 +93,11 @@ def get_model_and_provider(model : Union[Model, str],
92 93 if not ignore_stream and not provider.supports_stream and stream:
93 94 raise StreamNotSupportedError(f'{provider_name} does not support "stream" argument')
94 95
95 if model:
96 debug.log(f'Using {provider_name} provider and {model} model')
97 else:
98 debug.log(f'Using {provider_name} provider')
96 if logging:
97 if model:
98 debug.log(f'Using {provider_name} provider and {model} model')
99 else:
100 debug.log(f'Using {provider_name} provider')
99 101
100 102 debug.last_provider = provider
101 103 debug.last_model = model
Modified g4f/gui/client/static/js/chat.v1.js +12 -14
@@ -503,7 +503,7 @@ async function add_message_chunk(message, message_id) {
503 503 } else if (message.type == "error") {
504 504 error_storage[message_id] = message.error
505 505 console.error(message.error);
506 content_map.inner.innerHTML += `<p><strong>An error occured:</strong> ${message.error}</p>`;
506 content_map.inner.innerHTML += markdown_render(`**An error occured:** ${message.error}`);
507 507 let p = document.createElement("p");
508 508 p.innerText = message.error;
509 509 log_storage.appendChild(p);
@@ -609,7 +609,7 @@ const ask_gpt = async (message_id, message_index = -1, regenerate = false, provi
609 609 const files = input && input.files.length > 0 ? input.files : null;
610 610 const auto_continue = document.getElementById("auto_continue")?.checked;
611 611 const download_images = document.getElementById("download_images")?.checked;
612 let api_key = get_api_key_by_provider(provider);
612 const api_key = get_api_key_by_provider(provider);
613 613 const ignored = Array.from(settings.querySelectorAll("input.provider:not(:checked)")).map((el)=>el.value);
614 614 await api("conversation", {
615 615 id: message_id,
@@ -635,7 +635,7 @@ const ask_gpt = async (message_id, message_index = -1, regenerate = false, provi
635 635 console.error(e);
636 636 if (e.name != "AbortError") {
637 637 error_storage[message_id] = true;
638 content_map.inner.innerHTML += `<p><strong>An error occured:</strong> ${e}</p>`;
638 content_map.inner.innerHTML += markdown_render(`**An error occured:** ${e}`);
639 639 }
640 640 }
641 641 delete controller_storage[message_id];
@@ -771,7 +771,6 @@ const set_conversation = async (conversation_id) => {
771 771 await load_conversation(conversation_id);
772 772 load_conversations();
773 773 hide_sidebar();
774 log_storage.classList.add("hidden");
775 774 };
776 775
777 776 const new_conversation = async () => {
@@ -785,7 +784,6 @@ const new_conversation = async () => {
785 784 }
786 785 load_conversations();
787 786 hide_sidebar();
788 log_storage.classList.add("hidden");
789 787 say_hello();
790 788 };
791 789
@@ -1104,10 +1102,10 @@ async function hide_sidebar() {
1104 1102
1105 1103 window.addEventListener('popstate', hide_sidebar, false);
1106 1104
1107 sidebar_button.addEventListener("click", (event) => {
1105 sidebar_button.addEventListener("click", async () => {
1108 1106 settings.classList.add("hidden");
1109 1107 if (sidebar.classList.contains("shown")) {
1110 hide_sidebar();
1108 await hide_sidebar();
1111 1109 } else {
1112 1110 sidebar.classList.add("shown");
1113 1111 sidebar_button.classList.add("rotated");
@@ -1365,11 +1363,10 @@ async function on_api() {
1365 1363 option = document.createElement("div");
1366 1364 option.classList.add("field");
1367 1365 option.innerHTML = `
1368 <div class="field">
1369 <span class="label">Enable ${provider.label}</span>
1370 <input id="Provider${provider.name}" type="checkbox" name="Provider${provider.name}" value="${provider.name}" class="provider" checked="">
1371 <label for="Provider${provider.name}" class="toogle" title="Remove provider from dropdown"></label>
1372 </div>`;
1366 <span class="label">Enable ${provider.label}</span>
1367 <input id="Provider${provider.name}" type="checkbox" name="Provider${provider.name}" value="${provider.name}" class="provider" checked="">
1368 <label for="Provider${provider.name}" class="toogle" title="Remove provider from dropdown"></label>
1369 `;
1373 1370 option.querySelector("input").addEventListener("change", (event) => load_provider_option(event.target, provider.name));
1374 1371 settings.querySelector(".paper").appendChild(option);
1375 1372 provider_options[provider.name] = option;
@@ -1405,7 +1402,7 @@ async function on_api() {
1405 1402 });
1406 1403 document.querySelector(".slide-systemPrompt")?.addEventListener("click", () => {
1407 1404 hide_systemPrompt.click();
1408 let checked = hide_systemPrompt.checked;
1405 const checked = hide_systemPrompt.checked;
1409 1406 systemPrompt.classList[checked ? "add": "remove"]("hidden");
1410 1407 slide_systemPrompt_icon.classList[checked ? "remove": "add"]("fa-angles-up");
1411 1408 slide_systemPrompt_icon.classList[checked ? "add": "remove"]("fa-angles-down");
@@ -1599,8 +1596,9 @@ function get_api_key_by_provider(provider) {
1599 1596 let api_key = null;
1600 1597 if (provider) {
1601 1598 api_key = document.getElementById(`${provider}-api_key`)?.value || null;
1602 if (api_key == null)
1599 if (api_key == null) {
1603 1600 api_key = document.querySelector(`.${provider}-api_key`)?.value || null;
1601 }
1604 1602 }
1605 1603 return api_key;
1606 1604 }
Modified g4f/gui/server/api.py +2 -1
@@ -130,7 +130,8 @@ class Api:
130 130 model, provider_handler = get_model_and_provider(
131 131 kwargs.get("model"), provider,
132 132 stream=True,
133 ignore_stream=True
133 ignore_stream=True,
134 logging=False
134 135 )
135 136 first = True
136 137 try:
Modified g4f/requests/raise_for_status.py +4 -2
@@ -29,8 +29,8 @@ async def raise_for_status_async(response: Union[StreamResponse, ClientResponse]
29 29 elif response.status == 403 and is_openai(message):
30 30 raise ResponseStatusError(f"Response {response.status}: OpenAI Bot detected")
31 31 elif not response.ok:
32 if "<html>" in message:
33 message = "HTML content"
32 if message is None and response.headers.get("content-type") == "text/html":
33 message = "Bad gateway" if response.status == 502 else "HTML content"
34 34 raise ResponseStatusError(f"Response {response.status}: {message}")
35 35
36 36 def raise_for_status(response: Union[Response, StreamResponse, ClientResponse, RequestsResponse], message: str = None):
@@ -42,4 +42,6 @@ def raise_for_status(response: Union[Response, StreamResponse, ClientResponse, R
42 42 elif response.status_code == 403 and is_cloudflare(response.text):
43 43 raise CloudflareError(f"Response {response.status_code}: Cloudflare detected")
44 44 elif not response.ok:
45 if message is None and response.headers.get("content-type") == "text/html":
46 message = "Bad gateway" if response.status_code == 502 else "HTML content"
45 47 raise ResponseStatusError(f"Response {response.status_code}: {response.text if message is None else message}")