[ blog · use-case ]11 min read

Recupero della giurisprudenza del Regno Unito fondato sulle citazioni dopo Ayinde v Haringey

Sarah ChoyPubblicato il 3 maggio 202611 min di lettura
Recupero della giurisprudenza del Regno Unito fondato sulle citazioni dopo Ayinde v Haringey

Ayinde v Haringey ha cambiato i calcoli dell'IA legale del Regno Unito da un giorno all'altro. Un barrister ha citato cinque casi falsi generati da un LLM ed è stato segnalato al Bar Standards Board. Le citazioni allucinate hanno ora conseguenze deontologiche. Ecco la guida per sviluppatori per costruire un recupero della giurisprudenza del Regno Unito fondato sulle citazioni — TNA Find Case Law, legislation.gov.uk, parsing delle citazioni neutre e come collegarlo a un agente funzionante.

In breve

  • Ayinde v Haringey [2025] EWHC 1383 (Admin) ha trasformato le citazioni di casi allucinate in un problema deontologico, non solo in un problema di qualità.
  • I termini di BAILII limitano l'accesso programmatico in massa; il servizio Find Case Law del The National Archives è l'API legittima per le sentenze di Inghilterra e Galles.
  • legislation.gov.uk ha una Developer API stabile con accesso point-in-time — indispensabile per il lavoro di compliance, dove 'in vigore al 30 giugno 2024' è una query reale.
  • Lo studio 'Hallucination-Free?' di Stanford HAI ha mostrato che Westlaw e Lexis+ AI allucinano ancora dal 17 al 33% delle volte — fondare sulle citazioni è la risposta architetturale, non una scelta di fornitore.
  • API Pick UK Legal Search racchiude il recupero semantico su giurisprudenza e legislazione primaria in un'unica POST — 60 crediti per chiamata.

Il caso che ha cambiato i calcoli

Il 6 giugno 2025 la Divisional Court della King's Bench Division ha pronunciato due sentenze in un'unica decisione — Ayinde v The London Borough of Haringey e Al-Haroun v Qatar National Bank QPSC, citazione neutra [2025] EWHC 1383 (Admin). In entrambe, la difesa aveva depositato materiali che citavano autorità inesistenti; in Ayinde, cinque casi inventati. La corte ha riscontrato una violazione dei doveri professionali e ha segnalato i professionisti rispettivamente alla BSB e alla SRA.

Entro 48 ore, ogni roadmap di legal-tech del Regno Unito aveva un nuovo punto in cima: la fondatezza sulle citazioni. Non come un dettaglio di qualità, ma come una necessità regolatoria. Lo studio 'Hallucination-Free?' di Stanford HAI (Magesh et al., maggio 2024) aveva già dimostrato che gli strumenti di punta dei fornitori — Lexis+ AI, Westlaw AI — allucinano le citazioni dal 17 al 33% delle volte su query di benchmark. Ayinde ha trasformato quel risultato accademico in un problema di compliance.

Per gli sviluppatori che integrano funzionalità di IA nei prodotti legali del Regno Unito, la lezione architetturale è chiara: il recupero deve provenire da fonti autorevoli, le citazioni devono essere verificabili rispetto alla fonte e il sistema deve rifiutarsi di rispondere quando non riesce a fondare una risposta. Qualsiasi altra cosa è una segnalazione a un'autorità in attesa di accadere.

Ecco la guida per sviluppatori per farlo bene: quali API usare, quali sono le loro insidie e come collegarle a un agente funzionante.

Le fonti autorevoli

1. National Archives Find Case Law

Gestito dal The National Archives (TNA). Copre le sentenze pronunciate da aprile 2003 dalla High Court, dalla Court of Appeal, dalla UK Supreme Court, dal Privy Council e da diversi tribunali specializzati. Documenti nello standard XML Akoma Ntoso (LegalDocML). API pubblica su caselaw.nationalarchives.gov.uk; feed di dati in massa tramite richiesta soggetta ad approvazione per finalità di "analisi computazionale".

