Saltar a contenido

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.