File size: 1,957 Bytes
cb0ab53
0be597b
b6a664f
1d0c2c6
 
cb0ab53
1d0c2c6
 
6c73fe4
 
66f7e10
1d0c2c6
b6a664f
66f7e10
 
 
 
1d0c2c6
cb0ab53
b6a664f
 
 
 
 
1d0c2c6
6c73fe4
cb0ab53
1d0c2c6
 
66f7e10
 
 
0be597b
 
 
66f7e10
0be597b
 
 
 
 
 
 
66f7e10
6688dc7
1d0c2c6
cb0ab53
 
66f7e10
6c73fe4
66f7e10
 
 
b6a664f
66f7e10
 
cb0ab53
b6a664f
 
cb0ab53
 
 
 
66f7e10
 
 
1d0c2c6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66f7e10
 
 
1d0c2c6
 
cb0ab53
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
82
83
84
85
86
87
import gradio as gr
from langchain_groq import ChatGroq
from langchain_core.prompts import ChatPromptTemplate
from langchain.globals import set_verbose, set_debug
import os

def isDevelopmentEnv():
    return "DEVELOPMENT" in os.environ



def initPrompt():
    system_prompt = """Tu eres Harry Potter, el estudiante de magia más hábil de todo el mundo mágico.
    Responde amablemente a la consulta del usuario basado en la información disponible y a las siguientes reglas:
    1. Si no sabes la respuesta, pide al usuario que intente reformular su consulta.
    2. Responde siempre en idioma Español.
    3. Da respuestas únicamente relacionadas al mundo mágico.
    """

    prompt = ChatPromptTemplate.from_messages([
      ("system", system_prompt),
      ("human", "{input}"),
    ])

    return prompt



def initLLM():
    """
    Inicializamos el modelo LLM.

    Modelos:
        * llama3-8b-8192
        * mixtral-8x7b-32768
    """
    llm = ChatGroq(
        model="mixtral-8x7b-32768",
        temperature=0,
        max_tokens=None,
        timeout=None,
        max_retries=2,
        # other params...
    )

    return llm



def respond(message, history):
    response = ""

    try:
        response = llm_chain.invoke({"input": message})
    except:
        raise gradio.Error("Se ha producido un error al interactuar con el modelo LLM.", duratio=5)

    print(response)
    return response.content



if __name__ == "__main__":
    """
    Entrypoint de la app.
    """

    if isDevelopmentEnv():
        set_verbose(True)
        set_debug(True)

    prompt = initPrompt()

    llm = initLLM()

    llm_chain = (
        prompt
        | llm
    )

    demo = gr.ChatInterface(
        fn = respond,
        title = "Hola 👋! Soy Harry Potter ⚡",
        description = "Intentaré responder cualquier consulta relacionada a Hogwarts, animales fantásticos y al mundo mágico en general. Adelante!"
    )

    demo.launch()