import os import openai from llama_index.core import StorageContext, load_index_from_storage, ServiceContext from github import Github import datetime import gradio as gr # Conectar Cuenta API de OpenAI openai_api_key = os.environ.get('openai_key') if openai_api_key: os.environ["OPENAI_API_KEY"] = openai_api_key openai.api_key = openai_api_key else: print("Error con la clave de acceso a OpenAI.") # Cargar entrenamiento y modelo exec(os.environ.get('storage_context')) # Carga contexto logs exec(os.environ.get('logs_context')) project_name = "PharmaWise 3.6 - demo Prospecto Genérico Vortioxetina V2C_STREAM" # Función para generar respuesta def predict(message): #respuesta = engine.query(message) # Respuesta con prompt sumado a la pregunta respuesta = engine.query(prompt + message) # Muestra la cadena que se va formando palabra por palabra partial_message = "" for chunk in respuesta.response_gen: partial_message += chunk yield partial_message # Luego de obtener la respuesta se realiza el commit en GitHub commit_to_github(message, partial_message) # Función para hacer commit def commit_to_github(message, response): if github_token: g = Github(github_token) repo = g.get_repo(repo_name) # Obtiene la fecha actual current_date = datetime.datetime.now().strftime("%Y-%m") # Nombre del archivo: nombre_del_proyecto/año-mes-nombre_del_proyecto.txt file_name = f"{project_name}/{current_date}-{project_name}.txt" # Descripción del commit commit_message = f"Actualización de {current_date}" # Contenido. Fecha, pregunta, respuesta content = f"({datetime.datetime.now().strftime('%d/%m/%Y %H:%M')})\nPregunta: {message}\nRespuesta: {response}\n----------\n" try: # Busca existencia de un .txt para actualizarlo con la nueva info existing_file = repo.get_contents(file_name) existing_content = existing_file.decoded_content.decode('utf-8') new_content = f"{existing_content}{content}" repo.update_file(file_name, commit_message, new_content, existing_file.sha, branch="main") except: # Si el archivo no existe, lo crea. Ej: cuando empieza un nuevo mes se crea un nuevo .txt repo.create_file(file_name, commit_message, content, branch="main") # Interfaz de Gradio gr.Interface( fn=predict, inputs=gr.Textbox(placeholder="Escribe una pregunta...", label="Pregunta"), outputs=gr.Textbox(label="Respuesta"), title=project_name, description="Realiza preguntas a tus datos y obtén respuestas en español.", theme='sudeepshouche/minimalist', examples=["¿Cuales son las contraindicaciones y como se toma?"], cache_examples=True, ).launch()