
تطبيق النماذج اللغوية الكبيرة على بيانات الأعمال صفًا بصف، بمخرجات منظمة وتمييز كل إخفاق
خطوة في خط معالجة البيانات تشغّل نموذجًا لغويًا مختارًا على كل صف من صفوف الجدول، وتعيد حقولًا محددة النوع تطابق مخططًا يحدده المستخدم، وتميّز كل صف بأنه أُجيب عنه أو أخفق.
- الشريك
- شركة استشارية متعددة الجنسيات
- المدة
- من أكتوبر 2024 إلى يناير 2026
- مزوّدو النماذج
- 5
- خمسة من مزوّدي البوابة الستة: OpenAI وAnthropic وGoogle وGroq وxAI
- نوعان من حدود المعدل
- 2
- الطلبات والرموز (tokens) في الدقيقة، لكل مزوّد
- الحالة
- كل صف
- أُجيب عنه أو أخفق، مع ذكر السبب
التحدي
أرادت الفرق تصنيف المعلومات واستخراجها وتلخيصها عبر آلاف السجلات. ولم يكن ممكنًا إدخال الإجابات النصية الحرة التي تعيدها النماذج بصورة موثوقة في التقارير أو قواعد البيانات أو الأنظمة الأخرى.
ما بنيناه
خطوة تحليل ترسل كل صف إلى نموذج مختار مع موجّه مبني على قالب، وتشترط إجابة منظمة. وتضبط وتيرة الاستدعاءات وفق حدود الطلبات والرموز لدى كل مزوّد، وتعيد محاولة حالات الإخفاق العابرة بتأخير متزايد (backoff)، وتضيف الحقول المولّدة إلى البيانات الأصلية أعمدةً محددة النوع، مع عمود للحالة في كل صف.
ما تم تسليمه
- مخطط مخرجات يحدده المستخدم، مع التحقق من الإعدادات قبل بدء التشغيل
- ضبط الوتيرة وفق حدود الطلبات والرموز لدى كل مزوّد
- حالة ورسالة خطأ في كل صف، فلا تُحسب القيمة البديلة إجابةً أبدًا
نبذة عن الشريك
شريكنا شركة استشارية متعددة الجنسيات تتعامل فرقها مع كميات كبيرة من المستندات وجداول البيانات وقواعد البيانات والبريد الإلكتروني. وأراد الشريك منصة داخلية واحدة تبني فيها هذه الفرق خطوط معالجة البيانات والوكلاء الأذكياء بنفسها، بدلًا من التعاقد على تطبيق جديد لكل حاجة. وكان على المنصة أن تعمل داخل بيئة Microsoft 365 وAzure لدى الشريك، وأن تفصل عمل كل فريق عن غيره، وأن تنقل العمل من مرحلة التجربة إلى بيئة الإنتاج عبر بيئات خاضعة للرقابة. وتتناول دراسة الحالة هذه جزءًا واحدًا من تلك المنصة، وتصف تسع دراسات حالة المنصة كاملة.
التحدي
النص الحر لا يناسب الجداول
تختلف استجابات النماذج في شكلها وصياغتها. ومن دون بنية ثابتة، تحتاج النتائج إلى تنظيف يدوي قبل أن يتمكن أحد من فرزها أو تصفيتها أو تحميلها.
الحجم يصطدم بحدود المعدل
تشغيل نموذج على جدول كبير يعني استدعاءات كثيرة في وقت قصير. ويحدّ المزوّدون عدد الطلبات وعدد الرموز في الدقيقة معًا، وتفشل بعض الاستدعاءات لأسباب عابرة.
إخفاقات صامتة
إذا مُلئ صف أخفق بقيم افتراضية ولم يدل عليه شيء، فلن يستطيع التقرير المبني على الجدول التمييز بين إجابة حقيقية وقيمة مؤقتة.
الأخطاء تظهر متأخرة
الموجّه الذي يشير إلى حقل غير موجود، أو حقول المخرجات التي تتعارض مع أعمدة قائمة، قد تُفشل التشغيل في منتصف عملية طويلة ومكلفة ما لم تُكتشف مسبقًا.
الأهداف
- إعادة نتائج النماذج حقولًا محددة النوع يمكن للخطوات اللاحقة الاعتماد عليها
- البقاء ضمن حدود الطلبات والرموز لدى كل مزوّد
- إيقاف التشغيل افتراضيًا عند إخفاق صف، أو حصر الإخفاق في ذلك الصف وتمييزه
- اكتشاف أخطاء الإعداد قبل إجراء أي استدعاء للنموذج
- إتاحة اختيار النموذج والمزوّد لكل خطوة
دورنا
تولّت كارسنترك القيادة التقنية والبنية المعمارية ضمن فريق هندسي متعدد التخصصات، وأسهمت مباشرة في التنفيذ. بُنيت المنصة على مدى 16 شهرًا، من أكتوبر 2024 إلى يناير 2026، بواجهة خلفية مبنية على Python وFastAPI وتعمل على Azure.
النطاق والجدول الزمني
طُوّرت خطوة التحليل بين نوفمبر 2024 وأكتوبر 2025 ضمن مكتبة خطوات خطوط المعالجة في المنصة، إلى جانب نموذج إعداداتها والتحقق من الموجّهات وتسجيل التشغيل في السجلات.

