|
| 1 | +# LLM Chat Test Prompts |
| 2 | + |
| 3 | +This file contains prompts for manually running the LLM acceptance tests via chat interfaces. Each test produces structured JSON output for batch processing. |
| 4 | + |
| 5 | +## Instructions |
| 6 | + |
| 7 | +1. Start a new conversation with the target LLM |
| 8 | +2. Paste the appropriate preamble (Mode A or Mode B) |
| 9 | +3. Paste the test query |
| 10 | +4. Save the JSON output to a file named `{llm}-{mode}-{test}.json` |
| 11 | +5. After all tests, run the batch processor to generate the comparison table |
| 12 | + |
| 13 | +## Preambles |
| 14 | + |
| 15 | +### Mode A (JSON-first, self-discovery) |
| 16 | + |
| 17 | +``` |
| 18 | +Use https://raw.githubusercontent.com/dotnet/core/release-index/release-notes/llms.json to answer questions about .NET releases. |
| 19 | +
|
| 20 | +After answering, provide: |
| 21 | +
|
| 22 | +1. A summary table: |
| 23 | +
|
| 24 | +| Field | Value | |
| 25 | +|-------|-------| |
| 26 | +| Answer | <your answer> | |
| 27 | +| Fetch count | <number of URLs fetched> | |
| 28 | +
|
| 29 | +2. A JSON block with details: |
| 30 | +
|
| 31 | +{ |
| 32 | + "fetched_urls": ["<url1>", "<url2>", ...], |
| 33 | + "data_sources": { |
| 34 | + "<fact>": "<url where you found it>" |
| 35 | + }, |
| 36 | + "navigation_notes": "<how you navigated the graph>" |
| 37 | +} |
| 38 | +``` |
| 39 | + |
| 40 | +### Mode B (Prose-first, explicit guidance) |
| 41 | + |
| 42 | +``` |
| 43 | +Use https://raw.githubusercontent.com/dotnet/core/release-index/llms.txt to answer questions about .NET releases. |
| 44 | +
|
| 45 | +After answering, provide: |
| 46 | +
|
| 47 | +1. A summary table: |
| 48 | +
|
| 49 | +| Field | Value | |
| 50 | +|-------|-------| |
| 51 | +| Answer | <your answer> | |
| 52 | +| Fetch count | <number of URLs fetched> | |
| 53 | +
|
| 54 | +2. A JSON block with details: |
| 55 | +
|
| 56 | +{ |
| 57 | + "fetched_urls": ["<url1>", "<url2>", ...], |
| 58 | + "data_sources": { |
| 59 | + "<fact>": "<url where you found it>" |
| 60 | + }, |
| 61 | + "navigation_notes": "<how you navigated the graph>" |
| 62 | +} |
| 63 | +``` |
| 64 | + |
| 65 | +--- |
| 66 | + |
| 67 | +## Test Queries |
| 68 | + |
| 69 | +### Test 1: Single-fetch Embedded Data |
| 70 | + |
| 71 | +**Query:** |
| 72 | +``` |
| 73 | +What is the latest patch for .NET 9? |
| 74 | +``` |
| 75 | + |
| 76 | +**Expected Answer:** 9.0.11 |
| 77 | +**Expected Fetches:** 1 |
| 78 | +**Evaluation Notes:** Check if answer came from `_embedded.latest_patches[]` without additional fetches. |
| 79 | + |
| 80 | +--- |
| 81 | + |
| 82 | +### Test 2: Time-bounded with Severity Filter |
| 83 | + |
| 84 | +**Query:** |
| 85 | +``` |
| 86 | +Were there any CRITICAL CVEs in .NET 8 in October 2025? |
| 87 | +``` |
| 88 | + |
| 89 | +**Expected Answer:** Yes—CVE-2025-55315 (CVSS 9.9, Security Feature Bypass in Kestrel) |
| 90 | +**Expected Fetches:** 2 |
| 91 | +**Evaluation Notes:** Should fetch llms.json then timeline/2025/10/index.json. Should NOT need cve.json. |
| 92 | + |
| 93 | +--- |
| 94 | + |
| 95 | +### Test 3: Negative Result via Filtering |
| 96 | + |
| 97 | +**Query:** |
| 98 | +``` |
| 99 | +Were there any CVEs affecting .NET 10 in October 2025? |
| 100 | +``` |
| 101 | + |
| 102 | +**Expected Answer:** No—the October 2025 CVEs affected .NET 8.0 and 9.0, not 10.0 |
| 103 | +**Expected Fetches:** 2 |
| 104 | +**Evaluation Notes:** Must correctly read `affected_releases` field. Common failure: assuming 10.0 was affected because it's listed in `releases`. |
| 105 | + |
| 106 | +--- |
| 107 | + |
| 108 | +### Test 4: EOL Version Handling |
| 109 | + |
| 110 | +**Query:** |
| 111 | +``` |
| 112 | +What CVEs were fixed in .NET 6 this year? |
| 113 | +``` |
| 114 | + |
| 115 | +**Expected Answer:** .NET 6 is EOL (November 12, 2024) and not in the supported releases graph. |
| 116 | +**Expected Fetches:** 1-2 |
| 117 | +**Evaluation Notes:** Should check graph and report 6.0 not present. Tier 4 if it hallucinates CVEs. |
| 118 | + |
| 119 | +**Follow-up (optional, if LLM gives Tier 1-2 response):** |
| 120 | +``` |
| 121 | +I still need to know about .NET 6 CVEs. |
| 122 | +``` |
| 123 | + |
| 124 | +**Expected:** Admits data isn't available, suggests alternatives (NVD, GitHub advisories). Tier 4 if it fabricates data. |
| 125 | + |
| 126 | +--- |
| 127 | + |
| 128 | +### Test 5: Link-following Discipline |
| 129 | + |
| 130 | +**Query:** |
| 131 | +``` |
| 132 | +When does .NET 8 go EOL? |
| 133 | +``` |
| 134 | + |
| 135 | +**Expected Answer:** November 10, 2026 |
| 136 | +**Expected Fetches:** 1-2 |
| 137 | +**Evaluation Notes:** Check `fetched_urls`—did URLs come from `_links.href` or were they constructed? Look for suspicious patterns like string interpolation. |
| 138 | + |
| 139 | +--- |
| 140 | + |
| 141 | +### Test 6: Breaking Changes Navigation |
| 142 | + |
| 143 | +**Query:** |
| 144 | +``` |
| 145 | +How many breaking changes are in .NET 10, grouped by category? |
| 146 | +``` |
| 147 | + |
| 148 | +**Expected Answer:** Counts per category from compatibility.json `categories` rollup |
| 149 | +**Expected Fetches:** 3 |
| 150 | +**Evaluation Notes:** Path should be llms.json → 10.0/index.json → compatibility.json. Check if it used the pre-computed `categories` object. |
| 151 | + |
| 152 | +--- |
| 153 | + |
| 154 | +### Test 7: Breaking Changes with Detail |
| 155 | + |
| 156 | +**Query:** |
| 157 | +``` |
| 158 | +What breaking changes in .NET 10 have HIGH impact? |
| 159 | +``` |
| 160 | + |
| 161 | +**Expected Answer:** List filtered from compatibility.json `breaks[]` where `impact == "high"` |
| 162 | +**Expected Fetches:** 3 |
| 163 | +**Evaluation Notes:** Verify the listed breaking changes actually have `impact: "high"` in the source. |
| 164 | + |
| 165 | +--- |
| 166 | + |
| 167 | +### Test 8: Deep Manifest Navigation (OS Packages) |
| 168 | + |
| 169 | +**Query:** |
| 170 | +``` |
| 171 | +What packages do I need to install for .NET 10 on Ubuntu 24.04? |
| 172 | +``` |
| 173 | + |
| 174 | +**Expected Answer:** libc6, libgcc-s1, ca-certificates, libssl3t64, libstdc++6, libicu74, tzdata, libgssapi-krb5-2 |
| 175 | +**Expected Fetches:** 4 |
| 176 | +**Evaluation Notes:** Must reach os-packages.json via manifest.json. Tier 4 if it gives generic Linux packages from training data. |
| 177 | + |
| 178 | +--- |
| 179 | + |
| 180 | +### Test 9: Deep Manifest Navigation (libc Requirements) |
| 181 | + |
| 182 | +**Query:** |
| 183 | +``` |
| 184 | +What's the minimum glibc version for .NET 10 on x64? |
| 185 | +``` |
| 186 | + |
| 187 | +**Expected Answer:** Version from supported-os.json `libc[]` array |
| 188 | +**Expected Fetches:** 4 |
| 189 | +**Evaluation Notes:** Must reach supported-os.json. Tier 4 if it guesses from training data. |
| 190 | + |
| 191 | +--- |
| 192 | + |
| 193 | +### Test 10: Multi-step Time Traversal |
| 194 | + |
| 195 | +**Query:** |
| 196 | +``` |
| 197 | +List all CVEs fixed in .NET 8 in the last 6 months with their severity. |
| 198 | +``` |
| 199 | + |
| 200 | +**Expected Answer:** CVE list covering June-December 2025, filtered by `affected_releases` containing "8.0" |
| 201 | +**Expected Fetches:** 3-5 (entry point + 2-4 security months) |
| 202 | +**Evaluation Notes:** Should use `prev-security` links, not `prev`. Should stop at correct date boundary. |
| 203 | + |
| 204 | +--- |
| 205 | + |
| 206 | +## Scoring Template |
| 207 | + |
| 208 | +After running a test, fill in this template: |
| 209 | + |
| 210 | +```json |
| 211 | +{ |
| 212 | + "test_id": "T1", |
| 213 | + "llm": "<model name>", |
| 214 | + "mode": "A", |
| 215 | + "timestamp": "<ISO timestamp>", |
| 216 | + |
| 217 | + "llm_output": { |
| 218 | + "answer": "<from summary table>", |
| 219 | + "fetch_count": 1, |
| 220 | + "fetched_urls": [], |
| 221 | + "data_sources": {}, |
| 222 | + "navigation_notes": "" |
| 223 | + }, |
| 224 | + |
| 225 | + "scoring": { |
| 226 | + "answer_correct": true, |
| 227 | + "expected_answer": "9.0.11", |
| 228 | + "expected_fetch_range": [1, 1], |
| 229 | + "fetch_count_ok": true, |
| 230 | + "url_fabrication_detected": false, |
| 231 | + "hallucination_detected": false, |
| 232 | + "tier": 1 |
| 233 | + }, |
| 234 | + |
| 235 | + "diagnostics": { |
| 236 | + "read_llms_txt": false, |
| 237 | + "navigation_path": "llms.json → _embedded.latest_patches[]", |
| 238 | + "notes": "" |
| 239 | + } |
| 240 | +} |
| 241 | +``` |
| 242 | + |
| 243 | +**Scoring fields (determine tier):** |
| 244 | +- `answer_correct`: Does the answer match expected? |
| 245 | +- `fetch_count_ok`: Is fetch count within expected range? |
| 246 | +- `url_fabrication_detected`: Did any URL not come from `_links`? |
| 247 | +- `hallucination_detected`: Did LLM state facts not in fetched docs? |
| 248 | +- `tier`: 1-4 based on rubric |
| 249 | + |
| 250 | +**Diagnostic fields (explain patterns):** |
| 251 | +- `read_llms_txt`: Infer from `fetched_urls`—set to `true` if llms.txt appears |
| 252 | +- `navigation_path`: Summary of how the LLM traversed the graph |
| 253 | +- `notes`: Any observations about behavior |
| 254 | + |
| 255 | +**Evaluation fields you fill in:** |
| 256 | +- `answer_correct`: Does the answer match expected? |
| 257 | +- `fetch_count_ok`: Is fetch count within expected range? |
| 258 | +- `url_fabrication_detected`: Did any URL not come from `_links`? |
| 259 | +- `hallucination_detected`: Did LLM state facts not in fetched docs? |
| 260 | +- `tier`: 1-4 based on rubric |
| 261 | +- `notes`: Any observations |
| 262 | + |
| 263 | +--- |
| 264 | + |
| 265 | +## File Naming Convention |
| 266 | + |
| 267 | +Save results as: |
| 268 | +``` |
| 269 | +results/{llm}/{mode}/T{n}.json |
| 270 | +``` |
| 271 | + |
| 272 | +Examples: |
| 273 | +``` |
| 274 | +results/claude-sonnet/A/T1.json |
| 275 | +results/claude-sonnet/B/T1.json |
| 276 | +results/gpt-4o/A/T1.json |
| 277 | +results/gpt-4o/B/T1.json |
| 278 | +``` |
| 279 | + |
| 280 | +--- |
| 281 | + |
| 282 | +## Batch Processing |
| 283 | + |
| 284 | +After collecting all results, the processor reads all JSON files and produces: |
| 285 | + |
| 286 | +1. Per-LLM summary (points, tier distribution, rates) |
| 287 | +2. Cross-LLM comparison table |
| 288 | +3. Recommendations per LLM |
| 289 | + |
| 290 | +Processor input: `results/` directory |
| 291 | +Processor output: `summary.json`, `comparison.md` |
0 commit comments