def is_success(row): res = (row.get(“resultado”) o “”).lower() if res in (“resuelto”, “éxito”, “aprobado”, “aprobado”, “correcto”): devuelve True rw = row.get(“recompensa”) intenta: devuelve float(rw) >= 1.0 excepto (TypeError, ValueError): devuelve False out_path = “agenttrove_clean_sft.jsonl” mantenido, escaneado, SCAN, KEEP = 0, 0, 1500, 200 print(f”\n⏳ Escaneando hasta {SCAN} filas, manteniendo hasta {KEEP} seguimientos exitosos…”) con open(out_path, “w”) como f: para fila en itertools.islice(load_dataset(REPO, split=”train”, streaming=True), SCAN): escaneado += 1 si no is_success(row): continuar turnos = normalize_turns(fila[TRACE_KEY]) conv = [{“from”: r, “value”: c} for r, c in turns if c.strip()]
if len(conv) < 2: continuar f.write(json.dumps({ "conversations": conv, "source": row.get("original_source"), "teacher": row.get("original_teacher"), }) + "\n") mantenido += 1 si se mantiene >= MANTENER: romper print(f”✅ Filas escaneadas {escaneadas} → escribió {guardado} rastros limpios en ‘{out_path}'”) def search_traces(palabra clave=Ninguno, fuente=Ninguno, límite=3, escaneo=3000): “””Transmitir el conjunto de datos y generar rastros de impresión que coincidan con los filtros.””” hits = 0 para la fila en itertools.islice(load_dataset(REPO, split=”train”, streaming=True), escaneo): if source y row.get(“original_source”) != fuente: continuar si palabra clave: blob = ” “.join(c for _, c en normalize_turns(fila[TRACE_KEY])) si palabra clave.lower() no está en blob.lower(): continuar render_trace(row, max_chars=300) hits += 1 si hits >= límite: romper si hits == 0: print(“No hay coincidencias en la ventana escaneada; intente aumentar `scan`.”) print(“\n🔍 Buscando rastros de origen ‘nl2bash’:”) search_traces(source=”nl2bash”, limit=2, scan=4000) print(“\n🎉 ¡Tutorial completo! Próximas ideas:”) print(” • Aumente N / SCAN para análisis más grandes.”) print(” • Filtre por fuente_original (swesmith, codeforces, r2egym…) para un conjunto de SFT de dominio.”) print(” • Introduzca agenttrove_clean_sft.jsonl en Axolotl / LLaMA-Factory para realizar ajustes finos.”)
if len(conv) < 2: continuar f.write(json.dumps({ "conversations": conv, "source": row.get("original_source"), "teacher": row.get("original_teacher"), }) + "\n") mantenido += 1 si se mantiene >= MANTENER: romper print(f”✅ Filas escaneadas {escaneadas} → escribió {guardado} rastros limpios en ‘{out_path}'”) def search_traces(palabra clave=Ninguno, fuente=Ninguno, límite=3, escaneo=3000): “””Transmitir el conjunto de datos y generar rastros de impresión que coincidan con los filtros.””” hits = 0 para la fila en itertools.islice(load_dataset(REPO, split=”train”, streaming=True), escaneo): if source y row.get(“original_source”) != fuente: continuar si palabra clave: blob = ” “.join(c for _, c en normalize_turns(fila[TRACE_KEY])) si palabra clave.lower() no está en blob.lower(): continuar render_trace(row, max_chars=300) hits += 1 si hits >= límite: romper si hits == 0: print(“No hay coincidencias en la ventana escaneada; intente aumentar `scan`.”) print(“\n🔍 Buscando rastros de origen ‘nl2bash’:”) search_traces(source=”nl2bash”, limit=2, scan=4000) print(“\n🎉 ¡Tutorial completo! Próximas ideas:”) print(” • Aumente N / SCAN para análisis más grandes.”) print(” • Filtre por fuente_original (swesmith, codeforces, r2egym…) para un conjunto de SFT de dominio.”) print(” • Introduzca agenttrove_clean_sft.jsonl en Axolotl / LLaMA-Factory para realizar ajustes finos.”)