agent-app / README.md
ganeshkota's picture
Add AML pipeline mode, sanitize configs, and production docs
9a45d9a
|
Raw
History Blame Contribute Delete
4.14 kB
# Agent App
Starter workspace that now includes a first working slice of an enterprise Revenue Assurance and Order-to-Cash control tower.
## Implemented milestone
This repository implements the first practical path end to end:
- 1 customer
- 1 contract
- 1 sales order and usage summary
- 1 incorrect invoice (discount mismatch)
- Deterministic reconciliation detects a $36,000 variance
- Case is created
- A real model-backed agent can call skills as tools when Foundry model settings are configured
- Recommendation is produced with evidence and approval routing
## Phased roadmap
1. Phase 1 — Python implementation
- Domain models, reconciliation rules, case creation, and demo data live in the revenue assurance package.
2. Phase 2 — agentic implementation
- The workflow can call a Foundry-backed model using the existing skills as tools for investigation.
3. Phase 3 — skills implementation
- Read-only skills provide customer, contract, usage, invoice, and case lookup context to the agent.
4. Phase 4 — agent with tools implementation
- The investigation agent uses tool calling and deterministic fallback behavior to stay robust when the model is unavailable.
5. Phase 5 — evaluations
- Add test data, evaluation prompts, and confidence/approval quality tracking for production hardening.
## Structure
- apps/reconciliation_worker/: runnable reconciliation worker entrypoint
- docs/business-requirements.md: one-page business requirements document
- src/agent_app/: starter agent package
- src/agent_app/revenue_assurance/: reconciliation, skills, case management, and investigation agent
- tests/: unit tests for starter and revenue-assurance modules
## Run locally
Run the starter chat-style agent:
```bash
python main.py
```
Run the revenue assurance worker:
```bash
python -m apps.reconciliation_worker.run
```
To enable the real agentic Foundry-backed path, set:
- `REVENUE_ASSURANCE_AZURE_OPENAI_ENDPOINT` or `AZURE_OPENAI_ENDPOINT`
- `REVENUE_ASSURANCE_MODEL_DEPLOYMENT` or `AZURE_OPENAI_DEPLOYMENT_NAME`
- `REVENUE_ASSURANCE_AZURE_OPENAI_API_KEY` or `AZURE_OPENAI_API_KEY`
- Optional: `REVENUE_ASSURANCE_AZURE_OPENAI_API_VERSION` or `AZURE_OPENAI_API_VERSION`
You can also point the app at a JSON config file using `REVENUE_ASSURANCE_CONFIG_PATH`.
An example file is available in `examples/revenue_assurance_config.json`.
For a local AML-style payload, run:
```bash
python -m agent_app.revenue_assurance.aml_runner --config examples/revenue_assurance_config.json
```
To submit a real Azure ML command job, edit [examples/aml_submit_config.json](examples/aml_submit_config.json) and fill in:
- `subscription_id`
- `resource_group`
- `workspace_name`
- Optional: `compute_name`
- Optional: `code_path`
- Optional: `environment_image`
- Optional: `experiment_name`
- Optional: `display_name`
- `revenue_assurance_config_path` if you want to point to a different model config file
Then run:
```bash
python -m agent_app.revenue_assurance.aml_submit --config examples/aml_submit_config.json
```
To submit a Pipeline job with component graph visualization (without replacing the command-job path), run:
```bash
python -m agent_app.revenue_assurance.aml_submit --mode pipeline --config examples/aml_submit_config.json
```
Why two modes exist:
- Command job mode (`--mode command`, default) runs one standalone command and is usually fastest for operational runs.
- Pipeline job mode (`--mode pipeline`) wraps the same workload into a pipeline step so Azure ML displays a component graph and child-step lineage.
If you prefer environment variables, the submitter also understands:
- `AML_SUBSCRIPTION_ID`
- `AML_RESOURCE_GROUP`
- `AML_WORKSPACE_NAME`
- `AML_COMPUTE_NAME`
Tip for safe sharing:
- Keep `examples/*.json` as placeholders for GitHub.
- Put your real values in local files like `examples/aml_submit_config.local.json` and `examples/revenue_assurance_config.local.json` (ignored by git).
## Test
```bash
python -m unittest discover -s tests -v
```
## VS Code tasks
- Run Agent CLI
- Run Unit Tests
## Build package
```bash
python -m pip install build
python -m build
```