42 lines
1.3 KiB
Markdown
42 lines
1.3 KiB
Markdown
# EGPv2
|
|
|
|
EGPv2 is a workflow-style extension of EGP:
|
|
|
|
- It does **not** expose `SQ1-SQ5` labels to the model.
|
|
- It lets the LLM participate in intermediate modules instead of using only static evidence extraction.
|
|
- It separates roles into:
|
|
- `Triage`: infer latent task profile and choose focus chunks
|
|
- `Investigator`: build competing normal/anomaly hypotheses
|
|
- `Supervisor`: check whether the analysis is on-topic and sufficient
|
|
- `Verifier`: make the final structured decision
|
|
|
|
## Files
|
|
|
|
- `api_client.py`: OpenAI-compatible API client, optional API key, supports `--no-thinking`
|
|
- `benchmark.py`: episode collection and resume helpers
|
|
- `signals.py`: deterministic chunking and structured signal extraction
|
|
- `prompts.py`: role-specific prompts
|
|
- `pipeline.py`: orchestration of the workflow
|
|
- `run_egpv2.py`: CLI runner
|
|
|
|
## Quick test
|
|
|
|
```bash
|
|
python EGPv2/run_egpv2.py --preview-only --max-episodes 1 --output-dir results/egpv2_preview
|
|
```
|
|
|
|
`preview-only` only materializes prompts and traces. It does not call a model, so `UNPARSEABLE` in the preview summary is expected.
|
|
|
|
## Local vLLM example
|
|
|
|
```bash
|
|
python EGPv2/run_egpv2.py \
|
|
--model Qwen/Qwen3.5-9B \
|
|
--api-base http://localhost:8000/v1 \
|
|
--no_thinking \
|
|
--max-tokens 4096 \
|
|
--max-episodes 5 \
|
|
--workers 2 \
|
|
--output-dir results/qwen35_egpv2_5ep
|
|
```
|