يُعَد تسلسل المطالبات مفهومًا أساسيًا في بناء سير عمل متقدم باستخدام النماذج اللغوية الكبيرة (LLMs). ويتضمن ذلك ربط عدة مطالب في تسلسل منطقي، حيث يُستخدم مُخرج كل مطالبة كمُدخل للمطالبة التالية. يُعَد هذا النهج المعياري قويًا في حل المهام المعقدة مثل المعالجة النصية متعددة الخطوات، والتلخيص، والإجابة عن الأسئلة، وغيرها.
LangChain هو إطار عمل متعدد الاستخدامات مصمم لتبسيط عملية إنشاء مثل مهام سير العمل هذه. يوفر أدوات لإدارة النماذج اللغوية الكبيرة مثل نماذج IBM® Granite أو نماذج GPT من OpenAI، مع إمكانية تعريف مطالبات مخصصة وربطها في سلاسل قابلة لإعادة الاستخدام. من خلال تبسيط تعقيدات إدارة المطالبات، يُتيح LangChain للمطورين التركيز على حل المشكلات بدلًا من تنسيق التفاعلات مع النماذج اللغوية الكبيرة.
في هذا البرنامج التعليمي سننفِّذ ما يلي:
يوفر LangChain إطار عمل قويًا لبناء سير عمل معياري في تطبيقات روبوتات المحادثة. من خلال الجمع بين المطالبات المنظمة والتسلسل الديناميكي والتكامل المتقدم للنماذج اللغوية الكبيرة، فإنه يسمح للمطورين بإنشاء مسارات قابلة للتطوير والتكيف تستفيد من تقنيات التوليد المعزز بالاسترجاع وتوفِّر مخرجات منظمة مثل JSON. فيما يلي كيفية تعامُل LangChain مع تسلسل المطالبات بشكل فعَّال:
تجريد المطالبة:يستفيد LangChain من from_template لتصميم مهام سير عمل الإدخال/الإخراج المنظمة لكل خطوة، ما يجعل من السهل التعامل مع عمليات روبوتات المحادثة المعقدة.
تكامل النموذج اللغوي الكبير:يندمج إطار العمل بسلاسة مع العديد من النماذج اللغوية الكبيرة، مثل IBM Granite وOpenAI وHugging Face، ما يُتيح ضبطًا دقيقًا للمهام المخصصة.
إدارة السلسلة: يُتيح SequentialChain وSimpleSequentialChain من LangChain سير عمل معياريًا لمسارات روبوتات المحادثة، بينما يضمن stroutputparser مخرجات منظمة مثل JSON.
سير العمل الديناميكي: باستخدام أدوات مثل ConditionalChain وقوالب رسائل النظام، يدعم LangChain سير العمل التكيُّفي، بما يتماشى مع مبادئ التوليد المعزز بالاسترجاع لتوليد المحتوى الديناميكي.
بحلول نهاية هذا البرنامج التعليمي، سيكون لديك فهم قوي لكيفية استخدام LangChain لبناء سير عمل معياري وقابل للتوسُّع لمجموعة واسعة من التطبيقات.
يُتيح لك تسلسل المطالبات تصميم سير العمل حيث يتم تمرير المخرجات من خطوة إلى الأخرى. تدعم أنواع مختلفة من التسلسل مهام سير العمل المتنوعة، بدءًا من المهام المتتابعة البسيطة إلى العمليات الأكثر تعقيدًا وديناميكية. وفيما يلي نظرة موجزة على أنواع تسلسل المطالبات:
التسلسل المتتابع: النوع الأكثر مباشرةً من التسلسل، حيث يتم تمرير مخرجات إحدى المطالبات مباشرةً كإدخال إلى المطالبة التالية. وهذا الخيار مثالي للمهام ذات التقدم الخطي.[1]
التسلسل المتفرع: في التسلسل المتفرع، يتم تقسيم مُخرج واحد إلى مهام سير عمل متوازية متعددة. ويعالج كل فرع المخرجات بشكل مستقل. [2]
التسلسل التكراري: يتضمن التسلسل التكراري تشغيل مطالبة أو سلسلة بشكل متكرر حتى يتم استيفاء شرط محدد. وهذا الخيار مفيد لتحسين المخرجات.[3]
التسلسل الهرمي: يقسِّم هذا النوع مهمة كبيرة إلى مهام فرعية أصغر، والتي يتم تنفيذها بشكل هرمي. وتغذي المخرجات ذات المستوى الأدنى المهام ذات المستوى الأعلى. [4]
التسلسل الشرطي: يختار التسلسل الشرطي بشكل ديناميكي الخطوة التالية بناءً على مخرجات مطالبة سابقة. ويمكِّن صناعة القرار في مهام سير العمل.
التسلسل متعدد الوسائط: يدمج التسلسل متعدد الوسائط المطالبات التي تتعامل مع أنواع مختلفة من البيانات (على سبيل المثال، النصوص أو الصور أو الصوت). فهو مناسب للتطبيقات التي تجمع بين الوسائط المتعددة. [2]
التسلسل الديناميكي: يعمل التسلسل الديناميكي على تكييف سير العمل بناءً على المخرجات في الوقت الفعلي أو الظروف المتغيرة. ويضيف مرونة إلى تسلسل المطالبات. [5]
التسلسل التكراري: في التسلسل التكراري، يتم تقسيم المدخلات الكبيرة إلى أجزاء أصغر للمعالجة الفردية، ثم يتم دمج النتائج. وهو مفيد للتعامل مع المستندات أو مجموعات البيانات الطويلة. [6]
التسلسل العكسي: يبدأ التسلسل العكسي بمُخرج متوقع ويعمل بشكل عكسي لتحديد المدخلات أو الخطوات اللازمة لتحقيقها. وهو رائع لحل المشكلات وتصحيح الأخطاء. [5]
كل نوع من أنواع التسلسل يُلبي حالات استخدام فريدة، ما يجعل من الضروري اختيار النوع المناسب بناءً على تعقيد المهمة ومتطلباتها.
في سير العمل هذا، نعمل على معالجة آراء العملاء باستخدام نماذج المحادثة وتقنيات هندسة المطالبات لبناء مسار معالجة نصوص قابل للتوسع. توضح المراحل التالية من البرنامج التعليمي تقنيات الربط التسلسلي والتفرعي والتكراري المدعومة بالذكاء الاصطناعي التوليدي.
استخراج الكلمات الرئيسية (التسلسل المتتابع)
إنشاء ملخص المشاعر (التسلسل المتفرع)
تحسين ملخص المشاعر (التسلسل التكراري)
المُخرج النهائي
يجمع هذا النهج بين التسلسل المتتابع والمتفرع والتكراري في Python مع نماذج الدردشة وهندسة المطالبات. ويضمن ذلك معالجة قوية لملاحظات العملاء، بالاستفادة من الذكاء الاصطناعي التوليدي لاستخراج الكلمات المفتاحية وتحليل المشاعر وتحسينها.
تحتاج إلى حساب IBM Cloud لإنشاء مشروع watsonx.ai .
رغم توفُّر عدة أدوات للاختيار منها، يُرشدك هذا الدليل خلال خطوات إعداد حساب IBM لاستخدام Jupyter Notebook.
تفتح هذه الخطوة بيئة دفتر ملاحظات حيث يمكنك نسخ التعليمات البرمجية من هذا البرنامج التعليمي. أو يمكنك تنزيل هذا الدفتر إلى نظامك المحلي وتحميله إلى مشروع watsonx.ai كأصل. لمشاهدة المزيد من البرامج التعليمية حول Granite، تفضَّل بزيارة مجتمع IBM Granite. هذا البرنامج التعليمي متاح أيضًا على GitHub.
نحتاج إلى المكتبات للعمل مع إطار العمل langchain وwatsonxLLM. دعنا أولًا نثبِّت الحِزَم المطلوبة.
ملاحظة: إذا كنت تستخدم إصدارًا قديمًا من pip، يمكنك استخدام الأمر pip install --upgrade pip للترقية. تساعدك هذه الخطوة على التثبيت السهل لأحدث الحزم، والتي قد لا تكون متوافقة مع إصدار أقدم. ولكن إذا كنت تستخدم بالفعل أحدث إصدار أو قمت مؤخرًا بترقية الحِزَم، يمكنك تخطي هذا الأمر.
يستورد هذا الجزء من الكود مكتبات وأدوات Python الأساسية لبناء وإدارة تطبيق النموذج اللغوي الصغير باستخدام LangChain وIBM Watson LLM.
تُستخدم وحدة نظام التشغيل للوصول إلى متغيرات البيئة، مثل بيانات اعتماد المشروع أو مفاتيح واجهة برمجة التطبيقات.
يُعَد WatsonxLLLM وحدة نمطية من langchain_ibm تدمج IBM Watson LLM لتوليد مخرجات من نماذج الذكاء الاصطناعي التوليدي.
يساعد PromptTemplate على إنشاء قوالب قابلة لإعادة الاستخدام للمطالبة، ما يضمن الحفاظ على تنظيم الإدخال ودعم المرونة في هندسة المطالبات.
يعمل LLMChain على بناء سلاسل مهام فردية بينما يعمل
SequencialChain على ربط عدة خطوات في سير عمل واحد، بينما يسترجع getpass المعلومات الحساسة (مثل مفاتيح واجهة برمجة التطبيقات) بأمان دون عرضها على الشاشة.
يعمل هذا الكود على إعداد بيانات الاعتماد للوصول إلى واجهة برمجة التطبيقات IBM Watson Machine Learning (WML) ويضمن تكوين PROJECT_ID بشكل صحيح.
يعمل هذا الكود على تهيئة IBM WatsonXLLM للاستخدام في التطبيق:
تعمل هذه الخطوة على إعداد Watson LLM لإنشاء الاستجابات في سير العمل.
يحدِّد هذا الكود قوالب مطالبات لثلاث مراحل من سير عمل معالجة النصوص:
تُتيح لك هذه المثيلات من PromptTemplate هندسة مطالبات قابلة لإعادة الاستخدام ومنظمة لتطبيق LLM.
يعرِّف هذا الكود سلاسل LLM التي تربط المطالبات مع نموذج IBM Watson LLM الذي تمت تهيئته، مع تخصيص مفاتيح مخرجات فريدة لكل مرحلة:
تُتيح مثيلات LLMChain هذه تنفيذ المهام المعيارية، ما يسهِّل سير عمل تطبيق LLM خطوة بخطوة.
يجمع هذا الكود السلاسل المعرَّفة سابقًا في سير عمل متسلسل، ما يُتيح معالجة خطوة بخطوة لمُدخلات النص. تعمل SequentialChain على ربط keyword_chain وsentiment_chain وrefine_chain بترتيب محدد، بحيث يضمن أن تكون مخرجات إحدى السلاسل مُدخلات للسلسلة التالية. تم تكوين سير العمل لقبول النص كمُدخل أوَّلي، بينما يتم تخزين المُخرج النهائي، وهو ملخص مشاعر محسَّن، تحت المفتاح refined_summary. يسمح هذا الإعداد بتنفيذ تطبيق LLM بشكل مبسَّط وفعَّال لتطبيق LLM، ما يضمن مسار معالجة متماسكًا ونموذجيًا.
في هذا الجزء من الكود، سنعمل على تشغيل سير العمل بالكامل. أولًا، لدينا سلسلة نصية متعددة الأسطر معرَّفة باسم feedback_text، تحتوي على تعليقات المستخدمين الإيجابية والسلبية حول تطبيق ما. تعالج الدالة workflow.run الملاحظات عبر التسلسل المتتابع (استخراج الكلمات المفتاحية وتحليل المشاعر والتحسين) باستخدام الإدخال المقدَّم. وتتم طباعة ملخص المشاعر المحسَّن مباشرةً كمُخرج نهائي.
المخرجات
ملخص المشاعر المحسَّن:
مشاعر المستخدم سلبية في الغالب؛ بسبب الأعطال المتكررة للتطبيق وبطء استجابة دعم العملاء، رغم تقديره لميزات التطبيق وأحيانًا لفائدة دعم العملاء. لتعزيز رضا المستخدمين، يجب أن يركِّز فريق التطوير على حل أعطال التطبيق وتسريع استجابات دعم العملاء.
ملخص المشاعر المحسَّن هو تقييم موجز وواضح للتعليقات. يسلط التقرير الضوء على تقدير المستخدم لميزات التطبيق، ولكنه يعبِّر عن إحباطه من الأعطال المتكررة وبطء دعم العملاء، ما يعكس قدرة سير العمل على استخلاص رؤى حساسة بفاعلية.
ينطوي اختيار نوع التسلسل المناسب لتطبيق LLM على تقييم العوامل الرئيسية لضمان الكفاءة والترابط:
تعقيد المهمة: استخدِم مهام سير العمل القابلة للتنفيذ للمهام التي تحتوي على خطوات متعددة. يمكن أن تساعد المطالبة بخطوات قليلة أو chatprompttemplate على هيكلة المهام المعقدة التي تتطلب مطالبات مختلفة.
التبعية: إذا كانت مخرجات خطوة ما تُستخدم كعناصر نائبة للمطالبة التالية، فاستخدِم الربط التسلسلي. تضمن أدوات تحليل المخرجات انتقال النتائج بسلاسة إلى مدخلات منظمة.
القدرة على التكيف: في مهام سير العمل الديناميكية، مثل تلك التي تتضمن وكلاء LangChain، يُتيح التسلسل التكراري إجراء تعديلات فورية على المَعلمات والمطالبات التالية.
أنماط البيانات: اختَر سير العمل المتوافق مع أنواع البيانات المتنوعة. استخدِم أساليب التضمين للبيانات النصية والمتجهة أو لغة تعبير LangChain Expression Language للعمليات المرنة.
من خلال أخذ هذه العوامل بعين الاعتبار، يمكنك بناء تطبيق LLM قوي وقابل للتكيف مع تسلسل مترابط لسير العمل.
يُعَد تسلسل المطالبات تقنية متعددة الاستخدامات لبناء مهام سير عمل متقدمة في معالجة اللغة الطبيعية. في هذا البرنامج التعليمي، استكشفنا أنواعًا مختلفة من التسلسل وعرضنا مثالًا عامًّا يدمج أساليب تسلسل متعددة. من خلال تجربة هذه الطرق، يمكنك الاستفادة من الإمكانات الكاملة لنماذج اللغة للتطبيقات الواقعية.
[1] Roegiest, A., & Chitta, R. (2024). Answering Questions in Stages: Prompt Chaining for Contract QA.
[2] Ge, J., Luo, H., Qian, S., Gan, Y., Fu, J., & Zhang, S. (2023). Chain of Thought Prompt Tuning in Vision Language Models.
[3] Sun, S., Yuan, R., Cao, Z., Li, W., & Liu, P. (2024). Prompt Chaining or Stepwise Prompt? Refinement in Text Summarization. , 7551-7558. https://arxiv.org/abs/2406.00507.
[4] Huang, Q., Zhu, J., Li, Z., Xing, Z., Wang, C., & Xu, X. (2023). PCR-Chain: Partial Code Reuse Assisted by Hierarchical Chaining of Prompts on Frozen Copilot. 2023 IEEE/ACM 45th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion), 1-5. https://ieeexplore.ieee.org/document/10172550.
[5] Wu, T., Jiang, E., Donsbach, A., Gray, J., Molina, A., Terry, M., & Cai, C. (2022). PromptChainer: Chaining Large Language Model Prompts through Visual Programming. CHI Conference on Human Factors in Computing Systems Extended Abstracts. https://dl.acm.org/doi/10.1145/3491101.3519729.
[6] Trautmann, D. (2023). Large Language Model Prompt Chaining for Long Legal Document Classification. ArXiv, abs/2308.04138. https://arxiv.org/abs/2308.04138.