[ blog · use-case ]11 min read

Truy xuất án lệ Vương quốc Anh có căn cứ trích dẫn sau vụ Ayinde v Haringey

Sarah ChoyĐăng ngày 3 tháng 5, 202611 phút đọc
Truy xuất án lệ Vương quốc Anh có căn cứ trích dẫn sau vụ Ayinde v Haringey

Vụ Ayinde v Haringey đã thay đổi cục diện của AI pháp lý ở Anh chỉ sau một đêm. Một barrister đã trích dẫn năm vụ án giả do một LLM tạo ra và bị chuyển sang Bar Standards Board. Trích dẫn ảo giác giờ đây kéo theo hậu quả về đạo đức nghề nghiệp. Đây là hướng dẫn dành cho lập trình viên để xây dựng truy xuất án lệ Vương quốc Anh có căn cứ trích dẫn — TNA Find Case Law, legislation.gov.uk, phân tích cú pháp trích dẫn trung lập, và cách đấu nối nó vào một agent hoạt động thực sự.

Tóm tắt

  • Ayinde v Haringey [2025] EWHC 1383 (Admin) đã biến trích dẫn án lệ ảo giác thành vấn đề đạo đức nghề nghiệp, không chỉ là vấn đề chất lượng.
  • Điều khoản của BAILII hạn chế truy cập lập trình hàng loạt; dịch vụ Find Case Law của The National Archives mới là API hợp pháp cho các bản án của Anh và xứ Wales.
  • legislation.gov.uk có một Developer API ổn định với truy cập point-in-time — thiết yếu cho công việc tuân thủ, nơi 'có hiệu lực vào ngày 30 tháng 6 năm 2024' là một truy vấn thực sự.
  • Nghiên cứu 'Hallucination-Free?' của Stanford HAI cho thấy Westlaw và Lexis+ AI vẫn ảo giác từ 17–33% số lần — căn cứ trích dẫn là câu trả lời về mặt kiến trúc, không phải một lựa chọn nhà cung cấp.
  • API Pick UK Legal Search gói gọn truy xuất ngữ nghĩa trên án lệ và luật sơ cấp trong một lời gọi POST — 60 credit mỗi lần gọi.

Vụ án đã thay đổi cục diện

Vào ngày 6 tháng 6 năm 2025, Divisional Court của King's Bench Division đã tuyên hai bản án trong một phán quyết duy nhất — Ayinde v The London Borough of HaringeyAl-Haroun v Qatar National Bank QPSC, trích dẫn trung lập [2025] EWHC 1383 (Admin). Trong cả hai vụ, luật sư biện hộ đã nộp các tài liệu trích dẫn những án lệ không tồn tại; trong vụ Ayinde là năm vụ án bịa đặt. Tòa án kết luận có sự vi phạm nghĩa vụ nghề nghiệp và lần lượt chuyển những người hành nghề này sang BSB và SRA.

Trong vòng 48 giờ, mọi lộ trình legal-tech ở Anh đều có một gạch đầu dòng mới lên đầu: căn cứ trích dẫn. Không phải như một chi tiết chất lượng dễ chịu, mà như một yêu cầu quản lý bắt buộc. Nghiên cứu 'Hallucination-Free?' của Stanford HAI (Magesh et al., tháng 5 năm 2024) đã chỉ ra rằng các công cụ hàng đầu của nhà cung cấp — Lexis+ AI, Westlaw AI — ảo giác trích dẫn từ 17–33% số lần trên các truy vấn benchmark. Ayinde đã biến phát hiện học thuật đó thành một vấn đề tuân thủ.

Đối với các lập trình viên đang tích hợp tính năng AI vào sản phẩm pháp lý ở Anh, bài học về mặt kiến trúc rất rõ ràng: truy xuất phải đến từ các nguồn có thẩm quyền, trích dẫn phải kiểm chứng được với nguồn, và hệ thống phải từ chối trả lời khi không thể đưa ra câu trả lời có căn cứ. Bất cứ điều gì khác đều là một vụ chuyển sang cơ quan quản lý chỉ chực chờ xảy ra.

Đây là hướng dẫn thực chiến dành cho lập trình viên để làm điều này cho đúng: nên dùng API nào, những cạm bẫy của chúng là gì, và cách đấu nối chúng vào một agent hoạt động thực sự.

Các nguồn có thẩm quyền

1. National Archives Find Case Law

Do The National Archives (TNA) vận hành. Bao phủ các bản án được tuyên từ tháng 4 năm 2003 bởi High Court, Court of Appeal, UK Supreme Court, Privy Council và một số tribunal. Tài liệu theo chuẩn XML Akoma Ntoso (LegalDocML). API công khai tại caselaw.nationalarchives.gov.uk; luồng dữ liệu hàng loạt qua đơn đăng ký phải xét duyệt cho mục đích "phân tích tính toán".

