[ blog · use-case ]11 min read

Recuperação de jurisprudência do Reino Unido fundamentada em citações após Ayinde v Haringey

Sarah ChoyPublicado em 3 de maio de 202611 min de leitura
Recuperação de jurisprudência do Reino Unido fundamentada em citações após Ayinde v Haringey

Ayinde v Haringey mudou os cálculos da IA jurídica do Reino Unido de um dia para o outro. Um barrister citou cinco casos falsos gerados por um LLM e foi encaminhado ao Bar Standards Board. Citações alucinadas agora têm consequências deontológicas. Aqui vai o guia de desenvolvedor para construir recuperação de jurisprudência do Reino Unido fundamentada em citações — TNA Find Case Law, legislation.gov.uk, parsing de citações neutras e como conectar tudo isso a um agente funcional.

TL;DR

  • Ayinde v Haringey [2025] EWHC 1383 (Admin) transformou as citações de casos alucinadas em um problema deontológico, não apenas em um problema de qualidade.
  • Os termos do BAILII restringem o acesso programático em massa; o serviço Find Case Law do The National Archives é a API legítima para as decisões da Inglaterra e do País de Gales.
  • O legislation.gov.uk tem uma Developer API estável com acesso point-in-time — essencial para o trabalho de compliance, em que 'em vigor em 30 de junho de 2024' é uma query real.
  • O estudo 'Hallucination-Free?' da Stanford HAI mostrou que Westlaw e Lexis+ AI ainda alucinam entre 17 e 33% das vezes — fundamentar em citações é a resposta arquitetônica, não uma escolha de fornecedor.
  • O API Pick UK Legal Search encapsula a recuperação semântica sobre jurisprudência e legislação primária em um único POST — 60 créditos por chamada.

O caso que mudou os cálculos

Em 6 de junho de 2025, a Divisional Court da King's Bench Division proferiu duas decisões em uma única sentença — Ayinde v The London Borough of Haringey e Al-Haroun v Qatar National Bank QPSC, citação neutra [2025] EWHC 1383 (Admin). Em ambas, a defesa havia apresentado materiais que citavam autoridades que não existiam; em Ayinde, cinco casos fabricados. O tribunal reconheceu um descumprimento de deveres profissionais e encaminhou os profissionais à BSB e à SRA, respectivamente.

Em 48 horas, todo roadmap de legal-tech do Reino Unido ganhou um novo item no topo: a fundamentação em citações. Não como um detalhe de qualidade, mas como uma necessidade regulatória. O estudo 'Hallucination-Free?' da Stanford HAI (Magesh et al., maio de 2024) já havia demonstrado que as ferramentas líderes dos fornecedores — Lexis+ AI, Westlaw AI — alucinam citações entre 17 e 33% das vezes em queries de benchmark. Ayinde transformou esse achado acadêmico em um problema de compliance.

Para os desenvolvedores que integram recursos de IA a produtos jurídicos do Reino Unido, a lição arquitetônica é clara: a recuperação tem de vir de fontes autorizadas, as citações têm de ser verificáveis em relação à fonte e o sistema tem de se recusar a responder quando não consegue fundamentar uma resposta. Qualquer outra coisa é um encaminhamento a um regulador esperando para acontecer.

Aqui vai o guia de desenvolvedor para fazer isso direito: quais APIs usar, quais são suas pegadinhas e como conectá-las a um agente funcional.

As fontes autorizadas

1. National Archives Find Case Law

Operado pelo The National Archives (TNA). Cobre as decisões proferidas desde abril de 2003 pela High Court, pela Court of Appeal, pela UK Supreme Court, pelo Privy Council e por vários tribunais especializados. Documentos no padrão XML Akoma Ntoso (LegalDocML). API pública em caselaw.nationalarchives.gov.uk; feed de dados em massa via solicitação sujeita a aprovação para fins de "análise computacional".