المنهجية
المخطط أولًا
يحدد المستخدم المخرجات على هيئة JSON Schema. وتحوّله الخطوة إلى نموذج بيانات محدد النوع، وتطلب من مزوّد النموذج مخرجات منظمة، فتكون كل إجابة إما مطابقة للمخطط وإما معدودة إخفاقًا.
التحقق قبل الإنفاق
قبل أول استدعاء، تتحقق الخطوة من وجود متغيرات الموجّه في البيانات، ومن صحة القوالب، ومن أن أسماء الحقول المولّدة لا تتعارض مع أعمدة المصدر. كما تعرض تقديرًا لما سيستهلكه التشغيل من رموز ولكلفته.
الوتيرة وفق حدود المزوّد
يتابع محدِّد للمعدل عدد الطلبات وعدد الرموز في الدقيقة لكل مزوّد، ويتكيف مع الحدود التي يعلنها المزوّد في ترويسات استجاباته حين يرسلها، ويستخدم الحدود المضبوطة في الإعدادات في غير ذلك. وتمر الاستدعاءات عبر بوابة النماذج في المنصة. ودرجة التوازي إعداد منفصل، فتستطيع الفرق تشغيل صفوف كثيرة في وقت واحد دون تجاوز ميزانية الرموز.
التنفيذ

قوالب الموجّهات
تجمع الموجّهات بين قيم ثابتة وحقول من كل صف، بما فيها الحقول المتداخلة. ويُطبَّق القالب نفسه على الجدول كله، مما يُبقي النتائج قابلة للمقارنة.
المعالجة على دفعات
تُعالَج الصفوف في دفعات غير متزامنة. وتُعاد محاولة حالات الإخفاق العابرة حتى ثلاث مرات افتراضيًا، بتأخير يتزايد أُسيًا مع فاصل عشوائي (jitter)، وباحترام أي قيمة Retry-After يرسلها المزوّد. وتُسجَّل كل إعادة محاولة.
سياسة الإخفاق
يحمل كل صف من صفوف المخرجات عمودًا للحالة وعمودًا للخطأ. وافتراضيًا، إذا استمر إخفاق صف بعد إعادة المحاولة، يتوقف التشغيل برسالة خطأ واضحة. وعند تفعيل خيار تحمّل الإخفاق، يتلقى الصف قيمًا افتراضية، ويُميَّز بأنه أخفق، ويتواصل التشغيل.
المخرجات
تُدمج الحقول المولّدة وأعمدة الحالة مع الصف الأصلي في جدول جديد محدد النوع، يمكن لخطوات الكتابة والربط وغيرها استخدامه مباشرة، بما في ذلك لاستبعاد الصفوف التي أخفقت.

الأدوات والتقنيات
| الأداة | الغرض |
|---|---|
| LangChain | تهيئة النماذج والمخرجات المنظمة |
| Pydantic | نماذج بيانات محددة النوع مولّدة من JSON Schema |
| OpenAI وAnthropic وGoogle وGroq وxAI | مزوّدو نماذج يمكن الاختيار بينهم |
| asyncio | معالجة الدفعات بالتوازي |
ما تم تسليمه
- مزوّدين
- 5
- نوعان من حدود المعدل
- 2
- مرات إعادة المحاولة افتراضيًا
- 3
- عمود الحالة
- كل صف
- خطوة تحليل قابلة لإعادة الاستخدام ومتاحة لكل خطوط المعالجة في المنصة
- مخرجات محددة النوع يجري التحقق منها وفق المخطط بدلًا من النص الحر
- ضبط الوتيرة وفق حدود الطلبات والرموز، مع إعادة المحاولة والتأخير المتزايد
- حالة في كل صف، واكتشاف أخطاء الإعداد قبل تكبّد أي كلفة
لماذا يهم ذلك
تصبح النماذج اللغوية مفيدة في العمليات حين يستطيع النظام التالي في السلسلة الوثوق بمخرجاتها، ويشمل ذلك معرفة الصفوف التي لم يُجب عنها النموذج. ومعاملة البنية والوتيرة والإخفاق على أنها قرارات تصميمية تحوّل استدعاء النموذج إلى خطوة بيانات يُعتمد عليها.
إذا كانت مؤسستكم تخطط لمنصة من هذا النوع، أو تحتاج إلى تصميم جزء محدد منها وتسليمه، يسعدنا أن نناقش ذلك معكم.