Điểm mạnh: nguồn có thẩm quyền cho án lệ Anh và xứ Wales, XML có cấu trúc bảo toàn cấu trúc bản án (số đoạn, trích dẫn, tiêu đề), điều khoản Open Government Licence cho phép tái sử dụng có ghi nguồn. Điểm yếu: phạm vi bao phủ hạn chế trước năm 2003, cần đơn đăng ký cho luồng hàng loạt, LegalDocML nặng nề để phân tích cú pháp nếu bạn chưa từng đụng đến XML pháp lý.

2. Developer API của legislation.gov.uk

Do TNA vận hành. Bao phủ luật sơ cấp của Anh (Acts of Parliament), statutory instruments, và các bản tương đương của Bắc Ireland / Scotland / xứ Wales. Điều tối quan trọng, nó hỗ trợ truy vấn point-in-time: 'điều khoản này trông như thế nào vào ngày 1 tháng 4 năm 2018'.

Điểm mạnh: ổn định, có tài liệu tốt, truy cập point-in-time, cấp phép theo OGL. Điểm yếu: schema (CLML) là kiểu riêng của nó; không phải mọi sửa đổi đều được theo dõi đồng nhất ngược về quá khứ; mô hình ngày có hiệu lực có thể khiến bạn bất ngờ.

3. BAILII (chỉ đọc qua web dành cho con người)

Nền tảng tổng hợp thông tin pháp lý lâu đời. Quan trọng đối với những thẩm quyền và loại tài liệu mà Find Case Law không bao phủ (các bản án cũ hơn, tài liệu Scotland / Bắc Ireland, một số quyết định của tribunal). Scraping hàng loạt bị điều khoản của BAILII hạn chế. Hãy coi nó là một bản dự phòng cho con người đọc, không phải một API.

Tìm kiếm ngữ nghĩa trên án lệ và luật sơ cấp của Anh trong một endpoint POST duy nhất. JSON vào / JSON ra, 60 credit mỗi lần gọi, chỉ tính phí khi thành công. Trả về tiêu đề, trích dẫn trung lập, URL nguồn và snippet được xếp hạng theo mức độ liên quan ngữ nghĩa. Được thiết kế cho việc gọi công cụ của AI agent.

So sánh cạnh nhau

Các nguồn tại thời điểm viết bài. Hãy xác nhận điều khoản cấp phép với TNA trước khi triển khai thương mại.
Find Case Lawlegislation.gov.ukAPI Pick UK Legal Search
Phạm viÁn lệ E&W từ 2003Luật + SIs của Anh, point-in-timeÁn lệ + luật, ngữ nghĩa
Định dạngAkoma Ntoso XMLCLML XML + JSON / AtomJSON, snippet đã định hình sẵn
Tìm kiếmTừ khóaTừ khóa + cấu trúcNgữ nghĩa
Xác thựcKhông cho phần công khai; luồng hàng loạt phải xét duyệtKhôngx-api-key
Giấy phépOpen Government LicenceOpen Government LicenceTOS của API Pick
Phù hợpNguồn chân lý cấp độ tuân thủTra cứu luật, truy vấn point-in-timeTruy xuất cho AI agent, lớp RAG

Kiến trúc sống sót qua Ayinde

Ngăn xếp có căn cứ trích dẫn khả thi tối thiểu:

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

Bước kiểm chứng là nơi hầu hết các nhóm thất bại. Chỉ yêu cầu mô hình 'trích dẫn nguồn của bạn' là chưa đủ — bạn phải kiểm chứng bằng lập trình rằng mỗi án lệ được trích dẫn đều xuất hiện trong văn bản đã trích xuất. Nếu không, hãy từ chối câu trả lời hoặc đưa nó ra cho con người rà soát.

Mã hoạt động thực sự

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

Ba điều mà đoạn mã này làm mà các cách triển khai lười biếng không làm: (1) nó kéo toàn văn của mỗi án lệ được trích dẫn qua extract trước khi dựa vào nó, (2) nó bác bỏ các câu trả lời có chuỗi trích dẫn trung lập không thực sự xuất hiện trong bất kỳ văn bản đã truy xuất nào, (3) nó nhúng vào system prompt lời từ chối 'Tôi không thể truy xuất được một án lệ đủ căn cứ' để mô hình có một lối thoát nhã nhặn khi việc truy xuất thất bại.

Trần chi phí

Một lời gọi nghiên cứu pháp lý điển hình:

  • 1 lời gọi tìm kiếm — 60 credit (~$0.06)
  • 1 lời gọi extract bao phủ 2–4 án lệ — 4–8 credit (~$0.004–$0.008)
  • ~6.000 token đầu vào + 1.500 token đầu ra của Claude — ~$0.05

Con số làm tròn: ~$0.12 mỗi câu trả lời được nghiên cứu kèm trích dẫn. Ở mức 100 câu hỏi/ngày cho một nhóm pháp lý nội bộ nhỏ thì đó là $12/ngày — thấp hơn nhiều so với chi phí của bất kỳ gói đăng ký legal-tech thương mại nào, và bạn kiểm soát toàn bộ dấu vết kiểm toán.