Pontos fortes: fonte autorizada para a jurisprudência da Inglaterra e do País de Gales, o XML estruturado preserva a estrutura da decisão (números de parágrafo, citações, cabeçalhos), os termos da Open Government Licence permitem a reutilização com atribuição. Pontos fracos: cobertura limitada antes de 2003, solicitação necessária para o feed em massa, o LegalDocML é pesado para parsear se você nunca tocou em XML jurídico.

2. Developer API do legislation.gov.uk

Operada pelo TNA. Cobre a legislação primária do Reino Unido (Acts of Parliament), os statutory instruments e os equivalentes da Irlanda do Norte / Escócia / País de Gales. E, fundamental, suporta queries point-in-time: 'qual era a aparência desta disposição em 1º de abril de 2018'.

Pontos fortes: estável, bem documentada, acesso point-in-time, licenciada sob OGL. Pontos fracos: o schema (CLML) é uma coisa própria; nem todas as emendas são rastreadas de forma uniforme ao longo do histórico; o modelo de data de entrada em vigor pode te surpreender.

3. BAILII (somente leitura via web humana)

Agregador de informação jurídica de longa data. Crítico para jurisdições e tipos de documento que o Find Case Law não cobre (decisões mais antigas, material escocês / norte-irlandês, algumas decisões de tribunais especializados). O scraping em massa é restrito pelos termos do BAILII. Trate-o como um backup legível por humanos, não como uma API.

Busca semântica sobre a jurisprudência e a legislação primária do Reino Unido em um único endpoint POST. JSON in / JSON out, 60 créditos por chamada, cobrança apenas no sucesso. Retorna título, citação neutra, URL de origem e snippet ranqueado por relevância semântica. Projetada para o tool calling de agentes de IA.

Lado a lado

Fontes no momento da redação. Confirme os termos de licenciamento com o TNA antes de uma implantação comercial.
Find Case Lawlegislation.gov.ukAPI Pick UK Legal Search
CoberturaJurisprudência de E&W desde 2003Statutes + SIs do Reino Unido, point-in-timeJurisprudência + legislação, semântica
FormatoAkoma Ntoso XMLCLML XML + JSON / AtomJSON, snippet já pré-formatado
BuscaPalavras-chavePalavras-chave + estruturalSemântica
AuthNenhuma para o público; feed em massa com solicitaçãoNenhumax-api-key
LicençaOpen Government LicenceOpen Government LicenceTOS do API Pick
EncaixeFonte da verdade de nível complianceLookup de statutes, queries point-in-timeRecuperação para agente de IA, camada RAG

A arquitetura que sobrevive a Ayinde

A stack mínima viável fundamentada em citações:

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

A passada de verificação é onde a maioria das equipes falha. Não basta pedir ao modelo 'cite suas fontes' — você precisa verificar programaticamente que cada autoridade citada aparece no texto extraído. Se não aparecer, recuse a resposta ou encaminhe-a para revisão humana.

Código que funciona

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?"
))

Três coisas que este código faz e que as implementações preguiçosas não fazem: (1) puxa o texto completo de cada autoridade citada via extract antes de se apoiar nela, (2) rejeita as respostas cujas cadeias de citação neutra não aparecem de fato em nenhum texto recuperado, (3) embute no system prompt a recusa 'Não consegui recuperar uma autoridade suficiente', para que o modelo tenha uma saída elegante quando a recuperação falha.

Teto de custo

Uma chamada típica de pesquisa jurídica:

  • 1 chamada de busca — 60 créditos (~$0.06)
  • 1 chamada de extract cobrindo 2–4 autoridades — 4–8 créditos (~$0.004–$0.008)
  • ~6.000 tokens de entrada + 1.500 de saída do Claude — ~$0.05

Em números redondos: ~$0.12 por resposta pesquisada com citações. A 100 perguntas/dia para uma pequena equipe jurídica interna, são $12/dia — bem abaixo do custo de qualquer assinatura comercial de legal-tech, e você controla a trilha de auditoria.

