Dominio
Asistente que explica conceptos de IA generativa (fundamentos de LLM, ingeniería de prompts, RAG, agentes, ajuste fino)
a ejecutivos de empresas chilenas, con ejemplos de negocio, en español.
Datos de entrenamiento
- 300 pares pregunta–respuesta generados por un LLM comercial (profesor:
gpt-6-luna, API de OpenAI),
respuestas de 45 palabras o menos. Los datos no se publican en este repositorio.
- Entrenamiento: SFT con LoRA (r = 16, alpha = 32, módulos down_proj, gate_proj, k_proj, o_proj, q_proj, up_proj, v_proj),
3 épocas, tasa de aprendizaje 0.001, en un notebook sin GPU (Apple Silicon).
Resultados en el examen fijo
Examen de 12 preguntas que nunca se usaron para entrenar; un LLM juez (gpt-6-luna) califica de 1 a 10 contra la respuesta del profesor
(7 = aceptable).
Table with columns: Base (sin adaptador), Con adaptador | Base (sin adaptador) | Con adaptador |
|---|
| Nota media (1–10) | 3.42 | 5.17 |
| Respuestas aprobadas (≥ 7) | 0% | 8% |
Table with columns: Tema, Base, Con adaptador| Tema | Base | Con adaptador |
|---|
| Agentes de IA | 4 | 4.33 |
| Ajuste fino | 2 | 7 |
| Fundamentos de LLM | 4 | 6 |
| Ingeniería de prompts | 3.33 | 5.33 |
| RAG | 3.5 | 3.5 |
Una revisión de 10 respuestas del examen (detalle en el informe del taller) encontró que el juez califica en promedio ~0,7 puntos más alto,
por lo que estas notas probablemente sobrestiman la calidad. El examen es pequeño (12 preguntas): diferencias de ±0,2 son ruido.
Uso
from transformers import AutoModelForCausalLM, AutoTokenizerfrom peft import PeftModel base = "Qwen/Qwen2.5-0.5B-Instruct"tok = AutoTokenizer.from_pretrained(base)modelo = PeftModel.from_pretrained(AutoModelForCausalLM.from_pretrained(base), "Mithoz/taai2-destilado-qwen05b")msgs = [{"role": "system", "content": "Eres un asistente experto en IA generativa. Responde en español, de forma clara y breve."}, {"role": "user", "content": "¿Para qué sirve RAG en una clínica?"}]ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt", return_dict=True)out = modelo.generate(**ids, max_new_tokens=200, repetition_penalty=1.15)print(tok.decode(out[0][ids["input_ids"].shape[1]:], skip_special_tokens=True))
Limitaciones y uso responsable
- Modelo de 0,5 B parámetros entrenado con 300 ejemplos: se equivoca, repite e inventa (p. ej., confunde “sobreajuste”).
No lo uses para decisiones reales.
- Olvido fuera del dominio: tras el ajuste responde peor preguntas generales que el modelo base (inventa datos).
- Los datos fueron generados por un modelo de OpenAI; sus términos restringen usar las salidas para desarrollar modelos que compitan
con OpenAI. Uso educativo; revisa los términos vigentes antes de cualquier otro uso.
- Licencia del adaptador: Apache 2.0, la misma del modelo base.