File size: 1,973 Bytes
7d2c473
8160127
a79a56f
4a766c1
5100159
f8a4c47
946827a
1fe1359
a0a031a
c501864
 
a0a031a
c501864
af78765
 
 
 
c501864
af78765
 
 
c501864
a0a031a
 
 
a79a56f
 
 
 
 
c4ecf05
4a766c1
1fe1359
c501864
3bbf5c2
d9f7657
 
 
 
 
 
 
 
 
 
 
 
 
4a766c1
1fe1359
a0a031a
1fe1359
5100159
a0a031a
1fe1359
7d2c473
 
 
0fa2257
5c113c1
7d2c473
 
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
import streamlit as st
from huggingface_hub import InferenceClient
from gtts import gTTS
import IPython.display as ipd

client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
system_prompt = "Tu nombre es Xaman 3.0"
system_prompt_sent = False

def format_prompt(message, history):
    global system_prompt_sent
    prompt = "<s>"

    if history is not None and isinstance(history, list):
        if not any(f"[INST] {system_prompt} [/INST]" in user_prompt for user_prompt, _ in history):
            prompt += f"[INST] {system_prompt} [/INST]"
            system_prompt_sent = True

        for user_prompt, bot_response in history:
            prompt += f"[INST] {user_prompt} [/INST]"
            prompt += f" {bot_response}</s> "

    prompt += f"[INST] {message} [/INST]"
    return prompt

def text_to_speech(text):
    tts = gTTS(text=text, lang='es')
    tts.save('output.mp3')
    return 'output.mp3'

def generate(
    user_input, history, temperature=None, max_new_tokens=2048, top_p=0.95, repetition_penalty=1.0,
):
    global system_prompt_sent
    temperature = float(temperature) if temperature is not None else 0.9
    if temperature < 1e-2:
        temperature = 1e-2
    top_p = float(top_p)

    generate_kwargs = dict(
        temperature=temperature,
        max_new_tokens=max_new_tokens,
        top_p=top_p,
        repetition_penalty=repetition_penalty,
        do_sample=True,
        seed=42,
    )

    formatted_prompt = format_prompt(user_input, history)
    
    stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=True)
    output = ""

    for response in stream:
        output += response.token.text
        st.text(output)
        ipd.Audio(text_to_speech(output), autoplay=True)
    
    return output

user_input = st.text_input(label="Usuario", value="Escribe aquí tu mensaje")
output = generate(user_input, history=None)  # Ajusta 'history' según sea necesario