File size: 2,851 Bytes
1dab173 b6efea8 18d1fb2 1dab173 1428adb 59a6996 bc2cbdd 18d1fb2 bc2cbdd 8d6d876 1428adb c440981 07af2f0 1428adb 03a169e 07af2f0 8d6d876 0971aeb 381055c 5895153 6e68a35 18d1fb2 8d6d876 c440981 c8b5a35 c440981 18d1fb2 07af2f0 9e71877 07af2f0 1dab173 dca95b2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
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()
|