{“role”: “system”, “content”: system},
{“role”: “user”, “content”: user},
]) devolver opciones respectivas[0].message.content.strip() print(“=” * 60) print(“SECCIÓN 1: API principal + explicación en lenguaje sencillo GPT”) print(“=” * 60) samples = { “Python”: b’import os\ndef greet(name):\n print(f”Hola, {name}”)\n’, “JavaScript”: b’const fetch = require(“node-fetch”);\nasync function getData() { return await fetch(“/api”); }’, “CSV”: b’nombre,edad,ciudad\nAlice,30,NYC\nBob,25,LA\n’, “JSON”: b'{“nombre”: “Alice”, “puntuaciones”: [10, 20, 30]”active”: true}’, “Shell”: b’#!/bin/bash\necho “Hola”\nfor i in $(seq 1 5); hacer eco $i; done’, “PDF magic”: b’%PDF-1.4\n1 0 obj\n<< /Type /Catalog >>\nendobj\n’, “ZIP magic”: bytes([0x50, 0x4B, 0x03, 0x04]) + bytes(26), } print(f”\n{‘Etiqueta’:<12} {'Tipo MIME':<30} {'Puntuación':>6}”) print(“-” * 52) magika_labels = []
para nombre, raw en samples.items(): res = m.identify_bytes(raw) magika_labels.append(res.output.label) print(f”{res.output.label:<12} {res.output.mime_type:<30} {res.score:>5.1%}”) explicación = Ask_gpt( system=”Eres un ingeniero de aprendizaje automático conciso. Explícalo en 4 a 5 oraciones.”, user=( f”Magika es el detector de tipos de archivos con IA de Google. Simplemente identificó estos tipos a partir de bytes sin procesar: ” f”{magika_labels}. Explique cómo un modelo de aprendizaje profundo detecta tipos de archivos ” “solo a partir de bytes, y por qué esto es mejor que confiar en las extensiones de archivo.” ), max_tokens=250, ) print(f”\n💬 GPT sobre cómo funciona Magika:\n{textwrap.fill(explanation, 72)}\n”) print(“=” * 60) print(“SECCIÓN 2 — Identificación de lotes + Resumen GPT”) print(“=” * 60) tmp_dir = Ruta(tempfile.mkdtemp()) file_specs = { “code.py”: b”import sys\nprint(sys.version)\n”, “style.css”: b”body { font-family: Arial; margin: }\n”, “datos.json”: b'[{“id”: 1, “val”: “foo”}, {“id”: 2, “val”: “bar”}]’, “script.sh”: b”#!/bin/sh\necho Hola mundo\n”, “doc.html”: b”
Hola
“, “config.yaml”: b”servidor:\n host: localhost\n puerto: 8080\n”, “query.sql”: b”CREAR TABLA t (id INT PRIMARY KEY, nombre TEXTO);\n”, “notes.md”: b”# Encabezado\n\n- elemento uno\n- elemento dos\n”, } rutas = []
para fname, contenido en file_specs.items(): p = tmp_dir / fname p.write_bytes(content) paths.append(p) results = m.identify_paths(paths) batch_summary = [
{“file”: p.name, “label”: r.output.label,
“group”: r.output.group, “score”: f”{r.score:.1%}”}
for p, r in zip(paths, results)
]
print(f”\n{‘Archivo’:<18} {'Etiqueta':<14} {'Grupo':<12} {'Puntuación':>6}”) print(“-” * 54) para la fila en el resumen_por lotes: print(f”{fila[‘file’]:<18} {fila['label']:<14} {fila['group']:<12} {fila['score']:>6}”) gpt_summary = Ask_gpt( system=”Es un experto en DevSecOps. Sea conciso y práctico.”, user=( f”Un escáner de carga de archivos detectó estos tipos de archivos en un lote: ” f”{json.dumps(batch_summary)}. ” “En 3 o 4 oraciones, resuma qué tipo de proyecto se ve ” “y marque cualquier tipo de archivo que pueda requerir un escrutinio adicional.” ), max_tokens=220, ) print(f”\n💬 Análisis del proyecto GPT:\n{textwrap.fill(gpt_summary, 72)}\n”)