Skip to content
This repository has been archived by the owner on Sep 26, 2023. It is now read-only.

Commit

Permalink
Merge branch 'pre-release'
Browse files Browse the repository at this point in the history
  • Loading branch information
ramon-victor committed Jul 18, 2023
2 parents 096ad32 + d774781 commit 980e121
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 59 deletions.
27 changes: 13 additions & 14 deletions client/css/global.css
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,20 @@
font-family: var(--font-1);
}

.theme-light {
--colour-1: #f5f5f5;
--colour-2: #222222;
--colour-3: #333333;
--colour-4: #444444;
--colour-5: #fafafa;
--colour-6: #e0e0e0;

--accent: #3a3a3a;
--blur-bg: #f9f9f9;
--blur-border: #ebebeb;
--user-input: #333333;
--conversations: #555555;
}
.theme-light {
--colour-1: #f5f5f5;
--colour-2: #000000;
--colour-3: #474747;
--colour-4: #949494;
--colour-5: #ebebeb;
--colour-6: #dadada;

--accent: #3a3a3a;
--blur-bg: #ffffff;
--blur-border: #dbdbdb;
--user-input: #282828;
--conversations: #666666;
}

.theme-dark {
--colour-1: #181818;
Expand Down
91 changes: 46 additions & 45 deletions server/backend.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import re
import time
import g4f
from datetime import datetime
from g4f import ChatCompletion
from flask import request, Response, stream_with_context
from requests import get
Expand All @@ -23,51 +22,45 @@ def __init__(self, bp, config: dict) -> None:
}

def _conversation(self):
"""
Handles the conversation route.
"""
Handles the conversation route.
:return: Response object containing the generated conversation stream
:return: Response object containing the generated conversation stream
"""
max_retries = 3
retries = 0
conversation_id = request.json['conversation_id']

while retries < max_retries:
try:
jailbreak = request.json['jailbreak']
model = request.json['model']
messages = build_messages(jailbreak)
try:
jailbreak = request.json['jailbreak']
model = request.json['model']
messages = build_messages(jailbreak)

# Generate response
response = ChatCompletion.create(
model=model,
stream=True,
chatId=conversation_id,
messages=messages
)
# Generate response
response = ChatCompletion.create(
model=model,
stream=True,
chatId=conversation_id,
messages=messages
)

return Response(stream_with_context(generate_stream(response, jailbreak)), mimetype='text/event-stream')
return Response(stream_with_context(generate_stream(response, jailbreak)), mimetype='text/event-stream')

except Exception as e:
print(e)
print(e.__traceback__.tb_next)
except Exception as e:
print(e)
print(e.__traceback__.tb_next)

retries += 1
if retries >= max_retries:
return {
'_action': '_ask',
'success': False,
"error": f"an error occurred {str(e)}"
}, 400
time.sleep(3) # Wait 3 second before trying again
return {
'_action': '_ask',
'success': False,
"error": f"an error occurred {str(e)}"
}, 400


def build_messages(jailbreak):
"""
Build the messages for the conversation.
"""
Build the messages for the conversation.
:param jailbreak: Jailbreak instruction string
:return: List of messages for the conversation
:param jailbreak: Jailbreak instruction string
:return: List of messages for the conversation
"""
_conversation = request.json['meta']['content']['conversation']
internet_access = request.json['meta']['content']['internet_access']
Expand All @@ -77,28 +70,32 @@ def build_messages(jailbreak):
conversation = _conversation

# Add web results if enabled
conversation += fetch_search_results(
prompt["content"]) if internet_access else []
if internet_access:
current_date = datetime.now().strftime("%Y-%m-%d")
query = f'Current date: {current_date}. ' + prompt["content"]
search_results = fetch_search_results(query)
conversation.extend(search_results)

# Add jailbreak instructions if enabled
if jailbreak_instructions := getJailbreak(jailbreak):
conversation += jailbreak_instructions
conversation.extend(jailbreak_instructions)

# Add the prompt
conversation += [prompt]
conversation.append(prompt)

# Reduce conversation size to avoid API Token quantity error
conversation = conversation[-4:] if len(conversation) > 3 else conversation
if len(conversation) > 3:
conversation = conversation[-4:]

return conversation


def fetch_search_results(query):
"""
Fetch search results for a given query.
"""
Fetch search results for a given query.
:param query: Search query string
:return: List of search results
:param query: Search query string
:return: List of search results
"""
search = get('https://ddg-api.herokuapp.com/search',
params={
Expand All @@ -110,7 +107,11 @@ def fetch_search_results(query):
for index, result in enumerate(search.json()):
snippet = f'[{index + 1}] "{result["snippet"]}" URL:{result["link"]}.'
snippets += snippet
return [{'role': 'system', 'content': snippets}]

response = "Here are some updated web searches. Use this to improve user response:"
response += snippets

return [{'role': 'system', 'content': response}]


def generate_stream(response, jailbreak):
Expand Down

0 comments on commit 980e121

Please sign in to comment.