Finance Agent (Foundry)¶
| Campo | Valor |
|---|---|
| Agent | eai-finance-agent v3 |
| Model | gpt-5-mini on ais-eai-foundry-dev |
| Project | eai-finance-dev |
| Project endpoint | https://ais-eai-foundry-dev.services.ai.azure.com/api/projects/eai-finance-dev |
| Instructions (repo) | agents/finance-agent/instructions.md |
| Portal | https://ai.azure.com |
Flujo de chat (defensa en profundidad)¶
sequenceDiagram
participant U as Usuario
participant W as finance-web
participant A as finance-api
participant G as chat_guardrails
participant F as Foundry Agent
participant T as Tools SQL
U->>W: Mensaje
W->>A: POST /api/finance/chat
A->>G: is_off_topic?
alt Off-topic (HTML/código/poema…)
G-->>A: refusal ES/EN
A-->>W: mode=guardrail
else In scope
A->>F: policy_prefix + message + agent_reference
loop Tool rounds
F->>A: function_call
A->>T: get_po / validate_amount / check_duplicate
T-->>A: JSON
A->>F: function_call_output
end
F-->>A: texto
A-->>W: mode=foundry-agent + toolsUsed
end
Tools (v3)¶
| Tool | Tipo | Estado |
|---|---|---|
| get_purchase_order | function | Activo (ejecutado en finance-api) |
| validate_invoice_amount | function | Activo |
| check_duplicate_invoice | function | Activo |
| MCP suppliers | mcp | Opcional (INCLUDE_MCP=true); Foundry→ACA puede 424 |
Publicar instrucciones / nueva versión¶
python scripts/create_finance_foundry_agent.py
# INCLUDE_MCP=true python scripts/create_finance_foundry_agent.py
python scripts/invoke_finance_foundry_agent.py
El script carga agents/finance-agent/instructions.md (alcance AP, rechazo off-topic).
Tests API: services/finance-api/tests/test_chat_guardrails.py.
Finance API env¶
AZURE_AI_PROJECT_ENDPOINT=https://ais-eai-foundry-dev.services.ai.azure.com/api/projects/eai-finance-dev
AZURE_OPENAI_DEPLOYMENT=gpt-5-mini
FINANCE_AGENT_NAME=eai-finance-agent
Runtime: app/services/agent_runtime.py + chat_guardrails.py.
Notas¶
- Assistants API clásica retirada; Foundry Agents v2 Responses +
agent_reference. - El LLM no toca SQL: solo tools en el host.
- Reglas FIN-* y HITL las posee el Rule Engine / API, no el agente.