diff options
author | H Lohaus <hlohaus@users.noreply.github.com> | 2024-01-10 10:34:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-10 10:34:56 +0100 |
commit | bee75be8e38d25c4568c641412a49b576d425b24 (patch) | |
tree | 63ea1505dbe2b84c3011164a7b2699e642d94c19 /g4f/gui | |
parent | Merge pull request #1441 from w453y/patch-1 (diff) | |
download | gpt4free-bee75be8e38d25c4568c641412a49b576d425b24.tar gpt4free-bee75be8e38d25c4568c641412a49b576d425b24.tar.gz gpt4free-bee75be8e38d25c4568c641412a49b576d425b24.tar.bz2 gpt4free-bee75be8e38d25c4568c641412a49b576d425b24.tar.lz gpt4free-bee75be8e38d25c4568c641412a49b576d425b24.tar.xz gpt4free-bee75be8e38d25c4568c641412a49b576d425b24.tar.zst gpt4free-bee75be8e38d25c4568c641412a49b576d425b24.zip |
Diffstat (limited to 'g4f/gui')
-rw-r--r-- | g4f/gui/client/html/index.html | 5 | ||||
-rw-r--r-- | g4f/gui/client/js/chat.v1.js | 26 | ||||
-rw-r--r-- | g4f/gui/server/backend.py | 26 | ||||
-rw-r--r-- | g4f/gui/server/internet.py | 2 |
4 files changed, 40 insertions, 19 deletions
diff --git a/g4f/gui/client/html/index.html b/g4f/gui/client/html/index.html index da7aeefb..b47f2a37 100644 --- a/g4f/gui/client/html/index.html +++ b/g4f/gui/client/html/index.html @@ -125,6 +125,11 @@ <span class="about">Web Access</span> </div> <div class="field"> + <input type="checkbox" id="patch" /> + <label for="patch" title="Works only with Bing and some other providers"></label> + <span class="about">Image Generator</span> + </div> + <div class="field"> <select name="model" id="model"> <option value="gpt-3.5-turbo" selected="">gpt-3.5-turbo</option> <option value="gpt-3.5-turbo-0613">gpt-3.5-turbo-0613</option> diff --git a/g4f/gui/client/js/chat.v1.js b/g4f/gui/client/js/chat.v1.js index a335a3cc..9d49d24e 100644 --- a/g4f/gui/client/js/chat.v1.js +++ b/g4f/gui/client/js/chat.v1.js @@ -20,7 +20,10 @@ message_input.addEventListener("focus", () => { }); const markdown_render = (content) => { - return markdown.render(content) + return markdown.render(content + .replaceAll(/<!--.+-->/gm, "") + .replaceAll(/<img data-prompt="[^>]+">/gm, "") + ) .replaceAll("<a href=", '<a target="_blank" href=') .replaceAll('<code>', '<code class="language-plaintext">') } @@ -68,6 +71,15 @@ const ask_gpt = async () => { regenerate.classList.add(`regenerate-hidden`); messages = await get_messages(window.conversation_id); + // Remove generated images from history + for (i in messages) { + messages[i]["content"] = messages[i]["content"].replace( + /<!-- generated images start -->[\s\S]+<!-- generated images end -->/m, + "" + ) + delete messages[i]["provider"]; + } + window.scrollTo(0, 0); window.controller = new AbortController(); @@ -91,7 +103,8 @@ const ask_gpt = async () => { </div> <div class="content" id="gpt_${window.token}"> <div class="provider"></div> - <div class="content_inner"><div id="cursor"></div></div> + <div class="content_inner"></div> + <div id="cursor"></div> </div> </div> `; @@ -115,6 +128,7 @@ const ask_gpt = async () => { jailbreak: jailbreak.options[jailbreak.selectedIndex].value, internet_access: document.getElementById(`switch`).checked, provider: provider.options[provider.selectedIndex].value, + patch_provider: document.getElementById('patch').checked, meta: { id: window.token, content: { @@ -163,8 +177,6 @@ const ask_gpt = async () => { } catch (e) { console.log(e); - let cursorDiv = document.getElementById(`cursor`); - if (cursorDiv) cursorDiv.parentNode.removeChild(cursorDiv); if (e.name != `AbortError`) { text = `oops ! something went wrong, please try again / reload. [stacktrace in console]`; @@ -174,6 +186,8 @@ const ask_gpt = async () => { text += ` [aborted]` } } + let cursorDiv = document.getElementById(`cursor`); + if (cursorDiv) cursorDiv.parentNode.removeChild(cursorDiv); add_message(window.conversation_id, "assistant", text, provider); message_box.scrollTop = message_box.scrollHeight; await remove_cancel_button(); @@ -430,7 +444,7 @@ document.querySelector(".mobile-sidebar").addEventListener("click", (event) => { }); const register_settings_localstorage = async () => { - settings_ids = ["switch", "model", "jailbreak"]; + settings_ids = ["switch", "model", "jailbreak", "patch", "provider"]; settings_elements = settings_ids.map((id) => document.getElementById(id)); settings_elements.map((element) => element.addEventListener(`change`, async (event) => { @@ -449,7 +463,7 @@ const register_settings_localstorage = async () => { }; const load_settings_localstorage = async () => { - settings_ids = ["switch", "model", "jailbreak"]; + settings_ids = ["switch", "model", "jailbreak", "patch", "provider"]; settings_elements = settings_ids.map((id) => document.getElementById(id)); settings_elements.map((element) => { if (localStorage.getItem(element.id)) { diff --git a/g4f/gui/server/backend.py b/g4f/gui/server/backend.py index 595f5aa1..67f13de4 100644 --- a/g4f/gui/server/backend.py +++ b/g4f/gui/server/backend.py @@ -1,11 +1,11 @@ import logging -import g4f -from g4f.Provider import __providers__ - import json -from flask import request, Flask -from .internet import get_search_message -from g4f import debug, version +from flask import request, Flask +from g4f import debug, version, models +from g4f import _all_models, get_last_provider, ChatCompletion +from g4f.Provider import __providers__ +from g4f.Provider.bing.create_images import patch_provider +from .internet import get_search_message debug.logging = True @@ -45,7 +45,7 @@ class Backend_Api: return 'ok', 200 def models(self): - return g4f._all_models + return _all_models def providers(self): return [ @@ -69,25 +69,27 @@ class Backend_Api: if request.json.get('internet_access'): messages[-1]["content"] = get_search_message(messages[-1]["content"]) model = request.json.get('model') - model = model if model else g4f.models.default + model = model if model else models.default provider = request.json.get('provider', '').replace('g4f.Provider.', '') provider = provider if provider and provider != "Auto" else None - + patch = patch_provider if request.json.get('patch_provider') else None + def try_response(): try: first = True - for chunk in g4f.ChatCompletion.create( + for chunk in ChatCompletion.create( model=model, provider=provider, messages=messages, stream=True, - ignore_stream_and_auth=True + ignore_stream_and_auth=True, + patch_provider=patch ): if first: first = False yield json.dumps({ 'type' : 'provider', - 'provider': g4f.get_last_provider(True) + 'provider': get_last_provider(True) }) + "\n" yield json.dumps({ 'type' : 'content', diff --git a/g4f/gui/server/internet.py b/g4f/gui/server/internet.py index 97f842d7..6c2e3a89 100644 --- a/g4f/gui/server/internet.py +++ b/g4f/gui/server/internet.py @@ -145,5 +145,5 @@ User request: """ return message except Exception as e: - print("Couldn't search DuckDuckGo:", e) + print("Couldn't do web search:", e) return prompt |