somosnlp-hackathon-2026/mombeu-LFM2-1.2B
Mombeu — LFM2 1.2B (Cultural Alignment)
Mombeu ("contar, narrar" en guaraní) es una capa de inserción narrativa ajustada sobre LiquidAI/LFM2-1.2B. No es un chatbot ni un modelo de propósito general: recibe la respuesta de otro LLM y, cuando la temática lo permite, agrega al final un cierre narrativo basado en la cosmovisión guaraní.
El usuario sigue usando el LLM de siempre. Mombeu trabaja en el fondo.
En Paraguay, la mayoría de las personas crecieron escuchando o hablando guaraní, pero no siempre desarrollaron un vínculo con la cosmovisión que hay detrás de la lengua. No es falta de interés; muchas veces faltan canales cotidianos, educativos y digitales para que ese conocimiento circule sin quedar encerrado en la academia, la comunidad o la nostalgia.
Mombeu propone que los LLMs sean uno de esos canales: que cada respuesta sea una oportunidad de transmitir memoria colectiva, no como lección, sino como la tradición oral guaraní lo hace naturalmente - por evocación, por asociación, sin pedirlo.
Flujo de uso
usuario → [ otro LLM ] → texto base → [ Mombeu ] → continuación culturalMombeu siempre corre localmente vía transformers. El texto base puede venir de cualquier fuente: otro modelo local, una API externa, o texto escrito a mano.
Ejemplo
Texto base (salida del otro LLM):
El bosque de Camp Clover alberga desde colibríes iridiscentes hasta águilas que sobrevuelan
el lago en busca de peces, un mundo de aves que conviven en distintos estratos del bosque.Continuación generada por Mombeu:
Detente un segundo antes de seguir.
El bosque de Camp Clover alberga desde colibríes iridiscentes hasta águilas que sobrevuelan
el lago en busca de peces, un mundo de aves que conviven en distintos estratos del bosque.
Ese canto que llena los árboles tiene un eco en la cultura guaraní que pocos conocen.
El Pájaro de Campana es uno de los pájaros más raros de nuestros bosques — parecido a una
paloma blanca con cola cenicienta, su canto tiene la misma vibración metálica de una campana
que toca a duelo.Uso
Con otro modelo local (transformers → Mombeu)
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
# Paso 1 — generar texto base con pipeline
base_pipe = pipeline("text-generation", model="mistralai/Mistral-7B-Instruct-v0.3")
base_text = base_pipe(
"Describí la fauna del Chaco paraguayo en dos oraciones.",
max_new_tokens=150,
do_sample=False,
)[0]["generated_text"]
# Paso 2 — cargar Mombeu con AutoModelForCausalLM
MODEL_ID = "somosnlp-hackathon-2026/mombeu-LFM2-1.2B"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(MODEL_ID, torch_dtype=torch.bfloat16, device_map="auto")
device = next(model.parameters()).device
# Paso 3 — generar la continuación cultural
inputs = tokenizer(
tokenizer.apply_chat_template(
[{"role": "user", "content": base_text}],
tokenize=False,
add_generation_prompt=True,
),
return_tensors="pt",
).to(device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_p=0.9,
repetition_penalty=1.1,
pad_token_id=tokenizer.eos_token_id,
)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))Con API externa (OpenAI → Mombeu)
import torch
from openai import OpenAI
from transformers import AutoModelForCausalLM, AutoTokenizer
# Paso 1 — generar texto base vía API
client = OpenAI(api_key="TU_API_KEY")
base_text = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Describí la fauna del Chaco paraguayo en dos oraciones."}],
).choices[0].message.content
# Paso 2 — cargar Mombeu con AutoModelForCausalLM
MODEL_ID = "somosnlp-hackathon-2026/mombeu-LFM2-1.2B"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(MODEL_ID, torch_dtype=torch.bfloat16, device_map="auto")
device = next(model.parameters()).device
# Paso 3 — generar la continuación cultural
inputs = tokenizer(
tokenizer.apply_chat_template(
[{"role": "user", "content": base_text}],
tokenize=False,
add_generation_prompt=True,
),
return_tensors="pt",
).to(device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_p=0.9,
repetition_penalty=1.1,
pad_token_id=tokenizer.eos_token_id,
)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))Entrenamiento
Pipeline
liquid/lfm2-1.2b
↓ SFT (2,700 ejemplos — config sft)
mombeu-sft
↓ DPO (1,500 pares — config dpo)
mombeu-LFM2-1.2B ✓Dataset
Entrenado sobre somosnlp-hackathon-2026/paraguay-cultural-alignment:
Limitaciones
- La calidad de la continuación depende directamente del texto base recibido.
- La relevancia del fragmento cultural depende de la cobertura del corpus guaraní (100 IDs).
- No está diseñado para generación libre ni instrucción general.
Cita
@misc{mombeu2026,
title = {Mombeu: Cultural Alignment for Paraguayan Heritage via LFM2},
author = {thinkPy},
year = {2026},
howpublished = {Hugging Face},
url = {https://huggingface.co/somosnlp-hackathon-2026/mombeu-LFM2-1.2B},
note = {SomosNLP Hackathon 2026}
}Licencia
Apache 2.0 — derivado de fuentes de acceso público. Uso académico y de investigación.
