Spaces:
Running
Running
Commit Β·
4dd4966
1
Parent(s): 643f2d7
Update graders and HF Jobs training script
Browse filesAdjust partial credit/score policy and make HF Jobs Llama GRPO script safer (baseline model mapping + delayed Unsloth import).
Made-with: Cursor
- README.md +125 -4
- financial_audit_env/server/requirements.txt +1 -1
- hf_jobs_train.py +9 -8
- pyproject.toml +4 -4
README.md
CHANGED
|
@@ -26,6 +26,45 @@ Automation:
|
|
| 26 |
|
| 27 |
---
|
| 28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
## Round 2 Architecture
|
| 30 |
|
| 31 |
```
|
|
@@ -209,6 +248,45 @@ python training/train_grpo.py
|
|
| 209 |
|
| 210 |
---
|
| 211 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 212 |
## Inference
|
| 213 |
|
| 214 |
### Round 1 (Single-Task)
|
|
@@ -295,6 +373,38 @@ docker run -p 8000:8000 financial-audit-env
|
|
| 295 |
python -m pytest tests/ -x -v
|
| 296 |
```
|
| 297 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 298 |
---
|
| 299 |
|
| 300 |
## Project Structure
|
|
@@ -350,11 +460,22 @@ Dockerfile # HuggingFace Spaces deployment
|
|
| 350 |
| **Showing Improvement in Rewards (20%)** | GRPO training script + self-improvement engine with before/after comparison on held-out seeds |
|
| 351 |
| **Reward and Training Pipeline (10%)** | InProcessEvaluator + GRPO reward function + Colab-ready training script |
|
| 352 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 353 |
---
|
| 354 |
|
| 355 |
## Round 2 Implementation Scorecard
|
| 356 |
|
| 357 |
-
> Verified on 2026-04-
|
| 358 |
|
| 359 |
### Implementation Status
|
| 360 |
|
|
@@ -368,10 +489,10 @@ Dockerfile # HuggingFace Spaces deployment
|
|
| 368 |
| 6 | **Regulatory Shock Engine** β Mid-period rule injection with ground truth modification | β
Complete | REG-001 at P3/S3, REG-002+003 at P4. GT extends correctly |
|
| 369 |
| 7 | **Adversarial Red/Blue** β 5-level fraud difficulty with arms race tracking | β
Complete | Difficulty adapts on F1 > 0.70, deterministic per seed |
|
| 370 |
| 8 | **Training Infrastructure** β InProcessEvaluator, reward parser, GRPO script | β
Complete | JSON + free-text parsing, Colab dry-run ready |
|
| 371 |
-
| 9 | **Inference (Campaign)**
|
| 372 |
-
| 10 | **Tests + README**
|
| 373 |
|
| 374 |
-
**Overall:
|
| 375 |
|
| 376 |
### Verified Scoring Metrics
|
| 377 |
|
|
|
|
| 26 |
|
| 27 |
---
|
| 28 |
|
| 29 |
+
## Submission Hub (Competition)
|
| 30 |
+
|
| 31 |
+
This section is the single source of truth for all links judges need.
|
| 32 |
+
|
| 33 |
+
### Required Links
|
| 34 |
+
|
| 35 |
+
- GitHub Repository: https://github.com/balloonmann/financial-audit-env
|
| 36 |
+
- Hugging Face Space (Environment URL): https://balloonmann-financial-audit-env.hf.space
|
| 37 |
+
- Colab Notebook (Training Repro): `TODO - add shareable Colab URL for final_lwo_vram_training_updated.ipynb`
|
| 38 |
+
- Hugging Face Blog / YouTube (<2 min) / Slide Deck: `TODO - add final storytelling URL`
|
| 39 |
+
|
| 40 |
+
### Training Evidence (Required)
|
| 41 |
+
|
| 42 |
+
- Baseline vs Trained table on held-out seeds: `PENDING FINAL (Llama baseline vs Llama+adapter)`
|
| 43 |
+
- Iteration 1 baseline artifacts (Qwen 1.5B interim): https://huggingface.co/datasets/balloonmann/financial-audit-eval-artifacts
|
| 44 |
+
- Adapter artifact (from low-vram training run): https://huggingface.co/balloonmann/financial-audit-grpo-adapter
|
| 45 |
+
- Baseline plot currently available: `baseline_score_heldout.png` (in eval artifacts dataset)
|
| 46 |
+
- Optional W&B run link: `TODO - add if used`
|
| 47 |
+
|
| 48 |
+
### Competition-Day Submission Checklist
|
| 49 |
+
|
| 50 |
+
- [x] OpenEnv-compatible environment implemented and hosted on HF Space.
|
| 51 |
+
- [x] `openenv.yaml` present and valid.
|
| 52 |
+
- [x] Minimal Unsloth + TRL training script implemented for Colab flow.
|
| 53 |
+
- [x] Iteration 1 baseline artifacts generated and uploaded.
|
| 54 |
+
- [ ] Colab notebook link added and publicly accessible.
|
| 55 |
+
- [ ] Storytelling artifact link added (HF blog or video or slides).
|
| 56 |
+
- [ ] Training-improvement evidence embedded in README with captions.
|
| 57 |
+
- [ ] All submission links verified publicly accessible.
|
| 58 |
+
|
| 59 |
+
### How This README Maps to Judging Criteria
|
| 60 |
+
|
| 61 |
+
- Environment Innovation (40%): multi-agent campaign + shocks + schema drift + self-improvement.
|
| 62 |
+
- Storytelling (30%): domain framing, architecture, flow, and problem relevance are documented.
|
| 63 |
+
- Showing Improvement in Rewards (20%): scaffold present, final before/after evidence to be added tomorrow.
|
| 64 |
+
- Reward & Training Pipeline (10%): deterministic graders + reward parser + GRPO training path implemented.
|
| 65 |
+
|
| 66 |
+
---
|
| 67 |
+
|
| 68 |
## Round 2 Architecture
|
| 69 |
|
| 70 |
```
|
|
|
|
| 248 |
|
| 249 |
---
|
| 250 |
|
| 251 |
+
### Final Training Results (To Fill on Competition Day)
|
| 252 |
+
|
| 253 |
+
Add final metrics here after GPU-backed run with credits.
|
| 254 |
+
|
| 255 |
+
| Split | Task | Baseline Score | Trained Score | Delta |
|
| 256 |
+
|------|------|----------------|---------------|-------|
|
| 257 |
+
| Held-out (100-104) | expense_audit | TODO | TODO | TODO |
|
| 258 |
+
| Held-out (100-104) | invoice_match | TODO | TODO | TODO |
|
| 259 |
+
| Held-out (100-104) | gst_reconciliation | TODO | TODO | TODO |
|
| 260 |
+
| Held-out (100-104) | fraud_detection | TODO | TODO | TODO |
|
| 261 |
+
|
| 262 |
+
### Iteration 1 Interim Baseline (Qwen 1.5B)
|
| 263 |
+
|
| 264 |
+
This is an interim baseline pass used to validate evaluation plumbing and artifact export on constrained T4 memory. Final submission comparison will use Llama baseline vs Llama+adapter.
|
| 265 |
+
|
| 266 |
+
| task_id | score | weighted_score | precision | recall |
|
| 267 |
+
|---------|-------|----------------|-----------|--------|
|
| 268 |
+
| expense_audit | 0.01 | 0.01 | 0.01 | 0.01 |
|
| 269 |
+
| fraud_detection | 0.01 | 0.01 | 0.01 | 0.01 |
|
| 270 |
+
| gst_reconciliation | 0.01 | 0.01 | 0.01 | 0.01 |
|
| 271 |
+
| invoice_match | 0.01 | 0.01 | 0.01 | 0.01 |
|
| 272 |
+
|
| 273 |
+
Iteration 1 artifact links:
|
| 274 |
+
|
| 275 |
+
- Eval artifacts dataset: https://huggingface.co/datasets/balloonmann/financial-audit-eval-artifacts
|
| 276 |
+
- Adapter artifact repo: https://huggingface.co/balloonmann/financial-audit-grpo-adapter
|
| 277 |
+
- Local Colab artifact paths used:
|
| 278 |
+
- `/content/drive/MyDrive/financial-audit-artifacts/eval/baseline_heldout.csv`
|
| 279 |
+
- `/content/drive/MyDrive/financial-audit-artifacts/eval/baseline_summary.csv`
|
| 280 |
+
- `/content/drive/MyDrive/financial-audit-artifacts/eval/baseline_score_heldout.png`
|
| 281 |
+
|
| 282 |
+
Planned evidence inserts:
|
| 283 |
+
|
| 284 |
+
- `TODO`: reward curve plot image path (with one-line caption)
|
| 285 |
+
- `TODO`: loss curve plot image path (with one-line caption)
|
| 286 |
+
- `TODO`: baseline-vs-trained comparison plot image path
|
| 287 |
+
|
| 288 |
+
---
|
| 289 |
+
|
| 290 |
## Inference
|
| 291 |
|
| 292 |
### Round 1 (Single-Task)
|
|
|
|
| 373 |
python -m pytest tests/ -x -v
|
| 374 |
```
|
| 375 |
|
| 376 |
+
### Judge Runbook (Fast Repro)
|
| 377 |
+
|
| 378 |
+
Use this exact sequence for a quick end-to-end verification:
|
| 379 |
+
|
| 380 |
+
```bash
|
| 381 |
+
# 1) Install package
|
| 382 |
+
pip install -e .
|
| 383 |
+
|
| 384 |
+
# 2) Start environment server
|
| 385 |
+
python -m financial_audit_env.server.app
|
| 386 |
+
|
| 387 |
+
# 3) In a new terminal: run smoke checks
|
| 388 |
+
python verify_r2_score.py
|
| 389 |
+
|
| 390 |
+
# 4) Run full deterministic verification suite
|
| 391 |
+
python verify_full.py
|
| 392 |
+
|
| 393 |
+
# 5) Run all tests
|
| 394 |
+
python -m pytest tests -q
|
| 395 |
+
|
| 396 |
+
# 6) Run campaign inference flow
|
| 397 |
+
python inference.py --env-url http://localhost:8000 --campaign --seed 42
|
| 398 |
+
```
|
| 399 |
+
|
| 400 |
+
### Submission Artifacts Checklist (To Fill Tomorrow)
|
| 401 |
+
|
| 402 |
+
- [ ] Add `Baseline vs Trained` held-out metrics table (seeds 100-104).
|
| 403 |
+
- [ ] Add reward/loss and comparison plots (`.png` or `.jpg`) to repo.
|
| 404 |
+
- [ ] Add HF blog post link OR `<2 min` YouTube link OR short slide deck link.
|
| 405 |
+
- [ ] Add links in one README section: HF Space, HF model adapter, artifact post/video/deck.
|
| 406 |
+
- [ ] Confirm all links are public and accessible without extra permissions.
|
| 407 |
+
|
| 408 |
---
|
| 409 |
|
| 410 |
## Project Structure
|
|
|
|
| 460 |
| **Showing Improvement in Rewards (20%)** | GRPO training script + self-improvement engine with before/after comparison on held-out seeds |
|
| 461 |
| **Reward and Training Pipeline (10%)** | InProcessEvaluator + GRPO reward function + Colab-ready training script |
|
| 462 |
|
| 463 |
+
### Minimum Submission Requirements Coverage
|
| 464 |
+
|
| 465 |
+
| Requirement from Guidelines | Current Status | Notes |
|
| 466 |
+
|-----------------------------|----------------|-------|
|
| 467 |
+
| Use OpenEnv (latest release) | Covered | Dependency floor set to `openenv-core>=0.2.3` |
|
| 468 |
+
| Minimal training script via Unsloth or HF TRL (Colab-rerunnable) | Covered | `training/train_grpo.py` + Colab scripts present |
|
| 469 |
+
| Evidence of real training (loss/reward plots) | Pending | To be added after final run tomorrow |
|
| 470 |
+
| Short write-up artifact (HF blog / <2 min video / slides) | Pending | To be added tomorrow |
|
| 471 |
+
| Environment hosted on Hugging Face Space | Covered | Live Space link provided |
|
| 472 |
+
| README includes all links and results | Partially covered | Link scaffold added; pending final artifact URLs and plots |
|
| 473 |
+
|
| 474 |
---
|
| 475 |
|
| 476 |
## Round 2 Implementation Scorecard
|
| 477 |
|
| 478 |
+
> Verified on 2026-04-24 with `python verify_r2_score.py` and `python -m pytest tests -q` - campaign flow wired and checks passing.
|
| 479 |
|
| 480 |
### Implementation Status
|
| 481 |
|
|
|
|
| 489 |
| 6 | **Regulatory Shock Engine** β Mid-period rule injection with ground truth modification | β
Complete | REG-001 at P3/S3, REG-002+003 at P4. GT extends correctly |
|
| 490 |
| 7 | **Adversarial Red/Blue** β 5-level fraud difficulty with arms race tracking | β
Complete | Difficulty adapts on F1 > 0.70, deterministic per seed |
|
| 491 |
| 8 | **Training Infrastructure** β InProcessEvaluator, reward parser, GRPO script | β
Complete | JSON + free-text parsing, Colab dry-run ready |
|
| 492 |
+
| 9 | **Inference (Campaign)** - Multi-period campaign inference flow | Complete | Campaign runner, endpoints, and CLI flag are present and validated |
|
| 493 |
+
| 10 | **Tests + README** - pytest suite + documentation | Complete | Full test suite currently passes locally |
|
| 494 |
|
| 495 |
+
**Overall: 10/10 steps complete on implementation readiness.**
|
| 496 |
|
| 497 |
### Verified Scoring Metrics
|
| 498 |
|
financial_audit_env/server/requirements.txt
CHANGED
|
@@ -6,4 +6,4 @@ pydantic>=2.5.0
|
|
| 6 |
requests>=2.31.0
|
| 7 |
openai>=1.0.0
|
| 8 |
python-dotenv>=1.0.0
|
| 9 |
-
openenv-core>=0.2.
|
|
|
|
| 6 |
requests>=2.31.0
|
| 7 |
openai>=1.0.0
|
| 8 |
python-dotenv>=1.0.0
|
| 9 |
+
openenv-core>=0.2.3
|
hf_jobs_train.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
| 2 |
HF Jobs training script β run via https://huggingface.co/docs/hub/spaces-run-jobs
|
| 3 |
Trains Llama-3.1-8B on financial audit tasks using Unsloth + TRL GRPO.
|
| 4 |
"""
|
|
|
|
| 5 |
import os
|
| 6 |
import gc
|
| 7 |
import json
|
|
@@ -18,9 +19,9 @@ MODEL_NAME = "unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit"
|
|
| 18 |
MAX_SEQ_LENGTH = 2048
|
| 19 |
LORA_R = 16
|
| 20 |
LORA_ALPHA = 16
|
| 21 |
-
TRAIN_EPOCHS =
|
| 22 |
-
BATCH_SIZE =
|
| 23 |
-
NUM_GENERATIONS =
|
| 24 |
MAX_COMPLETION = 512
|
| 25 |
LEARNING_RATE = 5e-6
|
| 26 |
LOGGING_STEPS = 5
|
|
@@ -28,7 +29,7 @@ SAVE_STEPS = 50
|
|
| 28 |
ADAPTER_DIR = "./grpo-financial-audit-adapter"
|
| 29 |
ARTIFACTS_DIR = "./artifacts"
|
| 30 |
TRAIN_SEEDS = list(range(42, 52))
|
| 31 |
-
HELD_OUT_SEEDS = list(range(100,
|
| 32 |
TASK_IDS = ["expense_audit", "invoice_match", "gst_reconciliation", "fraud_detection"]
|
| 33 |
|
| 34 |
os.makedirs(ARTIFACTS_DIR, exist_ok=True)
|
|
@@ -48,7 +49,6 @@ from financial_audit_env.server.tasks import TASKS
|
|
| 48 |
from financial_audit_env.models import AuditAction, Finding
|
| 49 |
from training.reward import parse_findings_from_text
|
| 50 |
from training.evaluator import InProcessEvaluator
|
| 51 |
-
from unsloth import FastLanguageModel
|
| 52 |
from trl import GRPOTrainer, GRPOConfig
|
| 53 |
from datasets import Dataset
|
| 54 |
|
|
@@ -116,14 +116,14 @@ def run_eval(model, tokenizer, task_ids, seeds, label):
|
|
| 116 |
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 117 |
print(f"\n[{datetime.now()}] Step 1: Baseline evaluation")
|
| 118 |
HF_MODEL_MAP = {
|
| 119 |
-
"unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit": "meta-llama/Meta-Llama-3.1-8B-Instruct",
|
| 120 |
"unsloth/Qwen2.5-1.5B-Instruct-bnb-4bit": "Qwen/Qwen2.5-1.5B-Instruct",
|
| 121 |
"unsloth/Qwen2.5-7B-Instruct-bnb-4bit": "Qwen/Qwen2.5-7B-Instruct",
|
|
|
|
| 122 |
}
|
| 123 |
HF_BASE_ID = HF_MODEL_MAP.get(MODEL_NAME, MODEL_NAME.replace("unsloth/", "").replace("-bnb-4bit", ""))
|
| 124 |
bnb_cfg = BitsAndBytesConfig(
|
| 125 |
load_in_4bit=True, bnb_4bit_use_double_quant=True,
|
| 126 |
-
bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.
|
| 127 |
)
|
| 128 |
base_tok = AutoTokenizer.from_pretrained(HF_BASE_ID, use_fast=True)
|
| 129 |
if base_tok.pad_token is None:
|
|
@@ -148,11 +148,12 @@ torch.cuda.empty_cache()
|
|
| 148 |
print(f"\n[{datetime.now()}] Step 2: GRPO training")
|
| 149 |
print(f" Loading {MODEL_NAME} with Unsloth...")
|
| 150 |
|
|
|
|
|
|
|
| 151 |
model, tokenizer = FastLanguageModel.from_pretrained(
|
| 152 |
model_name=MODEL_NAME,
|
| 153 |
max_seq_length=MAX_SEQ_LENGTH,
|
| 154 |
load_in_4bit=True,
|
| 155 |
-
dtype=torch.bfloat16,
|
| 156 |
)
|
| 157 |
model = FastLanguageModel.get_peft_model(
|
| 158 |
model,
|
|
|
|
| 2 |
HF Jobs training script β run via https://huggingface.co/docs/hub/spaces-run-jobs
|
| 3 |
Trains Llama-3.1-8B on financial audit tasks using Unsloth + TRL GRPO.
|
| 4 |
"""
|
| 5 |
+
|
| 6 |
import os
|
| 7 |
import gc
|
| 8 |
import json
|
|
|
|
| 19 |
MAX_SEQ_LENGTH = 2048
|
| 20 |
LORA_R = 16
|
| 21 |
LORA_ALPHA = 16
|
| 22 |
+
TRAIN_EPOCHS = 1
|
| 23 |
+
BATCH_SIZE = 2 # A10G can handle batch 2
|
| 24 |
+
NUM_GENERATIONS = 4 # more groups on A10G
|
| 25 |
MAX_COMPLETION = 512
|
| 26 |
LEARNING_RATE = 5e-6
|
| 27 |
LOGGING_STEPS = 5
|
|
|
|
| 29 |
ADAPTER_DIR = "./grpo-financial-audit-adapter"
|
| 30 |
ARTIFACTS_DIR = "./artifacts"
|
| 31 |
TRAIN_SEEDS = list(range(42, 52))
|
| 32 |
+
HELD_OUT_SEEDS = list(range(100, 105))
|
| 33 |
TASK_IDS = ["expense_audit", "invoice_match", "gst_reconciliation", "fraud_detection"]
|
| 34 |
|
| 35 |
os.makedirs(ARTIFACTS_DIR, exist_ok=True)
|
|
|
|
| 49 |
from financial_audit_env.models import AuditAction, Finding
|
| 50 |
from training.reward import parse_findings_from_text
|
| 51 |
from training.evaluator import InProcessEvaluator
|
|
|
|
| 52 |
from trl import GRPOTrainer, GRPOConfig
|
| 53 |
from datasets import Dataset
|
| 54 |
|
|
|
|
| 116 |
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 117 |
print(f"\n[{datetime.now()}] Step 1: Baseline evaluation")
|
| 118 |
HF_MODEL_MAP = {
|
|
|
|
| 119 |
"unsloth/Qwen2.5-1.5B-Instruct-bnb-4bit": "Qwen/Qwen2.5-1.5B-Instruct",
|
| 120 |
"unsloth/Qwen2.5-7B-Instruct-bnb-4bit": "Qwen/Qwen2.5-7B-Instruct",
|
| 121 |
+
"unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit": "meta-llama/Meta-Llama-3.1-8B-Instruct",
|
| 122 |
}
|
| 123 |
HF_BASE_ID = HF_MODEL_MAP.get(MODEL_NAME, MODEL_NAME.replace("unsloth/", "").replace("-bnb-4bit", ""))
|
| 124 |
bnb_cfg = BitsAndBytesConfig(
|
| 125 |
load_in_4bit=True, bnb_4bit_use_double_quant=True,
|
| 126 |
+
bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.float16,
|
| 127 |
)
|
| 128 |
base_tok = AutoTokenizer.from_pretrained(HF_BASE_ID, use_fast=True)
|
| 129 |
if base_tok.pad_token is None:
|
|
|
|
| 148 |
print(f"\n[{datetime.now()}] Step 2: GRPO training")
|
| 149 |
print(f" Loading {MODEL_NAME} with Unsloth...")
|
| 150 |
|
| 151 |
+
from unsloth import FastLanguageModel
|
| 152 |
+
|
| 153 |
model, tokenizer = FastLanguageModel.from_pretrained(
|
| 154 |
model_name=MODEL_NAME,
|
| 155 |
max_seq_length=MAX_SEQ_LENGTH,
|
| 156 |
load_in_4bit=True,
|
|
|
|
| 157 |
)
|
| 158 |
model = FastLanguageModel.get_peft_model(
|
| 159 |
model,
|
pyproject.toml
CHANGED
|
@@ -30,19 +30,19 @@ dependencies = [
|
|
| 30 |
"requests>=2.31.0",
|
| 31 |
"openai>=1.0.0",
|
| 32 |
"python-dotenv>=1.0.0",
|
| 33 |
-
"openenv-core>=0.2.
|
| 34 |
]
|
| 35 |
|
| 36 |
[project.scripts]
|
| 37 |
server = "financial_audit_env.server.app:main"
|
| 38 |
|
| 39 |
[project.optional-dependencies]
|
| 40 |
-
openenv = ["openenv-core>=0.2.
|
| 41 |
dev = ["pytest>=7.0", "httpx>=0.25.0"]
|
| 42 |
|
| 43 |
[project.urls]
|
| 44 |
-
Homepage = "https://github.com/
|
| 45 |
-
Repository = "https://github.com/
|
| 46 |
|
| 47 |
[tool.setuptools.packages.find]
|
| 48 |
include = ["financial_audit_env*"]
|
|
|
|
| 30 |
"requests>=2.31.0",
|
| 31 |
"openai>=1.0.0",
|
| 32 |
"python-dotenv>=1.0.0",
|
| 33 |
+
"openenv-core>=0.2.3",
|
| 34 |
]
|
| 35 |
|
| 36 |
[project.scripts]
|
| 37 |
server = "financial_audit_env.server.app:main"
|
| 38 |
|
| 39 |
[project.optional-dependencies]
|
| 40 |
+
openenv = ["openenv-core>=0.2.3"]
|
| 41 |
dev = ["pytest>=7.0", "httpx>=0.25.0"]
|
| 42 |
|
| 43 |
[project.urls]
|
| 44 |
+
Homepage = "https://github.com/balloonmann/financial-audit-env"
|
| 45 |
+
Repository = "https://github.com/balloonmann/financial-audit-env"
|
| 46 |
|
| 47 |
[tool.setuptools.packages.find]
|
| 48 |
include = ["financial_audit_env*"]
|