Extrae datos de facturas a JSON con un LLM, con retención cero de datos
Un agente convierte el texto de una factura en JSON estructurado y comprueba que los totales cuadran. La ejecución no conserva nada después.
- Archivos
- Retención cero de datos
- Límite de presupuesto
Mira una ejecución real
Una ejecución real del 7 oct 2026, reproducida. Modelo: openai/gpt-6-luna.
- En colapresupuesto de $0.03 reservado
- MicroVMmicroVM ready
- MicroVMworker started · shell off · web off
- Archivo
read invoice.txt - MicroVMmicroVM destroyed
- Completada2 llamadas al modelo, 2,304 tokensResultado grabado (en inglés)
{ "vendor": "Fjord Supplies AS", "invoice_number": "FS-2026-0417", "invoice_date": "2026-09-30", "due_date": "2026-10-30", "currency": "EUR", "line_items": [ { "description": "Organic flour 25 kg", "quantity": 8, "unit_price": 31.5, "amount": 252 }, { "description": "Sunflower oil 10 l", "quantity": 5, "unit_price": 24, "amount": 120 }, { "description": "Delivery (pallet)", "quantity": 1, "unit_price": 45, "amount": 45 } ], "subtotal": 417, "tax": 104.25, "total": 531.25, "checks": { "line_items_sum_matches_subtotal": true, "subtotal_plus_tax_matches_total": false, "notes": "Subtotal plus VAT is 521.25, which is 10.00 less than the printed total of 531.25." } } - Worker destruido$0.003496 cobrados, $0.026504 liberados
La retención cero de datos estaba activada en esta ejecución.
Ejecútalo tú mismo
Abre el ejemplo en el playground con la solicitud completa ya rellenada. Se ejecuta en tu propia cuenta, dentro del presupuesto indicado, contra los mismos sistemas de ejemplo de solo lectura.
Presupuesto de este ejemplo: $0.03
Cómo funciona
Las facturas contienen nombres, direcciones y datos bancarios, así que esta ejecución usa retención cero de datos. El agente devuelve proveedor, número, fechas, líneas y totales como JSON, y marca la factura cuando la aritmética no coincide. Para documentos escaneados, ejecuta primero un OCR y pasa el texto.
Lo que el agente puede y no puede hacer
Los permisos forman parte de la solicitud. Todo lo que no figura aquí no está disponible para la ejecución.
| Ajuste | Permitido |
|---|---|
| Conexiones | Ninguna |
| Web | Desactivado |
| Shell | Desactivado |
| Archivos | invoice.txt (solo lectura) |
| Retención cero de datos | Activada: no se registra ningún rastro y el resultado se entrega una sola vez |
| Presupuesto | $0.03, límite estricto |
| Tiempo límite | 60 segundos |
Las credenciales nunca entran en la máquina: un broker las añade a cada llamada y aplica los métodos indicados arriba.
El código
Esta es la solicitud exacta que envía el ejemplo. Define EPHEMERAL_API_KEY con una clave de miembro de tu organización.
curl -X POST $EPHEMERAL_URL/v1/runs \
-H "Authorization: Bearer $EPHEMERAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @request.jsonArchivos de la solicitud
Se pasan en línea, así que no hay que subir nada antes. El agente ve cada uno como un archivo de solo lectura.
invoice.txt
INVOICE
Fjord Supplies AS
Storgata 12, 0155 Oslo, Norway
VAT no: NO 123 456 789 MVA
Invoice number: FS-2026-0417
Invoice date: 2026-09-30
Due date: 2026-10-30
Bill to: Example Bakery Ltd, 5 High Street, London
Description Qty Unit price (EUR) Amount (EUR)
Organic flour 25 kg 8 31.50 252.00
Sunflower oil 10 l 5 24.00 120.00
Delivery (pallet) 1 45.00 45.00
Subtotal 417.00
VAT 25% 104.25
Total due 531.25
Payment: bank transfer, IBAN NO93 8601 1117 947, reference FS-2026-0417
Cuerpo completo de la solicitud request.json
El mismo cuerpo, con los archivos en línea.
{
"prompt": "Extract the invoice in invoice.txt. Reply with one JSON object and nothing else: {\"vendor\": string, \"invoice_number\": string, \"invoice_date\": \"YYYY-MM-DD\", \"due_date\": \"YYYY-MM-DD\", \"currency\": string, \"line_items\": [{\"description\": string, \"quantity\": number, \"unit_price\": number, \"amount\": number}], \"subtotal\": number, \"tax\": number, \"total\": number, \"checks\": {\"line_items_sum_matches_subtotal\": boolean, \"subtotal_plus_tax_matches_total\": boolean, \"notes\": string}}. Copy numbers exactly as printed, then do the arithmetic for the checks. Use null for any field the document does not show.",
"files": [
{
"path": "invoice.txt",
"content": "INVOICE\n\nFjord Supplies AS\nStorgata 12, 0155 Oslo, Norway\nVAT no: NO 123 456 789 MVA\n\nInvoice number: FS-2026-0417\nInvoice date: 2026-09-30\nDue date: 2026-10-30\nBill to: Example Bakery Ltd, 5 High Street, London\n\nDescription Qty Unit price (EUR) Amount (EUR)\nOrganic flour 25 kg 8 31.50 252.00\nSunflower oil 10 l 5 24.00 120.00\nDelivery (pallet) 1 45.00 45.00\n\nSubtotal 417.00\nVAT 25% 104.25\nTotal due 531.25\n\nPayment: bank transfer, IBAN NO93 8601 1117 947, reference FS-2026-0417\n"
}
],
"shell": false,
"timeout_seconds": 60,
"max_cost_micros": 30000,
"zero_data_retention": true
}