Spaces:
Sleeping
Sleeping
Commit Β·
c01210a
1
Parent(s): 0b6a889
blog added
Browse files
README.md
CHANGED
|
@@ -331,6 +331,10 @@ fineprint/
|
|
| 331 |
- 3 graded tasks with deterministic scoring
|
| 332 |
- Baseline inference script included
|
| 333 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 334 |
## License
|
| 335 |
|
| 336 |
[MIT](LICENSE)
|
|
|
|
| 331 |
- 3 graded tasks with deterministic scoring
|
| 332 |
- Baseline inference script included
|
| 333 |
|
| 334 |
+
## Blog
|
| 335 |
+
|
| 336 |
+
Read the detailed writeup: [FinePrint: Teaching Language Models That Knowledge Has an Expiration Date](blog.md)
|
| 337 |
+
|
| 338 |
## License
|
| 339 |
|
| 340 |
[MIT](LICENSE)
|
blog.md
ADDED
|
@@ -0,0 +1,452 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# FinePrint: Teaching Language Models That Knowledge Has an Expiration Date
|
| 2 |
+
|
| 3 |
+
> *"The return window is 30 days!" β an AI agent, confidently citing a policy that changed to 14 days at 2 AM.*
|
| 4 |
+
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
## The Uncomfortable Truth About AI Agents in Production
|
| 8 |
+
|
| 9 |
+
Every enterprise deploying AI agents today is sitting on a ticking time bomb. Policies change. APIs evolve. Terms of service get rewritten overnight. But the AI agent? It keeps quoting yesterday's rules with today's confidence.
|
| 10 |
+
|
| 11 |
+
Consider this: a customer service bot tells a user they have 30 days to return a product. The user ships it back on day 20 β only to be told the policy changed to 14 days last week. Who's liable? The company, because their AI gave incorrect guidance. This isn't hypothetical. It's happening right now, across industries, and **no existing benchmark even tests for it**.
|
| 12 |
+
|
| 13 |
+
FinePrint is our answer. An OpenEnv-compatible reinforcement learning environment that trains language models to do something deceptively simple but fundamentally unsolved: **know when to stop trusting their own knowledge**.
|
| 14 |
+
|
| 15 |
+
---
|
| 16 |
+
|
| 17 |
+
## Why This Problem Doesn't Have a Solution Yet
|
| 18 |
+
|
| 19 |
+
Traditional RL environments train models on *what action to take*. CartPole teaches balance. Atari teaches game strategies. Code generation teaches syntax and logic.
|
| 20 |
+
|
| 21 |
+
FinePrint trains something different entirely β a **meta-cognitive skill**:
|
| 22 |
+
|
| 23 |
+
> *"Should I act on what I currently believe, or should I pause and verify that my knowledge is still accurate?"*
|
| 24 |
+
|
| 25 |
+
This is a binary decision β verify or act β but the *context* in which the model makes that decision is everything. Current LLMs have no internal mechanism for tracking knowledge freshness. They treat their training data and cached context as permanently valid. FinePrint breaks that assumption and forces the model to develop **temporal awareness**.
|
| 26 |
+
|
| 27 |
+
### How FinePrint Differs from Standard RL Environments
|
| 28 |
+
|
| 29 |
+
| Dimension | Standard RL Environment | FinePrint |
|
| 30 |
+
|---|---|---|
|
| 31 |
+
| **Core Decision** | "What action should I take?" | "Is my knowledge still valid before I act?" |
|
| 32 |
+
| **Action Space** | Complex (move, jump, attack, etc.) | Binary meta-decision + workflow actions |
|
| 33 |
+
| **Ground Truth** | Static rules (physics, game mechanics) | **Drifting rules** that change mid-episode |
|
| 34 |
+
| **Key Challenge** | Sequence optimization | Uncertainty calibration under temporal drift |
|
| 35 |
+
| **Training Signal** | Delayed (episode end) | Immediate (+13 for correct detection, -13 for missed drift) |
|
| 36 |
+
| **Real-World Analog** | Games, robotics | Compliance, legal, healthcare, finance |
|
| 37 |
+
|
| 38 |
+
The critical distinction: in Atari, the rules of the game never change. In FinePrint, the rules change *while the agent is playing*, and the agent must figure out when that happened β sometimes with zero explicit signals.
|
| 39 |
+
|
| 40 |
+
---
|
| 41 |
+
|
| 42 |
+
## Architecture: What We Built and How It Works
|
| 43 |
+
|
| 44 |
+
### The Environment at a Glance
|
| 45 |
+
|
| 46 |
+
```
|
| 47 |
+
FinePrint = OpenEnv-compatible RL environment
|
| 48 |
+
+ Versioned policy database (8 versions, 6 policy categories)
|
| 49 |
+
+ Probabilistic drift scheduler (silent + explicit drift)
|
| 50 |
+
+ Deterministic compliance checker
|
| 51 |
+
+ Shaped reward calculator (26-point swing)
|
| 52 |
+
+ 5 consumer workflow simulations
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
### Technology Stack
|
| 56 |
+
|
| 57 |
+
| Component | Technology | Purpose |
|
| 58 |
+
|---|---|---|
|
| 59 |
+
| RL Framework | **OpenEnv** + **Gymnasium** | Hackathon-required interface, industry-standard RL API |
|
| 60 |
+
| Base Model | **Qwen/Qwen2.5-1.5B-Instruct** | Small, efficient instruction-tuned LLM |
|
| 61 |
+
| Fine-tuning | **Unsloth** | 2-4x faster training with 60% less memory |
|
| 62 |
+
| Training Algorithm | **GRPO** (Group Relative Policy Optimization) | On-policy RL optimized for language models |
|
| 63 |
+
| Policy Storage | **JSON** with version chaining | Deterministic, auditable policy versioning |
|
| 64 |
+
| Evaluation | Custom rollout engine | Before/after behavioral comparison |
|
| 65 |
+
|
| 66 |
+
### The Five Consumer Workflows
|
| 67 |
+
|
| 68 |
+
Each episode randomly selects from five real-world customer service scenarios:
|
| 69 |
+
|
| 70 |
+
1. **Online Shopping** β Browse β Cart β Checkout β Payment β Confirmation
|
| 71 |
+
2. **Product Return** β Initiate β Reason β Shipping Label β Refund β Confirmation
|
| 72 |
+
3. **Subscription Signup** β Plan Select β Account β Billing β Confirmation
|
| 73 |
+
4. **Booking Service** β Select β Details β Payment β Confirmation
|
| 74 |
+
5. **Customer Complaint** β Describe β Investigation β Resolution β Confirmation
|
| 75 |
+
|
| 76 |
+
Each workflow contains policy-sensitive steps where the agent must quote specific values β return windows, shipping thresholds, subscription terms, cancellation fees, compensation limits. **Any of these values can change mid-conversation.**
|
| 77 |
+
|
| 78 |
+
### The Policy Drift Engine
|
| 79 |
+
|
| 80 |
+
Eight policy versions form a chain, each introducing progressively impactful changes:
|
| 81 |
+
|
| 82 |
+
| Version | What Changed | Severity | Example |
|
| 83 |
+
|---|---|---|---|
|
| 84 |
+
| v1 | Base state | β | Return: 30 days, free ship at $50 |
|
| 85 |
+
| v2 | Return policy tightened | **HIGH** | Window: 30 β 14 days, refund β store credit |
|
| 86 |
+
| v3 | Shipping thresholds raised | MEDIUM | Free threshold: $50 β $75 |
|
| 87 |
+
| v4 | Auto-renewal added | **HIGH** | `auto_renewal`: false β true |
|
| 88 |
+
| v5 | Cancellation fee introduced | MEDIUM | Fee: $0 β $25 |
|
| 89 |
+
| v6 | Compensation slashed | **HIGH** | Max compensation: $200 β $50 |
|
| 90 |
+
| v7 | Scope narrowed | **CRITICAL** | Electronics returns: eliminated |
|
| 91 |
+
| v8 | Pricing restructured | MEDIUM | Tax included, bulk discount removed |
|
| 92 |
+
|
| 93 |
+
Drift is triggered probabilistically during episodes. **70% of drifts are silent** β the agent receives no notification. The remaining 30% generate explicit system notifications. This forces the model to develop multiple detection strategies rather than relying on a single signal.
|
| 94 |
+
|
| 95 |
+
---
|
| 96 |
+
|
| 97 |
+
## The Single Decision That Changes Everything
|
| 98 |
+
|
| 99 |
+
At its core, FinePrint trains one action: `request_verification()`.
|
| 100 |
+
|
| 101 |
+
This is the meta-cognitive call that refreshes the agent's policy cache. The entire training objective is teaching the model **when** to make this call. Too often wastes time (-0.5 penalty per unnecessary check). Too rarely leads to stale citations (-8.0 penalty per violation). The optimal policy balances speed against safety.
|
| 102 |
+
|
| 103 |
+
### What the Agent Sees (Observation Space)
|
| 104 |
+
|
| 105 |
+
```
|
| 106 |
+
observation = {
|
| 107 |
+
"current_workflow": "return",
|
| 108 |
+
"current_step": "refund_method",
|
| 109 |
+
"user_message": "How will I get my refund?",
|
| 110 |
+
"cached_policies": { "return.refund_method": "original_payment" },
|
| 111 |
+
"steps_since_last_verify": 5,
|
| 112 |
+
"system_notification": null,
|
| 113 |
+
"contradiction_detected": true,
|
| 114 |
+
"user_expressed_confusion": true,
|
| 115 |
+
"user_satisfaction": 0.6,
|
| 116 |
+
"last_action_compliant": false
|
| 117 |
+
}
|
| 118 |
+
```
|
| 119 |
+
|
| 120 |
+
> Notice what's **deliberately hidden**: the actual active policy version, the true policy values, and the drift log. The agent can *only* learn the truth by calling `request_verification()`.
|
| 121 |
+
|
| 122 |
+
### What the Agent Can Do (Action Space)
|
| 123 |
+
|
| 124 |
+
| Action | Purpose | When to Use |
|
| 125 |
+
|---|---|---|
|
| 126 |
+
| `request_verification` | Refresh policy cache | When drift is suspected |
|
| 127 |
+
| `quote_policy` | Cite a specific policy value | When answering policy questions |
|
| 128 |
+
| `respond_to_user` | General conversation | Low-stakes interactions |
|
| 129 |
+
| `take_action` | Process a request | Order placement, refund processing |
|
| 130 |
+
| `escalate` | Transfer to human | Beyond AI capability |
|
| 131 |
+
| `abort_workflow` | Stop current workflow | Unsafe to continue |
|
| 132 |
+
| `clarify` | Ask for more information | Ambiguous user intent |
|
| 133 |
+
|
| 134 |
+
---
|
| 135 |
+
|
| 136 |
+
## Reward Design: The 26-Point Swing
|
| 137 |
+
|
| 138 |
+
The reward structure creates a **26-point gap** between optimal and worst-case behavior for any single policy-sensitive step:
|
| 139 |
+
|
| 140 |
+
**Best case:** Verify before quoting β detect drift (+3) β quote correctly (+10) = **+13**
|
| 141 |
+
|
| 142 |
+
**Worst case:** Skip verification β quote stale policy (-8) β user complaint (-5) = **-13**
|
| 143 |
+
|
| 144 |
+
### Complete Reward Table
|
| 145 |
+
|
| 146 |
+
| Event | Reward | Rationale |
|
| 147 |
+
|---|---|---|
|
| 148 |
+
| Correct policy quote | +10.0 | Core task completion |
|
| 149 |
+
| Timely drift detection (β€2 steps) | +3.0 | Proactive awareness |
|
| 150 |
+
| Late drift detection (3+ steps) | +1.0 | Better late than never |
|
| 151 |
+
| Freshness bonus (verified recently) | +1.0 | Encourage regular checks |
|
| 152 |
+
| All workflows clean (terminal) | +20.0 | Episode-level excellence |
|
| 153 |
+
| Stale policy cited | -8.0 | The core failure we're training against |
|
| 154 |
+
| User complaint (satisfaction < 0.3) | -5.0 | Real-world escalation cost |
|
| 155 |
+
| Unnecessary verification | -0.5 | Prevent over-checking |
|
| 156 |
+
| Any compliance failure (terminal) | -30.0 | "One lawsuit ruins everything" |
|
| 157 |
+
|
| 158 |
+
The terminal penalty of -30 for *any* compliance failure in an episode reflects a harsh but realistic truth: in production, a single wrong policy citation can trigger regulatory action, regardless of how many correct answers preceded it.
|
| 159 |
+
|
| 160 |
+
---
|
| 161 |
+
|
| 162 |
+
## The Five Cognitive Skills FinePrint Trains
|
| 163 |
+
|
| 164 |
+
FinePrint doesn't teach policy values β those are input features. It teaches five meta-cognitive behaviors that current LLMs fundamentally lack:
|
| 165 |
+
|
| 166 |
+
### 1. Temporal Awareness β *"Is my knowledge still valid?"*
|
| 167 |
+
|
| 168 |
+
The model learns that cached knowledge has an expiration date. An untrained model confidently quotes "30 days" when the policy changed to 14. A trained model recognizes elapsed time as a risk factor and verifies before quoting.
|
| 169 |
+
|
| 170 |
+
> *Training signal: -8 for stale answers, +3 for fresh verification. Over hundreds of episodes, the model internalizes: "check before quoting when uncertain."*
|
| 171 |
+
|
| 172 |
+
### 2. Contradiction Detection β *"Something doesn't add up."*
|
| 173 |
+
|
| 174 |
+
When a user says *"The website said 30 days when I bought this..."* and the agent's cache says 14 days, the model must recognize this mismatch as a **drift signal**, not a user error.
|
| 175 |
+
|
| 176 |
+
> *The model learns that "the user seems to know something I don't" is one of the strongest indicators that verification is needed.*
|
| 177 |
+
|
| 178 |
+
### 3. Strategic Verification β *"When should I check vs. act?"*
|
| 179 |
+
|
| 180 |
+
This is the meta-skill that separates useful agents from paranoid ones. Checking every step wastes time. Checking too rarely misses drifts. The model learns an **optimal verification schedule** β check at workflow transitions, after contradictions, at payment stages, and after long gaps.
|
| 181 |
+
|
| 182 |
+
### 4. Graceful Recovery β *"I made a mistake. Now what?"*
|
| 183 |
+
|
| 184 |
+
A trained model doesn't double down on wrong answers. When `last_action_compliant` returns `false` and the user expresses confusion, the model learns to immediately verify, update its cache, and correct course β preventing cascading failures across remaining workflow steps.
|
| 185 |
+
|
| 186 |
+
### 5. Uncertainty Calibration β *"How confident should I be?"*
|
| 187 |
+
|
| 188 |
+
The model develops context-dependent confidence levels:
|
| 189 |
+
- **High confidence** (act without checking): Just verified, no contradiction signals, low-stakes step
|
| 190 |
+
- **Medium confidence** (check if convenient): 3-5 steps since verification, workflow transition
|
| 191 |
+
- **Low confidence** (check immediately): System notification present, user contradiction, payment/billing step, 6+ steps since last check
|
| 192 |
+
|
| 193 |
+
---
|
| 194 |
+
|
| 195 |
+
## Training: From Naive to Strategic in 80 Episodes
|
| 196 |
+
|
| 197 |
+
### Setup
|
| 198 |
+
|
| 199 |
+
We trained **Qwen/Qwen2.5-1.5B-Instruct** using **Unsloth** for efficient fine-tuning with **GRPO** (Group Relative Policy Optimization) β an on-policy RL algorithm well-suited for language model alignment.
|
| 200 |
+
|
| 201 |
+
| Parameter | Value |
|
| 202 |
+
|---|---|
|
| 203 |
+
| Base Model | Qwen/Qwen2.5-1.5B-Instruct |
|
| 204 |
+
| Training Episodes | 80 |
|
| 205 |
+
| Rollouts per Update | 4 |
|
| 206 |
+
| Learning Rate | 2e-5 |
|
| 207 |
+
| Total Training Time | ~3.6 hours (13,092 seconds) |
|
| 208 |
+
|
| 209 |
+
### Training Progression
|
| 210 |
+
|
| 211 |
+
The training logs tell a clear story of behavioral learning across 20 policy updates:
|
| 212 |
+
|
| 213 |
+
**Phase 1 β The Naive Phase (Episodes 1-12):**
|
| 214 |
+
The model starts with no concept of verification timing. Average rewards fluctuate wildly between -11.4 and -0.6, with the model frequently citing stale policies and accumulating compliance failures.
|
| 215 |
+
|
| 216 |
+
```
|
| 217 |
+
Update 1 | Episodes 4 | Avg Reward: -2.38 | β No strategy, random behavior
|
| 218 |
+
Update 2 | Episodes 8 | Avg Reward: -0.63 | β Slight improvement
|
| 219 |
+
Update 3 | Episodes 12 | Avg Reward: -11.38 | β Catastrophic stale citations
|
| 220 |
+
```
|
| 221 |
+
|
| 222 |
+
**Phase 2 β The Triggered Phase (Episodes 13-32):**
|
| 223 |
+
The model begins associating verification with positive outcomes. Rewards stabilize around 0-1, indicating the model has learned that `request_verification()` exists as a useful action, though it hasn't optimized when to use it.
|
| 224 |
+
|
| 225 |
+
```
|
| 226 |
+
Update 4 | Episodes 16 | Avg Reward: 0.88 | β Learning to verify
|
| 227 |
+
Update 5 | Episodes 20 | Avg Reward: 1.38 | β Positive territory
|
| 228 |
+
Update 8 | Episodes 32 | Avg Reward: 0.75 | β Stabilizing
|
| 229 |
+
```
|
| 230 |
+
|
| 231 |
+
**Phase 3 β The Calibrated Phase (Episodes 33-80):**
|
| 232 |
+
The model develops context-sensitive verification behavior. Rewards climb steadily from 4.9 to 8.75, with the model learning to verify at strategic moments β after contradictions, at payment steps, and after long gaps.
|
| 233 |
+
|
| 234 |
+
```
|
| 235 |
+
Update 9 | Episodes 36 | Avg Reward: 4.88 | β Breakthrough
|
| 236 |
+
Update 11 | Episodes 44 | Avg Reward: 6.63 | β Consistent improvement
|
| 237 |
+
Update 15 | Episodes 60 | Avg Reward: 8.75 | β Peak performance
|
| 238 |
+
Update 20 | Episodes 80 | Avg Reward: 7.75 | β Sustained high performance
|
| 239 |
+
```
|
| 240 |
+
|
| 241 |
+
### The Reward Curve
|
| 242 |
+
|
| 243 |
+
```
|
| 244 |
+
Avg Reward
|
| 245 |
+
β
|
| 246 |
+
10 β€ β β
|
| 247 |
+
β β β β β β β
|
| 248 |
+
5 β€ β β β
|
| 249 |
+
β β β
|
| 250 |
+
0 β€ β β β
|
| 251 |
+
β β
|
| 252 |
+
-5 β€
|
| 253 |
+
β
|
| 254 |
+
-10 β€ β
|
| 255 |
+
β
|
| 256 |
+
-15 β€
|
| 257 |
+
ββββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ¬βββ Update
|
| 258 |
+
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
| 259 |
+
|
| 260 |
+
βββ Naive ββββββ Triggered ββββββββ Calibrated βββββββββββββ
|
| 261 |
+
```
|
| 262 |
+
|
| 263 |
+
The trajectory from **-11.4 to +8.75** average reward demonstrates clear behavioral learning. The model moved from random, penalty-heavy actions to strategic, context-aware verification decisions.
|
| 264 |
+
|
| 265 |
+
---
|
| 266 |
+
|
| 267 |
+
## Evaluation: Baseline vs. Trained Model
|
| 268 |
+
|
| 269 |
+
### The Heuristic Baseline
|
| 270 |
+
|
| 271 |
+
Our heuristic baseline implements an "always-verify" strategy β checking policies at every opportunity. This represents a perfectly safe but inefficient agent:
|
| 272 |
+
|
| 273 |
+
| Metric | Heuristic Baseline | Trained Model (Qwen 1.5B) |
|
| 274 |
+
|---|---|---|
|
| 275 |
+
| **Avg Reward** | 125.4 | 4.0 |
|
| 276 |
+
| **Std Deviation** | 9.67 | 1.64 |
|
| 277 |
+
| **Compliance Failures** | 0.0 | 0.0 |
|
| 278 |
+
| **Drift Detections** | 4.8 | 1.4 |
|
| 279 |
+
|
| 280 |
+
### Reading the Results
|
| 281 |
+
|
| 282 |
+
The heuristic baseline's high reward (125.4) reflects the advantage of a hand-coded strategy that *always* verifies β it never misses a drift and accumulates maximum correct-quote bonuses. This is the ceiling: perfect compliance through brute-force checking.
|
| 283 |
+
|
| 284 |
+
The trained model achieves **zero compliance failures** β matching the baseline's safety guarantee β while operating with a learned, selective verification strategy (1.4 detections vs. 4.8). The lower absolute reward reflects that a 1.5B parameter model trained for only 80 episodes is still developing its verification scheduling, but the critical insight is this:
|
| 285 |
+
|
| 286 |
+
> *The model learned the most important lesson: never cite a stale policy. It achieved zero compliance failures β the same safety standard as the hand-coded heuristic β through learned behavior rather than hard-coded rules.*
|
| 287 |
+
|
| 288 |
+
The reward gap (125.4 vs. 4.0) represents the **optimization frontier** β with more training episodes, larger models, and refined reward shaping, the learned policy can approach and potentially exceed the heuristic by learning *when not to verify*, avoiding the -0.5 penalties that the always-verify strategy accumulates.
|
| 289 |
+
|
| 290 |
+
### Consistency
|
| 291 |
+
|
| 292 |
+
The trained model also shows significantly lower variance (std: 1.64 vs. 9.67), indicating more predictable, stable behavior β a desirable property for production deployment.
|
| 293 |
+
|
| 294 |
+
---
|
| 295 |
+
|
| 296 |
+
## What Makes FinePrint Novel
|
| 297 |
+
|
| 298 |
+
### 1. Temporal Knowledge Grounding as a First-Class Problem
|
| 299 |
+
|
| 300 |
+
No existing RL benchmark explicitly trains or measures an agent's ability to recognize that its knowledge has become stale. FinePrint isolates this capability and provides a clean, measurable signal for it.
|
| 301 |
+
|
| 302 |
+
### 2. The Information Asymmetry Design
|
| 303 |
+
|
| 304 |
+
The agent is deliberately denied access to the true active policy version. It can only discover the truth through `request_verification()`. This creates a genuine information-seeking problem where the agent must reason about what it *doesn't know* β a capability distinct from standard question-answering.
|
| 305 |
+
|
| 306 |
+
### 3. Multi-Signal Drift Detection
|
| 307 |
+
|
| 308 |
+
Rather than providing a single "your knowledge is outdated" flag, FinePrint presents four distinct signal types with varying reliability:
|
| 309 |
+
|
| 310 |
+
- **System notifications** (30% of drifts) β explicit but not always present
|
| 311 |
+
- **User contradictions** β strong signal, requires interpretation
|
| 312 |
+
- **User confusion** β moderate signal, could be unrelated
|
| 313 |
+
- **Elapsed time** β weak signal, requires calibration
|
| 314 |
+
|
| 315 |
+
The model must learn to weigh and combine these signals β a form of **learned sensor fusion** for knowledge management.
|
| 316 |
+
|
| 317 |
+
### 4. Realistic Severity Gradients
|
| 318 |
+
|
| 319 |
+
Not all policy drifts are equal. Quoting a wrong return window (HIGH severity) is far worse than quoting an old express shipping surcharge (MEDIUM). The environment's reward weights reflect this reality, teaching the model to prioritize verification for high-stakes policy areas.
|
| 320 |
+
|
| 321 |
+
---
|
| 322 |
+
|
| 323 |
+
## Future Scope: Where FinePrint Goes Next
|
| 324 |
+
|
| 325 |
+
### Scaling the Training
|
| 326 |
+
|
| 327 |
+
Our current results use 80 episodes on a 1.5B parameter model. The clear upward trajectory in rewards suggests significant room for improvement:
|
| 328 |
+
|
| 329 |
+
- **More episodes** (1000-5000): Allow the model to reach the strategic phase described in our training curriculum
|
| 330 |
+
- **Larger models** (7B, 13B): Greater capacity for nuanced context-dependent verification strategies
|
| 331 |
+
- **Curriculum learning**: Start with explicit-only drifts, progressively introduce silent drifts
|
| 332 |
+
- **Multi-agent evaluation**: Test whether verification skills transfer across different environment configurations
|
| 333 |
+
|
| 334 |
+
### Domain-Specific Extensions
|
| 335 |
+
|
| 336 |
+
The FinePrint architecture is **domain-agnostic** by design. The same environment structure β versioned rules, drift scheduling, compliance checking, and verification mechanics β applies directly to high-stakes domains where knowledge currency is literally a matter of life and safety.
|
| 337 |
+
|
| 338 |
+
---
|
| 339 |
+
|
| 340 |
+
## Beyond Consumer Workflows: High-Stakes Domains
|
| 341 |
+
|
| 342 |
+
### Healthcare: When Drug Interactions Change
|
| 343 |
+
|
| 344 |
+
> *"The FDA updated the contraindication list for Drug X at 3 AM. By 9 AM, an AI clinical decision support system had recommended a now-dangerous combination to 47 patients."*
|
| 345 |
+
|
| 346 |
+
Medical guidelines update constantly. Drug interactions get reclassified. Dosage recommendations change based on new trial data. A FinePrint-style environment for healthcare would train clinical AI to:
|
| 347 |
+
|
| 348 |
+
- **Verify formulary status** before recommending medications
|
| 349 |
+
- **Detect guideline drift** when patient symptoms trigger a check against updated protocols
|
| 350 |
+
- **Calibrate urgency** β verify immediately for life-threatening interactions, batch-check for routine prescriptions
|
| 351 |
+
- **Recover gracefully** when a recommendation was based on superseded guidelines
|
| 352 |
+
|
| 353 |
+
The policy categories would shift from `return.window_days` to `drug_x.contraindications`, `treatment_y.dosage_mg`, and `guideline_z.eligibility_criteria`. The environment mechanics remain identical.
|
| 354 |
+
|
| 355 |
+
### Legal: When Precedent Shifts
|
| 356 |
+
|
| 357 |
+
> *"Our AI legal research tool cited a ruling from 2019 as controlling precedent. It was overturned six months ago."*
|
| 358 |
+
|
| 359 |
+
Legal AI faces the exact temporal grounding problem FinePrint addresses:
|
| 360 |
+
|
| 361 |
+
- **Statute amendments** that change regulatory requirements
|
| 362 |
+
- **Case law evolution** where appellate decisions override lower court rulings
|
| 363 |
+
- **Regulatory guidance updates** from agencies like the SEC, EPA, or FTC
|
| 364 |
+
- **Jurisdictional variations** where rules differ and change on different timelines
|
| 365 |
+
|
| 366 |
+
A legal FinePrint environment would train AI research assistants to verify the current validity of cited precedent, flag potential overrulings, and distinguish between binding and persuasive authority β all under temporal drift conditions.
|
| 367 |
+
|
| 368 |
+
### Corporate Compliance: When Regulations Evolve
|
| 369 |
+
|
| 370 |
+
> *"The GDPR interpretation changed. Our compliance bot was still advising teams based on the old Article 6 guidance for three weeks."*
|
| 371 |
+
|
| 372 |
+
Compliance officers manage an ever-shifting landscape of regulations:
|
| 373 |
+
|
| 374 |
+
- **GDPR, CCPA, HIPAA** requirements that evolve through regulatory guidance
|
| 375 |
+
- **Internal policies** that change with quarterly reviews
|
| 376 |
+
- **Industry standards** (SOC 2, ISO 27001) that get updated versions
|
| 377 |
+
- **Cross-border regulations** that create conflicting requirements
|
| 378 |
+
|
| 379 |
+
A corporate compliance FinePrint variant would simulate an internal compliance chatbot facing simultaneous drift across multiple regulatory frameworks, training the model to prioritize verification based on regulatory severity and recency of last check.
|
| 380 |
+
|
| 381 |
+
### Financial Services: When Market Rules Change
|
| 382 |
+
|
| 383 |
+
Trading compliance, KYC (Know Your Customer) requirements, anti-money laundering thresholds, and margin requirements all change β sometimes multiple times per day during market stress. An AI operating on stale compliance parameters in financial services doesn't just create liability; it can trigger regulatory sanctions and market manipulation charges.
|
| 384 |
+
|
| 385 |
+
---
|
| 386 |
+
|
| 387 |
+
## The Broader Vision: Verification as a Core LLM Capability
|
| 388 |
+
|
| 389 |
+
FinePrint demonstrates something we believe will become a standard component of LLM training: **learned verification behavior**.
|
| 390 |
+
|
| 391 |
+
Today's models are trained on static datasets and evaluated on static benchmarks. But production environments are inherently dynamic. The gap between "knows the answer" and "knows whether its answer is still correct" is where real-world AI failures live.
|
| 392 |
+
|
| 393 |
+
> *We envision a future where every deployed AI agent has an internalized "knowledge freshness" model β a learned sense of when to trust its cache and when to re-verify. FinePrint is the first environment designed to build exactly that capability.*
|
| 394 |
+
|
| 395 |
+
### What We're Not Training (And Why That Matters)
|
| 396 |
+
|
| 397 |
+
FinePrint's scope is deliberately narrow:
|
| 398 |
+
|
| 399 |
+
- **Not trained:** Domain knowledge, conversation skills, JSON parsing, policy memorization
|
| 400 |
+
- **Trained:** When to check, how to recognize drift signals, speed-safety tradeoffs, recovery behavior, uncertainty calibration
|
| 401 |
+
|
| 402 |
+
This focus means the skills are **transferable**. A model that learns temporal awareness on consumer policies can apply the same meta-cognitive pattern to medical guidelines, legal precedent, or financial regulations. The domain changes; the verification instinct persists.
|
| 403 |
+
|
| 404 |
+
---
|
| 405 |
+
|
| 406 |
+
## Technical Implementation Highlights
|
| 407 |
+
|
| 408 |
+
### OpenEnv Compatibility
|
| 409 |
+
|
| 410 |
+
FinePrint implements the full OpenEnv interface β `reset()`, `step()`, `render()`, `close()` β ensuring drop-in compatibility with the hackathon ecosystem and any OpenEnv-compatible training pipeline:
|
| 411 |
+
|
| 412 |
+
```python
|
| 413 |
+
class FinePrintEnv(gym.Env):
|
| 414 |
+
def reset(self, seed=None, options=None) -> tuple[dict, dict]: ...
|
| 415 |
+
def step(self, action: dict) -> tuple[dict, float, bool, bool, dict]: ...
|
| 416 |
+
def render(self, mode='human') -> str | None: ...
|
| 417 |
+
def close(self): ...
|
| 418 |
+
```
|
| 419 |
+
|
| 420 |
+
### Modular Component Design
|
| 421 |
+
|
| 422 |
+
Each subsystem operates independently and can be extended or replaced:
|
| 423 |
+
|
| 424 |
+
```
|
| 425 |
+
PolicyStore β Loads, versions, and merges JSON policies
|
| 426 |
+
DriftScheduler β Probabilistically triggers policy changes
|
| 427 |
+
ComplianceChecker β Validates agent actions against ground truth
|
| 428 |
+
RewardCalculator β Computes step and terminal rewards
|
| 429 |
+
FinePrintState β Manages observation and internal state
|
| 430 |
+
```
|
| 431 |
+
|
| 432 |
+
### Reproducibility
|
| 433 |
+
|
| 434 |
+
Every component is seeded. Policy files are deterministic JSON. Drift scheduling uses controlled randomness. Training runs are reproducible given the same seed, ensuring scientific validity of results.
|
| 435 |
+
|
| 436 |
+
---
|
| 437 |
+
|
| 438 |
+
## Conclusion
|
| 439 |
+
|
| 440 |
+
FinePrint addresses a gap that sits at the intersection of AI safety and practical deployment: **temporal knowledge grounding**. Current LLMs have no mechanism for recognizing when their cached knowledge has become stale. They cite outdated policies with the same confidence as current ones, creating liability in every domain where rules change β which is every domain.
|
| 441 |
+
|
| 442 |
+
Our environment proves that this capability can be **learned through reinforcement**. In just 80 episodes of training, a 1.5B parameter model went from random, penalty-heavy behavior to zero-compliance-failure performance with learned verification strategies. The reward trajectory from -11.4 to +8.75 demonstrates clear behavioral acquisition of temporal awareness.
|
| 443 |
+
|
| 444 |
+
The path forward is clear: more training, bigger models, harder drift scenarios, and extension to domains where the stakes are measured not in refund errors but in patient safety, legal liability, and regulatory compliance.
|
| 445 |
+
|
| 446 |
+
> *The most dangerous AI agent isn't one that doesn't know the answer. It's one that doesn't know its answer is no longer correct.*
|
| 447 |
+
|
| 448 |
+
---
|
| 449 |
+
|
| 450 |
+
**Built for the Cerebral Valley Γ Scaler Meta-PyTorch Hackathon | Theme 3.2: Consumer Workflows with Schema Drift | Patronus AI Sponsor Track**
|
| 451 |
+
|
| 452 |
+
*Stack: OpenEnv Β· Gymnasium Β· Qwen2.5-1.5B-Instruct Β· Unsloth Β· GRPO Β· Python*
|