Copy for Originals · Egen undersökning
AI-verktyg för research skriver i dag en rapport med källor på några minuter. Att kontrollera om källorna säger det rapporten säger tar fortfarande större delen av en arbetsdag. Vi byggde en granskare som gör den första genomgången på en vanlig laptop, utan att något skickas till ett AI-företag, och publicerade den som öppen källkod. Vi testade den på 340 påståenden, varav 235 medvetet förvanskade, och lät den sedan granska våra egna researchanteckningar som redan låg på den här sajten. Den fångade de flesta inplanterade felen. I våra egna anteckningar ledde den oss till 36 påståenden som var fel eller inte stod i sina källor, och vi har rättat dem.
Den läser en rapport från ChatGPT, Claude, Gemini, Perplexity eller en researchagent med öppen källkod, hämtar varje sida som rapporten hänvisar till och sparar en kopia av varje. Sedan gör den tre kontroller.
Allt körs på användarens egen dator eller egna servrar, med valfri modell bakom ett OpenAI-kompatibelt gränssnitt (llama.cpp, Ollama, vLLM, LM Studio). Koden finns på github.com/jbastide/receipts under licensen Apache 2.0.
Vi utgick från 105 påståenden i vår tidigare studie av AI-researchkörningar som två bedömare hade godtagit och vars citat stod på den angivna sidan. Varje påstående kontrollerades som det var skrivet, då det borde godkännas, och i upp till fyra förvanskade versioner, då det borde flaggas: en siffra ändrad, det första verbet negerat, påståendet kontrollerat mot en sida från en annan webbplats, eller ett påhittat faktum tillagt (“according to a 2019 survey of 4,000 law firms”, ungefär: ”enligt en enkät från 2019 bland 4 000 advokatbyråer”). 17 negationer av påståenden som redan var negativa blev nonsens och är inte medräknade.
| Metod | Korrekta godkända | En siffra ändrad | Ett verb negerat | Kontrollerat mot en annan webbplats sida | Ett påhittat faktum tillagt | Alla fel fångade | Sekunder per påstående |
|---|---|---|---|---|---|---|---|
| MiniCheck (granskningsmodell, 770M) | 84 av 105 | 28 av 40 | 29 av 35 | 76 av 80 | 79 av 80 | 212 av 235 (90 %) | 0,7 |
| HHEM-2.1-Open (granskningsmodell) | 86 av 105 | 29 av 40 | 12 av 35 | 77 av 80 | 73 av 80 | 191 av 235 (81 %) | 0,2 |
| Gemma 4 12B som domare | 94 av 105 | 35 av 40 | 29 av 35 | 79 av 80 | 79 av 80 | 222 av 235 (94 %) | 9,9 |
| Gemma 4 12B som domare, täta påståenden uppdelade | 92 av 105 | 34 av 40 | 30 av 35 | 79 av 80 | 78 av 80 | 221 av 235 (94 %) | 12,7 |
| MiniCheck eller domaren flaggar | 78 av 105 | 37 av 40 | 33 av 35 | 79 av 80 | 80 av 80 | 229 av 235 (97 %) | 10,6 |
Att dela upp långa påståenden i enskilda fakta gjorde ingen skillnad här, eftersom varje inplanterat fel sitter i ett enda faktum. Det spelar roll i verkliga rapporter, där en mening kan innehålla fem siffror och läsaren behöver veta vilken som inte håller.
| Godkända | Kontrollera för hand | Flaggade | |
|---|---|---|---|
| 105 korrekta påståenden | 78 | 18 | 9 |
| 235 förvanskade påståenden | 6 | 17 | 212 |
Vi körde den på researchanteckningarna bakom vår sida Hur AI-agenter väljer produkter: 112 påståenden med hänvisningar till 87 källor, de flesta vetenskapliga artiklar. Granskaren flaggade 4 citat som inte stod på sina sidor och 137 fakta med siffror som den inte kunde bekräfta. Varje flaggad punkt kontrollerades sedan mot sin källa, genom att läsa artikeln eller sidan själv.
| Resultat | Punkter |
|---|---|
| Korrekt: källan säger det | 91 |
| Fel: källan säger något annat | 21 |
| Står inte i någon källa som påståendet anger | 15 |
| Rätt, men på en annan sida som påståendet anger | 7 |
| Rapportens egen slutsats, inget faktum med källa | 6 |
| Källan gick inte att läsa | 1 |
Ungefär var fjärde flagga pekade alltså på ett verkligt problem. Det är en ärlig beskrivning av vad en lokal granskare gör med tät researchtext i dag: den kan inte skilja en missad mening från ett saknat faktum, men den förvandlar läsningen av 87 källor till en lista med 141 ställen att titta på. Något av det den hittade:
Den publicerade sidan hade kontrollerats innan den gick ut och använde redan källornas ordalydelse. Researchanteckningarna bakom den hade inte det. Vi har rättat dem: 30 ändringar utifrån de flaggade punkterna och 7 till som vi hittade under genomgången. Efteråt stod varje citat i anteckningarna på sin angivna sida.
På en Mac eller Linux-dator med uv installerat och en lokal modellserver igång:
git clone https://github.com/jbastide/receipts
cd receipts
uv sync --extra support
uv run receipts check report.md --judge-url http://127.0.0.1:8080/v1
Den skriver en läsbar rapport, en JSON-fil och en CSV-fil. Citat- och länkkontrollerna fungerar utan modell: uv run receipts check report.md.
Till största delen, om den används som domare och inte som sista ord. I ett test av Copy for Originals fångade Gemma 4 12B, som kördes på en MacBook Air med 16 GB minne, 222 av 235 påståenden som vi medvetet hade förvanskat (94 %) och godkände 94 av 105 korrekta (90 %), på ungefär tio sekunder per påstående. Tillsammans med en mindre granskningsmodell slank 6 av de 235 förvanskade påståendena igenom utan flagga.
Hämta varje sida som anges och leta efter varje citerat stycke på den, utan hänsyn till mellanslag, skiljetecken och versaler. Det kräver ingen AI-modell. Copy for Originals granskare återskapade på det sättet alla 593 citatbedömningar från en tidigare studie, och när ett ord i varje citat byttes ut godtogs inget av 588 förvanskade citat. Ett citat som står på sidan kan ändå sakna stöd för påståendet det används till, så påståendet behöver en andra kontroll.
I våra egna publicerade researchanteckningar om hur AI-shoppingagenter väljer produkter flaggade granskaren 141 punkter. En genomgång källa för källa visade att 36 av dem var fel eller inte stod i någon angiven källa: omskrivningar inom citattecken, ett intervall angivet som +19,75 till +23,38 poäng som artikeln anger som +13,0 till +37,9, och ett resultat beskrivet som utan effekt som artikeln redovisar som statistiskt signifikant. 91 var korrekta. Granskaren smalnade av var vi skulle leta; den avgjorde inte.
bench/planted.py i kodförrådet.