استرجاع السوابق القضائية البريطانية المؤسَّس على الاستشهاد بعد قضية Ayinde v Haringey

غيّرت قضية Ayinde v Haringey حسابات الذكاء الاصطناعي القانوني البريطاني بين عشيّة وضحاها. استشهد محامٍ بخمس قضايا مزيّفة ولّدها نموذج لغة فأُحيل إلى مجلس معايير المحاماة (Bar Standards Board). الاستشهادات المهلوسة صار لها الآن عواقب على السلوك المهني. إليك دليل المطوّر إلى بناء استرجاع للسوابق القضائية البريطانية مؤسَّس على الاستشهاد — TNA Find Case Law، legislation.gov.uk، تحليل الاستشهاد المحايد، وكيف توصلها بوكيل عامل.
الخلاصة
- •Ayinde v Haringey [2025] EWHC 1383 (Admin) جعلت الاستشهادات المهلوسة بالقضايا مسألة سلوك مهني، لا مجرّد مشكلة جودة.
- •شروط BAILII تقيّد الوصول البرمجي الجملي؛ خدمة Find Case Law التابعة للأرشيف الوطني هي الواجهة المشروعة لأحكام إنجلترا وويلز.
- •legislation.gov.uk لديها واجهة مطوّرين مستقرّة بوصول إلى نقطة زمنية — ضرورية لعمل الامتثال حيث 'النافذ في 30 يونيو 2024' استعلام حقيقي.
- •دراسة 'Hallucination-Free?' من معهد ستانفورد HAI أظهرت أن Westlaw وLexis+ AI ما زالا يهلوسان 17–33% من الوقت — تأسيس الاستشهاد هو الجواب المعماري، لا خيار المورّد.
- •API Pick UK Legal Search يلفّ الاسترجاع الدلالي عبر السوابق القضائية والتشريعات الأوّلية في نداء POST واحد — 60 رصيدًا للنداء.
القضية التي غيّرت الحسابات
في 6 يونيو 2025 أصدرت المحكمة القسمية في شعبة محكمة الملك (King's Bench Division) حكمين في قرار واحد — Ayinde v The London Borough of Haringey وAl-Haroun v Qatar National Bank QPSC، الاستشهاد المحايد [2025] EWHC 1383 (Admin). في كليهما، قدّم المحامي موادّ تستشهد بسلطات غير موجودة؛ في Ayinde، خمس قضايا ملفّقة. وجدت المحكمة خرقًا للواجبات المهنية وأحالت الممارسَين إلى BSB وSRA على التوالي.
خلال 48 ساعة، كان لكل خارطة طريق للتقنية القانونية البريطانية بند جديد في الأعلى: تأسيس الاستشهاد. ليس كلطف في الجودة، بل كضرورة تنظيمية. دراسة ستانفورد HAI 'Hallucination-Free?' (Magesh وآخرون، مايو 2024) كانت قد أظهرت أصلًا أن أدوات المورّدين الرائدة — Lexis+ AI، Westlaw AI — تهلوس الاستشهادات 17–33% من الوقت على استعلامات مُقاسة. حوّلت Ayinde ذلك الاكتشاف الأكاديمي إلى مشكلة امتثال.
للمطوّرين الذين يبنون ميزات ذكاء اصطناعي في منتجات قانونية بريطانية، الدرس المعماري واضح: الاسترجاع يجب أن يأتي من مصادر موثوقة، والاستشهادات يجب أن تكون قابلةً للتحقّق ضدّ المصدر، والنظام يجب أن يرفض الإجابة حين يعجز عن تأسيس الردّ. أيّ شيء غير ذلك إحالة إلى منظِّم تنتظر الوقوع.
إليك دليل المطوّر العملي للقيام بهذا كما يجب: أيّ واجهات تستخدم، ما مزالقها، وكيف توصلها بوكيل عامل.
المصادر الموثوقة
1. National Archives Find Case Law
تديره الأرشيف الوطني (TNA). يغطّي أحكام المحاكم الصادرة منذ أبريل 2003 من المحكمة العليا ومحكمة الاستئناف والمحكمة العليا البريطانية ومجلس الملكة الخاص وعدّة محاكم إدارية. المستندات بمعيار Akoma Ntoso (LegalDocML) XML. واجهة عامة على caselaw.nationalarchives.gov.uk؛ تغذية بيانات جملية عبر طلب محجوب لأغراض "التحليل الحوسبي".
نقاط القوّة: مصدر موثوق للسوابق القضائية في إنجلترا وويلز، XML المنظّم يحافظ على بنية الحكم (أرقام الفقرات، الاستشهادات، العناوين)، وشروط رخصة الحكومة المفتوحة (Open Government Licence) تجيز إعادة الاستخدام مع الإسناد. نقاط الضعف: تغطية محدودة قبل 2003، يلزم طلب للتغذية الجملية، وLegalDocML ثقيل التحليل إن لم تلمس XML قانونيًا من قبل.
2. legislation.gov.uk Developer API
تديره TNA. تغطّي التشريعات الأوّلية البريطانية (قوانين البرلمان) والأدوات التشريعية ونظائرها في أيرلندا الشمالية / اسكتلندا / ويلز. وبشكل حاسم، تدعم الاستعلامات عند نقطة زمنية: 'كيف بدا هذا الحكم في 1 أبريل 2018'.
نقاط القوّة: مستقرّة، موثّقة جيدًا، وصول عند نقطة زمنية، مرخّصة بـ OGL. نقاط الضعف: المخطّط (CLML) شيء قائم بذاته؛ ليست كل التعديلات متتبَّعة بانتظام عبر التاريخ؛ ونموذج تاريخ النفاذ قد يفاجئك.
3. BAILII (للقراءة فقط عبر الويب البشري)
مجمِّع معلومات قانونية عريق. حاسم للولايات القضائية وأنواع المستندات التي لا يغطّيها Find Case Law (الأحكام الأقدم، الموادّ الاسكتلندية / أيرلندا الشمالية، بعض قرارات المحاكم الإدارية). الكشط الجملي مقيَّد بشروط BAILII. عامِله كنسخة احتياطية قابلة للقراءة البشرية، لا كواجهة.
4. API Pick UK Legal Search
بحث دلالي عبر السوابق القضائية البريطانية والتشريعات الأوّلية في نقطة نهاية POST واحدة. JSON داخل / JSON خارج، 60 رصيدًا للنداء، فوترة عند النجاح فقط. يُرجع العنوان والاستشهاد المحايد ورابط المصدر والقصاصة مرتّبةً حسب الصلة الدلالية. مصمَّم لاستدعاء أدوات وكلاء الذكاء الاصطناعي.
جنبًا إلى جنب
| Find Case Law | legislation.gov.uk | API Pick UK Legal Search | |
|---|---|---|---|
| التغطية | سوابق إنجلترا وويلز منذ 2003 | قوانين المملكة المتحدة + الأدوات التشريعية، عند نقطة زمنية | سوابق + تشريعات، دلالي |
| الصيغة | Akoma Ntoso XML | CLML XML + JSON / Atom | JSON، قصاصة مُشكَّلة مسبقًا |
| البحث | كلمات مفتاحية | كلمات مفتاحية + بنيوي | دلالي |
| المصادقة | لا شيء للعامة؛ تغذية جملية محجوبة | لا شيء | x-api-key |
| الرخصة | رخصة الحكومة المفتوحة | رخصة الحكومة المفتوحة | شروط خدمة API Pick |
| الملاءمة | مصدر حقيقة بدرجة الامتثال | البحث عن القوانين، استعلامات نقطة زمنية | استرجاع لوكلاء الذكاء الاصطناعي، طبقة RAG |
البنية التي تصمد بعد Ayinde
الحدّ الأدنى من الحزمة القابلة للحياة المؤسَّسة على الاستشهاد:
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مرحلة التحقّق هي حيث تفشل معظم الفِرق. لا يكفي أن تطلب من النموذج 'استشهد بمصادرك' — يجب أن تتحقّق برمجيًا من أن كل سلطة مستشهَد بها تظهر في النصّ المستخرَج. إن لم تظهر، ارفض الإجابة أو اعرضها للمراجعة البشرية.
شيفرة عاملة
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?"
))ثلاثة أمور تفعلها هذه الشيفرة ولا تفعلها التنفيذات الكسولة: (1) تسحب النصّ الكامل لكل سلطة مستشهَد بها عبر extract قبل الاعتماد عليها، (2) ترفض الإجابات التي لا تظهر سلاسل استشهادها المحايد فعلًا في أيّ نصّ مسترجَع، (3) تخبز رفض 'تعذّر استرجاع سلطة كافية' في موجّه النظام كي يكون للنموذج مخرج رشيق حين يفشل الاسترجاع.
سقف التكلفة
نداء بحث قانوني نموذجي:
- نداء بحث واحد — 60 رصيدًا (~$0.06)
- نداء extract واحد يغطّي 2–4 سلطات — 4–8 أرصدة (~$0.004–$0.008)
- ~6,000 رمز إدخال + 1,500 رمز إخراج لـ Claude — ~$0.05
تقريبًا: ~$0.12 لكل إجابة مبحوثة مع استشهادات. عند 100 سؤال/يوم لفريق قانوني داخلي صغير يكون ذلك $12/يوم — أقلّ بكثير من تكلفة أيّ اشتراك تقنية قانونية تجاري، وأنت تتحكّم بأثر التدقيق.
أين يتعمّم هذا
نمط 'تأسيس الاستشهاد' المعماري لا ينطبق على السوابق القضائية البريطانية فحسب — إنه النمط ذاته الذي يجعل RAG على إيداعات SEC موثوقًا للعناية الواجبة الاستثمارية، والذي يتيح لـ وكيل أدبيات علمية تجنّب مراجع الأوراق المهلوسة. ثلاث قواعد توحّدها:
- استرجِع أوّلًا، ولّد ثانيًا. لا تدع النموذج ينتج استشهادًا لم يكن في السياق المسترجَع.
- تحقّق حتميًا. تعبير نمطي على النصّ المستخرَج رخيص ويلتقط معظم التلفيق.
- ارفض برشاقة. درّب موجّه النظام على قول "لا أستطيع الإجابة بموثوقية" قبل أن تدرّب النموذج على أن يكون مفيدًا.
Ayinde كانت اللحظة التي انتقلت فيها هذه القواعد من 'أفضل ممارسة هندسية' إلى 'الطريقة الوحيدة لشحن ذكاء اصطناعي قانوني بريطاني دون وضع مستخدميك أمام BSB'. API Pick UK Legal Search هو لبنة طبقة البحث؛ والباقي عليك توصيله.
الأسئلة الشائعة
ماذا حدث فعلاً في قضية Ayinde v Haringey؟
في يونيو 2025 وجدت المحكمة العليا (القاضي Ritchie) أن المحامي قدّم مذكّرة موجزة تستشهد بخمس قضايا غير موجودة ولّدها نموذج لغة، إضافةً إلى سلطة ملفّقة أخرى من ممارس منفصل في قضية Al-Haroun v Qatar National Bank. صدر الحكمان معًا بوصفهما Ayinde v Haringey & Al-Haroun v Qatar National Bank [2025] EWHC 1383 (Admin). أحالت المحكمة الممارسَين إلى مجلس معايير المحاماة (Bar Standards Board) وهيئة تنظيم المحامين (Solicitors Regulation Authority). صار القرار الآن السلطة المعيارية التي يُستشهد بها كلّما طُرحت 'هلوسة الذكاء الاصطناعي في الممارسة القانونية' في المملكة المتحدة.
هل أستطيع كشط BAILII؟
لا. شروط BAILII تقيّد الوصول البرمجي الجملي، والمشغّل كان صريحًا في ذلك — راجع توثيق Transparency Project لموقف BAILII. الطريق المشروع هو خدمة الأرشيف الوطني Find Case Law لأحكام إنجلترا وويلز، التي لديها واجهة عامة وتغذية بيانات جملية منفصلة محجوبة بالطلب.
ما الفرق بين Find Case Law وlegislation.gov.uk؟
Find Case Law (caselaw.nationalarchives.gov.uk) يغطّي أحكام المحاكم — قرارات EWHC وEWCA وUKSC والمحاكم الإدارية. legislation.gov.uk يغطّي التشريعات الأوّلية والثانوية: قوانين البرلمان، الأدوات التشريعية، و(بشكل حاسم لعمل الامتثال) النسخ التاريخية عند نقطة زمنية. حزمة RAG قانونية بريطانية كاملة تحتاج كليهما.
لماذا تهمّ التشريعات عند نقطة زمنية لوكلاء الذكاء الاصطناعي؟
معظم الأسئلة القانونية عمّا كان عليه القانون في تاريخ محدّد — يوم الانتهاك المزعوم، تاريخ توقيع العقد، وقت اتخاذ الجهة قرارًا. إرجاع النسخة الحالية من التشريع يعطي إجابات خاطئة لأيّ سؤال تاريخي. نقاط النهاية بنمط /data.feed?type=ukpga&prospective=true في legislation.gov.uk تحلّ هذا. معظم أدوات الذكاء الاصطناعي القانونية التي تهلوس التواريخ تفشل لأنها لم توصِل هذا.
هل يُعدّ هذا الناتج نصيحة قانونية؟
لا. ناتج أيّ واجهة استرجاع (بما فيها واجهتنا) استرجاع معلوماتي، لا نصيحة قانونية. يبقى المحامون والمستشارون الممارسون في إنجلترا وويلز ملزَمين بقواعد سلوك SRA / BSB. البنية التي يصفها هذا المنشور مصمَّمة لدعم — لا استبدال — المراجعة القانونية المؤهَّلة. سابقة Ayinde تجعل هذا التمييز غير قابل للتفاوض.
الواجهات البرمجية المستخدمة في هذا المقال
سارة تشوي هي الرئيسة التنفيذية لشركة API Pick. تكتب عن بناء واجهات برمجية جاهزة للإنتاج لوكلاء الذكاء الاصطناعي وسير عمل نماذج اللغة.