Nơi điều này khái quát hóa

Mẫu kiến trúc 'căn cứ trích dẫn' không chỉ áp dụng cho án lệ Anh — đó là cùng một mẫu khiến RAG trên các hồ sơ SEC trở nên đáng tin cậy cho việc thẩm định đầu tư, và giúp một agent tài liệu khoa học tránh các tham chiếu bài báo ảo giác. Ba quy tắc thống nhất chúng lại:

  • Truy xuất trước, sinh sau. Đừng bao giờ để mô hình tạo ra một trích dẫn không có trong ngữ cảnh đã truy xuất.
  • Kiểm chứng theo cách tất định. Một regex trên văn bản đã trích xuất thì rẻ và bắt được phần lớn các trường hợp bịa đặt.
  • Từ chối một cách nhã nhặn. Huấn luyện system prompt để nói "Tôi không thể trả lời một cách đáng tin cậy" trước khi huấn luyện mô hình để tỏ ra hữu ích.

Ayinde là khoảnh khắc những quy tắc này chuyển từ 'thông lệ kỹ thuật tốt' thành 'cách duy nhất để đưa AI pháp lý ở Anh ra thị trường mà không đẩy người dùng của bạn đứng trước BSB'. API Pick UK Legal Search là khối xây dựng cho lớp tìm kiếm; phần còn lại là của bạn để đấu nối.

Câu hỏi thường gặp

Chuyện gì thực sự đã xảy ra trong vụ Ayinde v Haringey?

Vào tháng 6 năm 2025, High Court (Ritchie J) đã kết luận rằng luật sư biện hộ đã nộp một skeleton argument trích dẫn năm vụ án không tồn tại do một LLM tạo ra, cộng thêm một án lệ bịa đặt khác do một người hành nghề riêng biệt đưa ra trong vụ Al-Haroun v Qatar National Bank. Các bản án được tuyên cùng nhau dưới tên Ayinde v Haringey & Al-Haroun v Qatar National Bank [2025] EWHC 1383 (Admin). Tòa án đã chuyển những người hành nghề này sang Bar Standards Board và Solicitors Regulation Authority. Quyết định này giờ đây là án lệ tiêu chuẩn được trích dẫn mỗi khi chủ đề 'ảo giác AI trong hành nghề pháp lý' được nêu ra ở Anh.

Tôi có thể scrape BAILII không?

Không. Điều khoản của BAILII hạn chế truy cập lập trình hàng loạt, và bên vận hành đã nói rõ điều này — xem tài liệu của Transparency Project về lập trường của BAILII. Con đường hợp pháp là dịch vụ Find Case Law của The National Archives cho các bản án của Anh và xứ Wales, vốn có một API công khai và một luồng dữ liệu hàng loạt riêng biệt phải qua xét duyệt đơn đăng ký.

Sự khác biệt giữa Find Case Law và legislation.gov.uk là gì?

Find Case Law (caselaw.nationalarchives.gov.uk) bao phủ các bản án của tòa — các quyết định của EWHC, EWCA, UKSC và các tribunal. legislation.gov.uk bao phủ luật sơ cấp và thứ cấp: Acts of Parliament, statutory instruments, và (đặc biệt quan trọng cho công việc tuân thủ) các phiên bản lịch sử point-in-time. Một ngăn xếp RAG pháp lý Anh hoàn chỉnh cần cả hai.

Vì sao luật point-in-time lại quan trọng đối với các AI agent?

Hầu hết câu hỏi pháp lý đều xoay quanh việc luật là gì vào một ngày cụ thể — ngày bị cáo buộc vi phạm, ngày ký hợp đồng, thời điểm một cơ quan ra quyết định. Trả về phiên bản luật hiện hành sẽ cho câu trả lời sai đối với bất kỳ câu hỏi lịch sử nào. Các endpoint kiểu /data.feed?type=ukpga&prospective=true của legislation.gov.uk giải quyết chuyện này. Hầu hết các công cụ pháp lý AI ảo giác ngày tháng thất bại vì chúng không đấu nối phần này vào.

Đầu ra này có được coi là tư vấn pháp lý không?

Không. Đầu ra từ bất kỳ API truy xuất nào (kể cả của chúng tôi) là truy xuất thông tin, không phải tư vấn pháp lý. Các solicitor và barrister hành nghề ở Anh và xứ Wales vẫn chịu ràng buộc bởi các quy tắc đạo đức của SRA / BSB. Kiến trúc mà bài viết này mô tả được thiết kế để hỗ trợ — chứ không thay thế — việc rà soát pháp lý có chuyên môn. Án lệ Ayinde khiến sự phân biệt đó là điều không thể thương lượng.

Các API dùng trong bài viết này

Sarah Choy
Viết bởi
Sarah Choy
CEO, API Pick

Sarah Choy là CEO của API Pick. Cô viết về việc xây dựng các API sẵn sàng cho production cho AI agent và quy trình LLM.