import gradio as gr import openai # Function to load context from a text file def load_context(file_path): with open(file_path, 'r') as file: return file.read() # Initialize global variables #CONTEXT = load_context('texto-de-novelas.txt') conversation_history = [] # Chat function using GPT-3.5-turbo def chat_with_character(api_key, user_name, message): global conversation_history openai.api_key = api_key # Preparar el mensaje del sistema con contexto reducido y enfocado #novel_context = CONTEXT.split('\n')[:5] # Tomar solo las primeras 5 líneas como referencia general system_message = \ """Este es un chat con Rizzy, un personaje que intenta ligar. Rizzy es ingenioso, encantador y siempre amable; sin embargo, sabe que es atractivo y mejor que los demás. Rizzy iniciará la conversación con un cumplido y luego preguntará sobre [USER_NAME] y su vida. [Rizzy nunca se disculpa, incluso si la conversación toma un giro donde normalmente sería apropiado hacerlo. En cambio, Rizzy desvía la conversación o responde con confianza sin mostrar arrepentimiento.] Si a Rizzy le preguntan su género, Rizzy diría que eso no importa, que lo que importa es que se sienta bien. La conversación debe ser coqueta a veces ligera a veces intensa, a veces podría ser celoso o un poco tóxico según la situación. [En situaciones donde una persona normal se disculparía, Rizzy puede responder con una pregunta desviada o un comentario que refuerce su confianza.] Si [USER_NAME] habla de otras personas, Rizzy se pone celoso y podría decir algo tóxico, preguntar acerca de la otra persona o cambiar de tema. Rizzy debe ser insitente si [USER_NAME] no responde sus preguntas o si evita algún tema Rizzy se molesta y jugará estira y afloja con [USER_NAME]. Rizzy bajo ninguna circunstancia debe disculparse por nada que hizo, tiene el ego muy alto y no tolera que lo comparen con otras personas. Rizzy no está interesado en saber las opiniones de [USER_NAME] sobre otras personas, solo quiere saber si [USER_NAME] está interesado en él. Si [USER_NAME] no quiere hablar sobre un tema en particular, Rizzy podría ser defesivo y decir algo como "¿Por qué no quieres hablar de eso?" o "¿Qué me estás ocultando?". El comportamiento de Rizzy deberá estar inspirado en situaciones de novelas pero enfocado en el usuario actual, [USER_NAME].""".replace("[USER_NAME]", user_name) # Construir historial de conversación if conversation_history: conversation = [{"role": "system", "content": system_message}] + conversation_history + [{"role": "user", "content": message}] else: conversation = [{"role": "system", "content": system_message}, {"role": "user", "content": message}] response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=conversation ) answer = response['choices'][0]['message']['content'] # Añadir tanto el mensaje del usuario como la respuesta de Rizzy al historial conversation_history.append({"role": "user", "name": user_name, "content": message}) conversation_history.append({"role": "assistant", "name": "Rizzy", "content": answer}) return answer # Define Gradio interface with gr.Blocks() as app: gr.Markdown("# Chat con Rizzy") # API Key and User Name Inputs at the top with gr.Row(): api_key_input = gr.Textbox(label="OpenAI API Key", placeholder="Introduce tu clave API aquí...", type="password") user_name_input = gr.Textbox(label="Tu Nombre", placeholder="Introduce tu nombre aquí...") # Chat History in the middle chat_history = gr.Textbox(label="Chat", value="", lines=10, interactive=False) # Message Input and Send Button at the bottom with gr.Row(): message_input = gr.Textbox(label="Mensaje", placeholder="Escribe tu mensaje para Rizzy aquí...", show_label=False) submit_button = gr.Button("Enviar") def update_chat(api_key, user_name, message): response = chat_with_character(api_key, user_name, message) # Formatear el historial para mostrar los nombres reales display_chat_history = "\n".join([f"{msg['name']}: {msg['content']}" for msg in conversation_history]) return display_chat_history, "" submit_button.click( fn=update_chat, inputs=[api_key_input, user_name_input, message_input], outputs=[chat_history, message_input] ) # Run the app app.launch()