Punti di forza: fonte autorevole per la giurisprudenza di Inghilterra e Galles, l'XML strutturato preserva la struttura della sentenza (numeri di paragrafo, citazioni, intestazioni), i termini della Open Government Licence consentono il riutilizzo con attribuzione. Punti deboli: copertura limitata prima del 2003, richiesta necessaria per il feed in massa, LegalDocML è pesante da parsare se non hai mai toccato XML giuridico.

2. Developer API di legislation.gov.uk

Gestita dal TNA. Copre la legislazione primaria del Regno Unito (Acts of Parliament), gli statutory instruments e gli equivalenti di Irlanda del Nord / Scozia / Galles. E, fondamentale, supporta le query point-in-time: 'che aspetto aveva questa disposizione il 1° aprile 2018'.

Punti di forza: stabile, ben documentata, accesso point-in-time, concessa in licenza OGL. Punti deboli: lo schema (CLML) è una cosa a sé; non tutti gli emendamenti sono tracciati in modo uniforme a ritroso nel tempo; il modello della data di entrata in vigore può sorprenderti.

3. BAILII (sola lettura via web umana)

Aggregatore di informazioni giuridiche di lunga data. Cruciale per giurisdizioni e tipi di documento che Find Case Law non copre (sentenze più vecchie, materiale scozzese / nordirlandese, alcune decisioni di tribunali specializzati). Lo scraping in massa è limitato dai termini di BAILII. Trattalo come un backup leggibile dall'uomo, non come un'API.

Ricerca semantica su giurisprudenza e legislazione primaria del Regno Unito in un unico endpoint POST. JSON in / JSON out, 60 crediti per chiamata, fatturazione solo in caso di successo. Restituisce titolo, citazione neutra, URL di origine e snippet ordinato per rilevanza semantica. Progettata per il tool calling degli agenti di IA.

Fianco a fianco

Fonti al momento della stesura. Conferma i termini di licenza con il TNA prima di un deployment commerciale.
Find Case Lawlegislation.gov.ukAPI Pick UK Legal Search
CoperturaGiurisprudenza E&W dal 2003Statutes + SIs del Regno Unito, point-in-timeGiurisprudenza + legislazione, semantica
FormatoAkoma Ntoso XMLCLML XML + JSON / AtomJSON, snippet già formattato
RicercaParole chiaveParole chiave + strutturaleSemantica
AuthNessuna per il pubblico; feed in massa su richiestaNessunax-api-key
LicenzaOpen Government LicenceOpen Government LicenceTOS di API Pick
Adatto aFonte di verità di livello complianceLookup di statutes, query point-in-timeRecupero per agente di IA, livello RAG

L'architettura che sopravvive ad Ayinde

Lo stack minimo viable fondato sulle citazioni:

Question → [LLM agent]
              ↓ tool_use(uk_legal_search)
            [API Pick UK Legal Search] → ranked authorities
              ↓ tool_use(extract_urls)
            [API Pick URL Extract] → full judgment / statute body
              ↓ Agent reads, drafts answer
              ↓ Citation-required prompt rule
          Answer with [Neutral Citation, Section/Paragraph]
              ↓ Final verification pass
          Refuse if citation can't be matched in extracted text

La passata di verifica è dove la maggior parte dei team fallisce. Non basta chiedere al modello 'cita le tue fonti' — devi verificare programmaticamente che ogni autorità citata compaia nel testo estratto. Se non compare, rifiuta la risposta o portala alla revisione umana.

Codice funzionante

import re, requests
from anthropic import Anthropic

KEY = "pk_yourkey"
client = Anthropic()

def fetch_tool(path: str) -> dict:
    return requests.get(f"https://www.apipick.com{path}/tool-schema").json()["claude"]

TOOLS = [
    fetch_tool("/api/search/uk-legal"),
    fetch_tool("/api/extract"),
]

