Creación de optimización de avisos reflexivos con GEPA: avisos de múltiples componentes, comentarios estructurados y validación retenida
def make_problems(n, semilla=0): rng = aleatorio.Aleatorio(semilla) fuera = []
para _ en rango(n): t = rng.choice([“discount”, “travel”, “wallet”, “chain”]) si t == “descuento”: unidad = rng.choice([40, 60, 80, 120]) cantidad = rng.elección([5, 6, 8, 10]) disco = rng.elección([10, 20, 25, 50]) total = unidad * cantidad oro = total – total * disco // 100 q = (f”Una tienda vende cuadernos a {unidad} rupias cada uno. Compras {cantidad} ” f”cuadernos y obtienes un {disco}% de descuento en la factura total. ” f”¿Cuántas rupias pagas en total?”) elif t == “viajar”: s1, h1 = rng.choice([40, 50, 60]), rng.elección([2, 3]) s2, h2 = rng.elección([30, 45, 70]), rng.elección([1, 2, 3]) gold = s1 * h1 + s2 * h2 q = (f”Un automóvil conduce a {s1} km/h durante {h1} horas, luego a {s2} km/h ” f”durante {h2} horas. ¿Cuál es la distancia total recorrida, en km?”) elif t == “billetera”: decenas = rng.choice([3, 5, 7, 9]) cincuenta = rng.elección ([2, 4, 6]) gastado = rng.elección([50, 80, 110, 150]) oro = decenas * 10 + cincuenta * 50 – q gastado = (f”Tienes {decenas} billetes de diez rupias y {cincuentas} billetes “f” de cincuenta rupias. Gastas {gastaste} rupias. ¿Cuántas rupias quedan?”) else: x = rng.choice([6, 9, 12, 15]); y = rng.elección([4, 7, 10]); z = rng.elección([3, 8, 11]) gold = x * 2 – y + z q = (f”Comienza con el número {x}. Duplícalo, luego resta {y}, ” f”luego suma {z}. ¿Con qué número terminas?”) out.append({“question”: q, “answer”: gold}) devuelve all_problems = make_problems(18, seed=42) random.Random(1).shuffle(all_problems) trainset = todos_problemas[:12]
valset = todos_problemas[12:]
print(f”Conjunto de datos: {len(trainset)} tren / {len(valset)} val problemas\n”)