Onde isso se generaliza

O padrão arquitetônico de 'fundamentar em citações' não se aplica apenas à jurisprudência do Reino Unido — é o mesmo padrão que torna confiável o RAG sobre filings da SEC para a due diligence de investimento e o que permite a um agente de literatura científica evitar referências de papers alucinadas. Três regras os unificam:

  • Recupere primeiro, gere depois. Nunca deixe o modelo produzir uma citação que não estava no contexto recuperado.
  • Verifique de forma determinística. Um regex sobre o texto extraído é barato e pega a maior parte das fabricações.
  • Recuse com elegância. Treine o system prompt para dizer "Não posso responder de forma confiável" antes de treinar o modelo para ser prestativo.

Ayinde foi o momento em que essas regras passaram de 'boa prática de engenharia' para 'a única forma de lançar IA jurídica do Reino Unido sem colocar seus usuários diante da BSB'. O API Pick UK Legal Search é a peça da camada de busca; o resto cabe a você conectar.

Perguntas Frequentes

O que realmente aconteceu em Ayinde v Haringey?

Em junho de 2025, a High Court (Ritchie J) concluiu que a defesa havia apresentado um skeleton argument que citava cinco casos inexistentes gerados por um LLM, além de outra autoridade fabricada por outro profissional em Al-Haroun v Qatar National Bank. As decisões foram proferidas em conjunto como Ayinde v Haringey & Al-Haroun v Qatar National Bank [2025] EWHC 1383 (Admin). O tribunal encaminhou os profissionais ao Bar Standards Board e à Solicitors Regulation Authority. A decisão é hoje a autoridade padrão citada sempre que surge o tema 'alucinação de IA na prática jurídica' no Reino Unido.

Posso fazer scraping do BAILII?

Não. Os termos do BAILII restringem o acesso programático em massa, e o operador foi explícito a respeito — veja a documentação do Transparency Project sobre a posição do BAILII. A via legítima é o serviço Find Case Law do The National Archives para as decisões da Inglaterra e do País de Gales, que tem uma API pública e um feed de dados em massa separado e sujeito a solicitação.

Qual é a diferença entre Find Case Law e legislation.gov.uk?

O Find Case Law (caselaw.nationalarchives.gov.uk) cobre as decisões dos tribunais — as decisões da EWHC, EWCA, UKSC e dos tribunais especializados. O legislation.gov.uk cobre a legislação primária e secundária: Acts of Parliament, statutory instruments e (crucial para o trabalho de compliance) versões históricas point-in-time. Uma stack RAG jurídica completa do Reino Unido precisa de ambos.

Por que a legislação point-in-time importa para os agentes de IA?

A maioria das perguntas jurídicas trata de qual era a lei em uma data específica — o dia de um suposto descumprimento, a data de assinatura de um contrato, o momento em que uma administração tomou uma decisão. Retornar a versão atual da legislação dá respostas erradas para qualquer pergunta histórica. Endpoints no estilo /data.feed?type=ukpga&prospective=true do legislation.gov.uk resolvem isso. A maioria das ferramentas jurídicas de IA que alucinam datas falha porque não conectou isso.

Essa saída conta como aconselhamento jurídico?

Não. A saída de qualquer API de recuperação (incluindo a nossa) é recuperação de informação, não aconselhamento jurídico. Solicitors e barristers que atuam na Inglaterra e no País de Gales continuam sujeitos às normas deontológicas da SRA / BSB. A arquitetura que este post descreve foi pensada para apoiar — não substituir — a revisão jurídica qualificada. O precedente Ayinde torna essa distinção inegociável.

APIs usadas neste artigo

Sarah Choy
Escrito por
Sarah Choy
CEO, API Pick

Sarah Choy é a CEO da API Pick. Ela escreve sobre a construção de APIs prontas para produção para agentes de IA e fluxos de trabalho com LLMs.