SYSTEM = """You are a UK legal research assistant. You answer questions about
England & Wales case law and UK primary legislation using the tools available.

Rules — non-negotiable:

1. Use uk_legal_search to find authorities relevant to the question.
2. For authorities you intend to cite, use extract_urls to retrieve the
   full text. Do not cite anything you have not extracted.
3. Cite every legal proposition with a neutral citation in standard form:
   [YYYY] EWHC|EWCA|UKSC NNN (Court), §[paragraph] — for cases.
   Section N(M) of the [Act Name] YYYY — for statutes, with point-in-time
   noted if relevant.
4. If the search returned no relevant authority, or the relevant text was
   not extracted, say so explicitly: "I could not retrieve a sufficient
   authority for this question. Please escalate to qualified counsel."
   Do not infer from training-data knowledge.
5. Distinguish ratio from obiter where it matters. Note when an authority
   is first instance, appellate, or Supreme Court.
6. For legislation, default to the in-force version. State the date you used.
7. This output is informational retrieval, not legal advice."""

def call_tool(b):
    paths = {"uk_legal_search": "/api/search/uk-legal", "extract_urls": "/api/extract"}
    r = requests.post(
        f"https://www.apipick.com{paths[b.name]}",
        json=b.input,
        headers={"x-api-key": KEY},
        timeout=60,
    )
    return {"type": "tool_result", "tool_use_id": b.id,
            "content": r.text, "is_error": r.status_code != 200}

NEUTRAL_CITATION = re.compile(r"\[(\d{4})\]\s+(EWHC|EWCA|UKSC)\s+\d+")

def verify_citations(answer: str, extracted_text: str) -> list[str]:
    """Return list of citations in the answer that don't appear in extracted text."""
    cites = NEUTRAL_CITATION.findall(answer)
    return [
        f"[{year}] {court}" for year, court in cites
        if f"[{year}] {court}" not in extracted_text
    ]

def legal_research(question: str) -> str:
    msgs = [{"role": "user", "content": question}]
    extracted_buffer = ""

    while True:
        r = client.messages.create(
            model="claude-sonnet-4-6",
            max_tokens=4096,
            system=SYSTEM,
            tools=TOOLS,
            messages=msgs,
        )
        msgs.append({"role": "assistant", "content": r.content})

        if r.stop_reason == "end_turn":
            answer = "\n".join(b.text for b in r.content if b.type == "text")
            unverified = verify_citations(answer, extracted_buffer)
            if unverified:
                return (
                    "REFUSED: the answer cited authorities that were not retrieved. "
                    f"Unverified: {unverified}. Escalate to qualified counsel."
                )
            return answer

        if r.stop_reason == "tool_use":
            results = []
            for b in r.content:
                if b.type != "tool_use":
                    continue
                tr = call_tool(b)
                if b.name == "extract_urls":
                    extracted_buffer += tr["content"]
                results.append(tr)
            msgs.append({"role": "user", "content": results})

print(legal_research(
    "What is the test for breach of duty by a public authority "
    "post Roberts v Soldiers, Sailors, Airmen and Families Association?"
))

Tre cose che questo codice fa e che le implementazioni pigre non fanno: (1) recupera il testo completo di ogni autorità citata via extract prima di affidarvisi, (2) rifiuta le risposte le cui stringhe di citazione neutra non compaiono davvero in alcun testo recuperato, (3) integra nel system prompt il rifiuto 'Non sono riuscito a recuperare un'autorità sufficiente', così che il modello abbia un'uscita elegante quando il recupero fallisce.

Tetto di costo

Una chiamata tipica di ricerca legale:

  • 1 chiamata di ricerca — 60 crediti (~$0.06)
  • 1 chiamata di extract che copre 2–4 autorità — 4–8 crediti (~$0.004–$0.008)
  • ~6.000 token di input + 1.500 di output di Claude — ~$0.05

In cifra tonda: ~$0.12 per risposta ricercata con citazioni. A 100 domande/giorno per un piccolo team legale interno sono $12/giorno — ben al di sotto del costo di qualsiasi abbonamento commerciale di legal-tech, e tu controlli la traccia di audit.

