File size: 1,855 Bytes
76b10aa
 
 
 
b15ea83
deee2a9
76b10aa
71ae54a
76b10aa
 
 
be25bb0
76b10aa
 
 
 
b15ea83
76b10aa
be25bb0
71ae54a
be25bb0
 
 
 
71ae54a
be25bb0
 
 
 
76b10aa
 
 
71ae54a
76b10aa
 
 
71ae54a
76b10aa
 
 
 
be25bb0
b15ea83
71ae54a
b15ea83
71ae54a
76b10aa
be25bb0
76b10aa
 
 
be25bb0
 
76b10aa
 
 
 
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
import gradio as gr
import torch
from transformers import pipeline

# 1. Configuraci贸n del modelo
model_id = "Fifthoply/AyudaAlan-0.1" 

print(f"Cargando {model_id} en CPU...")
pipe = pipeline(
    "text-generation",
    model=model_id,
    dtype=torch.float32,
    device_map="cpu"
)

def chat_responder(message, history):
    prompt = "<|im_start|>system\nEres un asistente breve.<|im_end|>\n"
    
    # Procesar historial con detecci贸n de formato autom谩tica
    for msg in history:
        # Caso 1: Formato de diccionario {"role": "...", "content": "..."}
        if isinstance(msg, dict):
            role = msg.get("role", "user")
            content = msg.get("content", "")
            prompt += f"<|im_start|>{role}\n{content}<|im_end|>\n"
        # Caso 2: Formato de lista cl谩sica [user, assistant]
        elif isinstance(msg, (list, tuple)):
            u, a = msg
            prompt += f"<|im_start|>user\n{u}<|im_end|>\n<|im_start|>assistant\n{a}<|im_end|>\n"
    
    prompt += f"<|im_start|>user\n{message}<|im_end|>\n<|im_start|>assistant\n"
    
    # Generaci贸n
    outputs = pipe(
        prompt, 
        max_new_tokens=25, 
        do_sample=False,
        pad_token_id=pipe.tokenizer.pad_token_id,
        eos_token_id=pipe.tokenizer.eos_token_id
    )
    
    # Extraer la respuesta (usando el 铆ndice [0] para asegurar el acceso al texto)
    generated_text = outputs[0]['generated_text']
    respuesta = generated_text.split("<|im_start|>assistant\n")[-1].split("<|im_end|>")[0].strip()
    
    return respuesta

# 2. Interfaz de Usuario (Sin argumentos problem谩ticos)
demo = gr.ChatInterface(
    fn=chat_responder,
    title="Ayuda Alan 馃Ε",
    description="Hazme una pregunta y te dir茅 c贸mo se hace.",
    examples=["驴C贸mo se toma agua?", "驴C贸mo se salta?"],
)

if __name__ == "__main__":
    demo.launch()