import gradio as gr import os from langchain.chat_models import ChatOpenAI from langchain.schema import HumanMessage, SystemMessage, AIMessage import utils.helper as hp # from dotenv import load_dotenv if "OPENAI_API_KEY" in os.environ and os.environ["OPENAI_API_KEY"] != "": openai_key = os.getenv("OPENAI_API_KEY") # load_dotenv("E:/Development/Python/scripts/keys.env") with gr.Blocks() as demo: if "openai_key" not in locals(): openai_key = gr.Text(label="OpenAI Key", placeholder="Paste your OpenAI API Key here") else: openai_key = gr.Text(label="OpenAI Key", placeholder=openai_key) openai_key.visible = 0 with gr.Row(): name1 = gr.Text(label="Character 1", name="name1") name2 = gr.Text(label="Character 2", name="name2") iterations = gr.Number( label="Iterations", name="iterations") btn_run = gr.Button("Run") output = gr.outputs.HTML( ) kofi_html = gr.HTML("""

Buy Me a Coffee at ko-fi.com

""") # components = [None, None, kofi_html] def format_chat(chat_history): chat_html = "
" for message in chat_history: chat_html += "

{}: {}

".format(message["color"], message["sender"], message["content"]) chat_html += "
" return chat_html def color_chg(name): background_color = (11, 15, 25) background_brightness = sum(background_color) / len(background_color) value = sum(ord(char) for char in name) red = (value % 128) + 128 green = (value // 128 % 128) + 128 blue = (value // 16384 % 128) + 128 # Calculate the contrast ratio between the background and the generated color brightness = (red + green + blue) / 3 contrast_ratio = max(brightness, background_brightness) / min(brightness, background_brightness) # Adjust the brightness of the generated color if the contrast ratio is too low if contrast_ratio < 4.5: # Increase the brightness by finding the ratio needed to achieve the desired contrast ratio brightness_ratio = 4.5 / contrast_ratio red = min(int(red * brightness_ratio), 255) green = min(int(green * brightness_ratio), 255) blue = min(int(blue * brightness_ratio), 255) color_hex = "#{:02x}{:02x}{:02x}".format(red, green, blue) return color_hex def initialize(name1, name2, iterations, openai_key): chat1 = ChatOpenAI(temperature=0.9, openai_api_key=openai_key) chat2 = ChatOpenAI(temperature=0.9, openai_api_key=openai_key) welcome_msg = hp.generate_welcome_message(name1, name2, openai_key) MessageStack1 = [SystemMessage(content=hp.generate_system_message(name1, openai_key)), AIMessage(content = "ACK"), HumanMessage(content=welcome_msg)] MessageStack2 = [SystemMessage(content=hp.generate_system_message(name2, openai_key)), AIMessage(content = "ACK")] MsgStack = [ name2+": " + welcome_msg] chat_history = [{"sender": name2, "content": welcome_msg, "color" : color_chg(name2)}] print( iterations) for i in range(int(iterations)): response1 = hp.filtered_response(chat1,MessageStack1) print(name1+": " + response1.content) MsgStack.append( name1+": "+response1.content) MessageStack1.append(AIMessage(content =response1.content)) MessageStack2.append(HumanMessage(content =response1.content)) response2 = hp.filtered_response(chat2,MessageStack2) print(name2+": "+response2.content) MsgStack.append( name2+": "+response2.content) chat_history.append({"sender": name1, "content": response1.content, "color" : color_chg(name1) } ) chat_history.append({"sender": name2, "content": response2.content, "color" : color_chg(name2) } ) return format_chat(chat_history) btn_run.click(fn=initialize, inputs=[name1, name2, iterations, openai_key], outputs = output) demo.launch( )