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()