Confira relatórios de despesas com a política da empresa usando IA
Um agente lê uma política e uma lista de despesas e sinaliza cada violação com a cláusula que ela infringe.
- Arquivos
- Limite de orçamento
Veja uma execução real
Uma execução real em 7 de out. de 2026, reproduzida. Modelo: openai/gpt-6-luna.
- Na filaorçamento de $0.03 reservado
- MicroVMmicroVM ready
- MicroVMworker started · shell off · web off
- Arquivo
read expense-policy.md - Arquivo
read expenses.csv - MicroVMmicroVM destroyed
- Concluída2 chamadas ao modelo, 3,564 tokensSaída gravada (em inglês)
{ "violations": [ { "line": 2, "clause": 1, "reason": "The expense includes wine, and alcohol is never reimbursed." }, { "line": 6, "clause": 2, "reason": "The $52 expense is missing a receipt." }, { "line": 7, "clause": 5, "reason": "The Sunday ride has no note naming a business reason." }, { "line": 9, "clause": 6, "reason": "This expense is an exact duplicate of line 10." }, { "line": 10, "clause": 6, "reason": "This expense is an exact duplicate of line 9." }, { "line": 5, "clause": 4, "reason": "$410 for two nights is $205 per night, exceeding the $180 limit." }, { "line": 12, "clause": 4, "reason": "$205 for one night exceeds the $180 per-night limit." } ], "needs_human": [ { "line": 2, "question": "How many people were covered by this meal, so the $60 per-person daily limit can be checked?" }, { "line": 3, "question": "Was this 11-hour business-class flight approved in advance by a director?" }, { "line": 6, "question": "Was the airport taxi taken for a business trip?" }, { "line": 7, "question": "Was this ride part of a business trip?" } ], "compliant_lines": 4 } - Worker destruído$0.00491 cobrados, $0.02509 liberados
Execute você mesmo
Abra o exemplo no playground com a requisição inteira preenchida. Ele roda na sua própria conta, dentro do orçamento indicado, contra os mesmos sistemas de exemplo somente leitura.
Orçamento deste exemplo: $0.03
Como funciona
Tanto a política quanto as linhas de despesa são arquivos somente leitura. A resposta cita o número da linha e o número da cláusula de cada sinalização, para que um revisor possa verificar em segundos. As linhas que estão em conformidade não são listadas.
O que o agente pode e não pode fazer
As permissões fazem parte da requisição. Tudo o que não está listado aqui não está disponível para a execução.
| Configuração | Permitido |
|---|---|
| Conexões | Nenhuma |
| Web | Desativado |
| Shell | Desativado |
| Arquivos | expense-policy.md, expenses.csv (somente leitura) |
| Retenção zero de dados | Desativada: o registro é mantido por 30 dias |
| Orçamento | $0.03, um limite rígido |
| Tempo limite | 60 segundos |
As credenciais nunca entram na máquina: um broker as adiciona a cada chamada e aplica os métodos acima.
O código
Esta é a requisição exata que o exemplo envia. Defina EPHEMERAL_API_KEY com uma chave de membro da sua organização.
curl -X POST $EPHEMERAL_URL/v1/runs \
-H "Authorization: Bearer $EPHEMERAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @request.jsonArquivos na requisição
Enviados inline, então nada é carregado antes. O agente vê cada um como um arquivo somente leitura.
expense-policy.md
# Expense policy
1. Meals: at most 60 USD per person per day. Alcohol is never reimbursed.
2. Every expense of 25 USD or more needs a receipt.
3. Flights: economy class only, unless the flight is longer than 8 hours and a director approved it in advance.
4. Hotels: at most 180 USD per night.
5. Taxis and rides: only for business trips; weekend rides need a note naming the business reason.
6. The same expense must not be claimed twice.
expenses.csv
line,date,employee,category,description,amount_usd,receipt,approved_by
1,2026-09-14,a.nguyen,meal,Team lunch (4 people),88.00,yes,
2,2026-09-14,a.nguyen,meal,Wine with client dinner,64.00,yes,
3,2026-09-15,b.keller,flight,Frankfurt to Tokyo business class (11h),4210.00,yes,
4,2026-09-15,b.keller,flight,Tokyo to Frankfurt economy (11h),980.00,yes,
5,2026-09-16,c.ortiz,hotel,Hotel Osaka 2 nights,410.00,yes,
6,2026-09-17,c.ortiz,taxi,Airport taxi,52.00,no,
7,2026-09-20,d.smith,taxi,Sunday ride home,31.00,yes,
8,2026-09-21,a.nguyen,meal,Breakfast,14.50,no,
9,2026-09-22,e.rossi,flight,Milan to Berlin economy,210.00,yes,
10,2026-09-22,e.rossi,flight,Milan to Berlin economy,210.00,yes,
11,2026-09-23,f.hall,meal,Dinner (1 person),47.00,yes,
12,2026-09-24,c.ortiz,hotel,Hotel Kyoto 1 night,205.00,yes,
Corpo completo da requisição request.json
O mesmo corpo, com os arquivos inline.
{
"prompt": "Check every line of expenses.csv against expense-policy.md. Reply with one JSON object and nothing else: {\"violations\": [{\"line\": number, \"clause\": number, \"reason\": string}], \"needs_human\": [{\"line\": number, \"question\": string}], \"compliant_lines\": number}. Report a violation only when the file proves it. When a rule cannot be checked from the data (for example advance approval), put the line in needs_human instead of guessing. A line can appear more than once if it breaks several clauses.",
"files": [
{
"path": "expense-policy.md",
"content": "# Expense policy\n\n1. Meals: at most 60 USD per person per day. Alcohol is never reimbursed.\n2. Every expense of 25 USD or more needs a receipt.\n3. Flights: economy class only, unless the flight is longer than 8 hours and a director approved it in advance.\n4. Hotels: at most 180 USD per night.\n5. Taxis and rides: only for business trips; weekend rides need a note naming the business reason.\n6. The same expense must not be claimed twice.\n"
},
{
"path": "expenses.csv",
"content": "line,date,employee,category,description,amount_usd,receipt,approved_by\n1,2026-09-14,a.nguyen,meal,Team lunch (4 people),88.00,yes,\n2,2026-09-14,a.nguyen,meal,Wine with client dinner,64.00,yes,\n3,2026-09-15,b.keller,flight,Frankfurt to Tokyo business class (11h),4210.00,yes,\n4,2026-09-15,b.keller,flight,Tokyo to Frankfurt economy (11h),980.00,yes,\n5,2026-09-16,c.ortiz,hotel,Hotel Osaka 2 nights,410.00,yes,\n6,2026-09-17,c.ortiz,taxi,Airport taxi,52.00,no,\n7,2026-09-20,d.smith,taxi,Sunday ride home,31.00,yes,\n8,2026-09-21,a.nguyen,meal,Breakfast,14.50,no,\n9,2026-09-22,e.rossi,flight,Milan to Berlin economy,210.00,yes,\n10,2026-09-22,e.rossi,flight,Milan to Berlin economy,210.00,yes,\n11,2026-09-23,f.hall,meal,Dinner (1 person),47.00,yes,\n12,2026-09-24,c.ortiz,hotel,Hotel Kyoto 1 night,205.00,yes,\n"
}
],
"shell": false,
"timeout_seconds": 60,
"max_cost_micros": 30000
}