Dove questo si generalizza

Il pattern architetturale della 'fondatezza sulle citazioni' non si applica solo alla giurisprudenza del Regno Unito — è lo stesso pattern che rende affidabile il RAG sui filings della SEC per la due diligence di investimento e che permette a un agente di letteratura scientifica di evitare riferimenti a paper allucinati. Tre regole li unificano:

  • Recupera prima, genera dopo. Non lasciare mai che il modello produca una citazione che non era nel contesto recuperato.
  • Verifica in modo deterministico. Un regex sul testo estratto è economico e intercetta la maggior parte delle invenzioni.
  • Rifiuta con eleganza. Addestra il system prompt a dire "Non posso rispondere in modo affidabile" prima di addestrare il modello a essere utile.

Ayinde è stato il momento in cui queste regole sono passate da 'buona pratica ingegneristica' a 'l'unico modo per rilasciare IA legale del Regno Unito senza mettere i tuoi utenti davanti alla BSB'. API Pick UK Legal Search è il mattone del livello di ricerca; il resto sta a te collegarlo.

Domande frequenti

Cosa è successo davvero in Ayinde v Haringey?

Nel giugno 2025 la High Court (Ritchie J) ha accertato che la difesa aveva depositato uno skeleton argument che citava cinque casi inesistenti generati da un LLM, oltre a un'altra autorità inventata da un altro professionista in Al-Haroun v Qatar National Bank. Le sentenze sono state pronunciate congiuntamente come Ayinde v Haringey & Al-Haroun v Qatar National Bank [2025] EWHC 1383 (Admin). La corte ha segnalato i professionisti al Bar Standards Board e alla Solicitors Regulation Authority. La decisione è oggi l'autorità standard citata ogni volta che si parla di 'allucinazione dell'IA nella pratica legale' nel Regno Unito.

Posso fare scraping di BAILII?

No. I termini di BAILII limitano l'accesso programmatico in massa, e l'operatore è stato esplicito al riguardo — vedi la documentazione del Transparency Project sulla posizione di BAILII. La via legittima è il servizio Find Case Law del The National Archives per le sentenze di Inghilterra e Galles, che dispone di un'API pubblica e di un feed di dati in massa separato e soggetto a richiesta.

Qual è la differenza tra Find Case Law e legislation.gov.uk?

Find Case Law (caselaw.nationalarchives.gov.uk) copre le sentenze dei tribunali — le decisioni di EWHC, EWCA, UKSC e dei tribunali specializzati. legislation.gov.uk copre la legislazione primaria e secondaria: Acts of Parliament, statutory instruments e (cruciale per il lavoro di compliance) versioni storiche point-in-time. Uno stack RAG legale del Regno Unito completo ha bisogno di entrambi.

Perché la legislazione point-in-time conta per gli agenti di IA?

La maggior parte delle domande giuridiche riguarda quale fosse la legge in una data specifica — il giorno di una presunta violazione, la data di firma di un contratto, il momento in cui un'amministrazione ha preso una decisione. Restituire la versione attuale della legislazione dà risposte sbagliate per qualsiasi domanda storica. Gli endpoint in stile /data.feed?type=ukpga&prospective=true di legislation.gov.uk risolvono questo. La maggior parte degli strumenti legali di IA che allucinano le date fallisce perché non ha collegato questo.

Questo output conta come consulenza legale?

No. L'output di qualsiasi API di recupero (compresa la nostra) è recupero di informazioni, non consulenza legale. I solicitor e i barrister che esercitano in Inghilterra e Galles restano vincolati alle norme deontologiche di SRA / BSB. L'architettura descritta in questo post è pensata per supportare — non sostituire — la revisione legale qualificata. Il precedente Ayinde rende questa distinzione non negoziabile.

API usate in questo articolo

Sarah Choy
Scritto da
Sarah Choy
CEO, API Pick

Sarah Choy è la CEO di API Pick. Scrive sulla creazione di API pronte per la produzione per agenti IA e flussi di lavoro con LLM.