diff options
Diffstat (limited to 'g4f/gui')
-rw-r--r-- | g4f/gui/client/css/style.css | 33 | ||||
-rw-r--r-- | g4f/gui/client/html/index.html | 10 | ||||
-rw-r--r-- | g4f/gui/client/js/chat.v1.js | 52 | ||||
-rw-r--r-- | g4f/gui/server/backend.py | 48 |
4 files changed, 88 insertions, 55 deletions
diff --git a/g4f/gui/client/css/style.css b/g4f/gui/client/css/style.css index 59efeda0..c494de3a 100644 --- a/g4f/gui/client/css/style.css +++ b/g4f/gui/client/css/style.css @@ -260,6 +260,32 @@ body { z-index: 10000; } +.message .assistant{ + max-width: 48px; + max-height: 48px; + flex-shrink: 0; +} + +.message .assistant img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 8px; + outline: 1px solid var(--blur-border); +} + +.message .assistant:after { + content: "63"; + position: absolute; + bottom: 0; + right: 0; + height: 60%; + width: 60%; + background: var(--colour-3); + filter: blur(10px) opacity(0.5); + z-index: 10000; +} + .message .content { display: flex; flex-direction: column; @@ -280,6 +306,13 @@ body { z-index: 1000; } +.message .assistant i { + position: absolute; + bottom: -6px; + right: -6px; + z-index: 1000; +} + .new_convo { padding: 8px 12px; display: flex; diff --git a/g4f/gui/client/html/index.html b/g4f/gui/client/html/index.html index 9dea5fe6..66534a51 100644 --- a/g4f/gui/client/html/index.html +++ b/g4f/gui/client/html/index.html @@ -130,9 +130,9 @@ <option value="google-bard">google-bard</option> <option value="google-palm">google-palm</option> <option value="bard">bard</option> - <option value="falcon-40b">falcon-40b</option> - <option value="falcon-7b">falcon-7b</option> - <option value="llama-13b">llama-13b</option> + <option value="llama2-7b">llama2-7b</option> + <option value="llama2-13b">llama2-13b</option> + <option value="llama2-70b">llama2-70b</option> <option value="command-nightly">command-nightly</option> <option value="gpt-neox-20b">gpt-neox-20b</option> <option value="santacoder">santacoder</option> @@ -188,7 +188,7 @@ <option value="g4f.Provider.Aibn">Aibn</option> <option value="g4f.Provider.Bing">Bing</option> <option value="g4f.Provider.You">You</option> - <option value="g4f.Provider.H2o">H2o</option> + <option value="g4f.Provider.Llama2">Llama2</option> <option value="g4f.Provider.Aivvm">Aivvm</option> </select> </div> @@ -203,4 +203,4 @@ </script> </body> -</html>
\ No newline at end of file +</html> diff --git a/g4f/gui/client/js/chat.v1.js b/g4f/gui/client/js/chat.v1.js index 233347ff..5b7a0bf0 100644 --- a/g4f/gui/client/js/chat.v1.js +++ b/g4f/gui/client/js/chat.v1.js @@ -31,12 +31,37 @@ const handle_ask = async () => { message_input.style.height = `80px`; message_input.focus(); + let txtMsgs = []; + const divTags = document.getElementsByClassName("message"); + for(let i=0;i<divTags.length;i++){ + if(!divTags[i].children[1].classList.contains("welcome-message")){ + if(divTags[i].children[0].className == "assistant"){ + const msg = { + role: "assistant", + content: divTags[i].children[1].textContent+" " + }; + txtMsgs.push(msg); + }else{ + const msg = { + role: "user", + content: divTags[i].children[1].textContent+" " + }; + txtMsgs.push(msg); + } + } + } + window.scrollTo(0, 0); let message = message_input.value; + const msg = { + role: "user", + content: message + }; + txtMsgs.push(msg); if (message.length > 0) { message_input.value = ``; - await ask_gpt(message); + await ask_gpt(txtMsgs); } }; @@ -49,13 +74,13 @@ const remove_cancel_button = async () => { }, 300); }; -const ask_gpt = async (message) => { +const ask_gpt = async (txtMsgs) => { try { message_input.value = ``; message_input.innerHTML = ``; message_input.innerText = ``; - add_conversation(window.conversation_id, message); + add_conversation(window.conversation_id, txtMsgs[0].content); window.scrollTo(0, 0); window.controller = new AbortController(); @@ -75,7 +100,7 @@ const ask_gpt = async (message) => { <i class="fa-regular fa-phone-arrow-up-right"></i> </div> <div class="content" id="user_${token}"> - ${format(message)} + ${format(txtMsgs[txtMsgs.length-1].content)} </div> </div> `; @@ -87,7 +112,7 @@ const ask_gpt = async (message) => { message_box.innerHTML += ` <div class="message"> - <div class="user"> + <div class="assistant"> ${gpt_image} <i class="fa-regular fa-phone-arrow-down-left"></i> </div> <div class="content" id="gpt_${window.token}"> @@ -120,12 +145,7 @@ const ask_gpt = async (message) => { conversation: await get_conversation(window.conversation_id), internet_access: document.getElementById(`switch`).checked, content_type: `text`, - parts: [ - { - content: message, - role: `user`, - }, - ], + parts: txtMsgs, }, }, }), @@ -154,7 +174,7 @@ const ask_gpt = async (message) => { document.getElementById(`gpt_${window.token}`).innerHTML = "An error occured, please try again, if the problem persists, please reload / refresh cache or use a differnet browser"; } - add_message(window.conversation_id, "user", message); + add_message(window.conversation_id, "user", txtMsgs[txtMsgs.length-1].content); add_message(window.conversation_id, "assistant", text); message_box.scrollTop = message_box.scrollHeight; @@ -165,7 +185,7 @@ const ask_gpt = async (message) => { window.scrollTo(0, 0); } catch (e) { - add_message(window.conversation_id, "user", message); + add_message(window.conversation_id, "user", txtMsgs[txtMsgs.length-1].content); message_box.scrollTop = message_box.scrollHeight; await remove_cancel_button(); @@ -279,7 +299,7 @@ const load_conversation = async (conversation_id) => { for (item of conversation.items) { message_box.innerHTML += ` <div class="message"> - <div class="user"> + <div class=${item.role == "assistant" ? "assistant" : "user"}> ${item.role == "assistant" ? gpt_image : user_image} ${item.role == "assistant" ? `<i class="fa-regular fa-phone-arrow-down-left"></i>` @@ -316,7 +336,7 @@ const get_conversation = async (conversation_id) => { const add_conversation = async (conversation_id, content) => { if (content.length > 17) { - title = content.substring(0, 17) + '..' + title = content.substring(0, 17) + '...' } else { title = content + ' '.repeat(19 - content.length) } @@ -461,7 +481,7 @@ const say_hello = async () => { message_box.innerHTML += ` <div class="message"> - <div class="user"> + <div class="assistant"> ${gpt_image} <i class="fa-regular fa-phone-arrow-down-left"></i> </div> diff --git a/g4f/gui/server/backend.py b/g4f/gui/server/backend.py index cf6d6358..3d7bfedc 100644 --- a/g4f/gui/server/backend.py +++ b/g4f/gui/server/backend.py @@ -1,5 +1,4 @@ import g4f -import json from flask import request from .internet import search @@ -44,45 +43,26 @@ class Backend_Api: } def _conversation(self): - config = None - proxy = None try: - config = json.load(open("config.json","r",encoding="utf-8")) - proxy = config["proxy"] - - except Exception: - pass - - try: - jailbreak = request.json['jailbreak'] - internet_access = request.json['meta']['content']['internet_access'] - conversation = request.json['meta']['content']['conversation'] - prompt = request.json['meta']['content']['parts'][0] + #jailbreak = request.json['jailbreak'] + #internet_access = request.json['meta']['content']['internet_access'] + #conversation = request.json['meta']['content']['conversation'] + prompt = request.json['meta']['content']['parts'] model = request.json['model'] provider = request.json.get('provider').split('g4f.Provider.')[1] - messages = special_instructions[jailbreak] + conversation + search(internet_access, prompt) + [prompt] + messages = prompt + print(messages) def stream(): - if proxy != None: - yield from g4f.ChatCompletion.create( - model=model, - provider=get_provider(provider), - messages=messages, - stream=True, - proxy=proxy - ) if provider else g4f.ChatCompletion.create( - model=model, messages=messages, stream=True, proxy=proxy - ) - else: - yield from g4f.ChatCompletion.create( - model=model, - provider=get_provider(provider), - messages=messages, - stream=True, - ) if provider else g4f.ChatCompletion.create( - model=model, messages=messages, stream=True - ) + yield from g4f.ChatCompletion.create( + model=model, + provider=get_provider(provider), + messages=messages, + stream=True, + ) if provider else g4f.ChatCompletion.create( + model=model, messages=messages, stream=True + ) return self.app.response_class(stream(), mimetype='text/event-stream') |