Python 3.11+
A Qualys CSV export (place it in the input directory; default is Insumos/Reports/)
Insumos/Reports/
An OpenAI API key (recommended via environment variable):
OPENAI_API_KEY
If you only want to test ingestion/output structure without calling the LLM, you can run with --dry-run (see below).
--dry-run
Create and activate a virtual environment, then install the package in editable mode:
python -m venv .venv .\.venv\Scripts\activate pip install -U pip pip install -e .
Copy the example config:
Copy config/config.example.yaml → config/config.yaml
config/config.example.yaml
config/config.yaml
Then set at least:
app.language (for example en-US)
app.language
en-US
input.input_dir (where your Qualys CSV files are)
input.input_dir
input.file_glob (for example *.csv)
input.file_glob
*.csv
In PowerShell (Windows):
$env:OPENAI_API_KEY="YOUR_KEY_HERE"
miyabi-qualys-ai-triage-pack validate-config --config config/config.yaml miyabi-qualys-ai-triage-pack list-inputs --config config/config.yaml
If list-inputs shows no files, confirm your input.input_dir and input.file_glob.
list-inputs
Run for all inputs:
miyabi-qualys-ai-triage-pack run --config config/config.yaml
After completion, you should see:
One report directory per CSV under output/<csv_name>/
output/<csv_name>/
A run summary at output/run_summary.json
output/run_summary.json
Open:
output/<csv_name>/index.html
To validate ingestion/aggregation without calling the LLM:
miyabi-qualys-ai-triage-pack run --config config/config.yaml --dry-run
Expected result:
Output directories are created per CSV
candidates.json is written (candidate shortlist used by selection/LLM in a full run)
candidates.json
If you prefer not to use the CLI yet, you can run:
python main.py
This loads config/config.yaml (or config/config.yml) and runs across all matching input files.
config/config.yml