تسلسل المطالبات باستخدام LangChain: نظرة عامة شاملة

مؤلف

Vrunda Gadesha

AI Advocate | Technical Content Author

يُعَد تسلسل المطالبات مفهومًا أساسيًا في بناء سير عمل متقدم باستخدام النماذج اللغوية الكبيرة (LLMs). ويتضمن ذلك ربط عدة مطالب في تسلسل منطقي، حيث يُستخدم مُخرج كل مطالبة كمُدخل للمطالبة التالية. يُعَد هذا النهج المعياري قويًا في حل المهام المعقدة مثل المعالجة النصية متعددة الخطوات، والتلخيص، والإجابة عن الأسئلة، وغيرها.

LangChain هو إطار عمل متعدد الاستخدامات مصمم لتبسيط عملية إنشاء مثل مهام سير العمل هذه. يوفر أدوات لإدارة النماذج اللغوية الكبيرة مثل نماذج IBM® Granite أو نماذج GPT من OpenAI، مع إمكانية تعريف مطالبات مخصصة وربطها في سلاسل قابلة لإعادة الاستخدام. من خلال تبسيط تعقيدات إدارة المطالبات، يُتيح LangChain للمطورين التركيز على حل المشكلات بدلًا من تنسيق التفاعلات مع النماذج اللغوية الكبيرة.

في هذا البرنامج التعليمي سننفِّذ ما يلي:

  1. استكشاف أنواع مختلفة من تسلسل المطالبات (المتتابع والمتفرع والتكراري وغيرها).
  2. تنفيذ مثال تسلسل عام يجمع بين أنواع التسلسل المتتابع والمتفرع والتكراري.
  3. استفِد من الفئات المضمنة في LangChain مثل PromptTemplate وLLMChain وSequentialChain لتحديد سير العمل وإدارته.

كيف يُدير 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 .

الخطوات

الخطوة 1. إعداد البيئة.

رغم توفُّر عدة أدوات للاختيار منها، يُرشدك هذا الدليل خلال خطوات إعداد حساب IBM لاستخدام Jupyter Notebook.

  1. سجِّل الدخول إلى watsonx.ai باستخدام حساب IBM Cloud الخاص بك.
  2. أنشئ مشروع watsonx.ai. يمكنك الحصول على معرِّف المشروع من داخل مشروعك. انقر على علامة التبويب الإدارة (Manage)، ثم انسخ معرِّف المشروع من قسم التفاصيل (Details) في صفحة عام (General). ستحتاج إلى هذا المعرِّف في هذا البرنامج التعليمي.
  3. أنشئ Jupyter Notebook.

تفتح هذه الخطوة بيئة دفتر ملاحظات حيث يمكنك نسخ التعليمات البرمجية من هذا البرنامج التعليمي. أو يمكنك تنزيل هذا الدفتر إلى نظامك المحلي وتحميله إلى مشروع watsonx.ai كأصل. لمشاهدة المزيد من البرامج التعليمية حول Granite، تفضَّل بزيارة مجتمع IBM Granite. هذا البرنامج التعليمي متاح أيضًا على GitHub.

الخطوة 2. إعداد خدمة وقت تشغيل watsonx.ai Runtime ومفتاح واجهة برمجة التطبيقات.

  1. أنشئ مثيل خدمة watsonx.ai Runtime (اختَر خطة Lite، وهي مثيل مجاني).
  2. أنشئ مفتاح واجهة برمجة التطبيقات.
  3. اربط مثيل خدمة watsonx.ai Runtime بالمشروع الذي أنشأته في watsonx.ai.

الخطوة 3. تثبيت الحزم.

نحتاج إلى المكتبات للعمل مع إطار العمل langchain وwatsonxLLM. دعنا أولًا نثبِّت الحِزَم المطلوبة.

ملاحظة: إذا كنت تستخدم إصدارًا قديمًا من pip، يمكنك استخدام الأمر pip install --upgrade pip للترقية. تساعدك هذه الخطوة على التثبيت السهل لأحدث الحزم، والتي قد لا تكون متوافقة مع إصدار أقدم. ولكن إذا كنت تستخدم بالفعل أحدث إصدار أو قمت مؤخرًا بترقية الحِزَم، يمكنك تخطي هذا الأمر.

!pip install --upgrade pip
%pip install langchain
!pip install langchain-ibm

الخطوة 4. استيراد المكتبات المطلوبة.

يستورد هذا الجزء من الكود مكتبات وأدوات Python الأساسية لبناء وإدارة تطبيق النموذج اللغوي الصغير باستخدام LangChain وIBM Watson LLM. 

تُستخدم وحدة نظام التشغيل للوصول إلى متغيرات البيئة، مثل بيانات اعتماد المشروع أو مفاتيح واجهة برمجة التطبيقات.

يُعَد WatsonxLLLM وحدة نمطية من langchain_ibm تدمج IBM Watson LLM لتوليد مخرجات من نماذج الذكاء الاصطناعي التوليدي.

يساعد PromptTemplate على إنشاء قوالب قابلة لإعادة الاستخدام للمطالبة، ما يضمن الحفاظ على تنظيم الإدخال ودعم المرونة في هندسة المطالبات.

يعمل LLMChain على بناء سلاسل مهام فردية بينما يعمل

SequencialChain على ربط عدة خطوات في سير عمل واحد، بينما يسترجع getpass المعلومات الحساسة (مثل مفاتيح واجهة برمجة التطبيقات) بأمان دون عرضها على الشاشة.

import os
from langchain_ibm import WatsonxLLM
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SequentialChain
import getpass

الخطوة 5. إعداد بيانات الاعتماد.

يعمل هذا الكود على إعداد بيانات الاعتماد للوصول إلى واجهة برمجة التطبيقات IBM Watson Machine Learning (WML) ويضمن تكوين PROJECT_ID بشكل صحيح.

  • يتم إنشاء بيانات اعتماد القاموس باستخدام عنوان URL لخدمة WML ومفتاح واجهة برمجة التطبيقات. يتم جمع مفتاح واجهة برمجة التطبيقات بشكل آمن باستخدام gatepass.gatepass.gatepass لتجنُّب كشف المعلومات الحساسة.
  • يحاول الكود إحضار PROJECT_ID من متغيرات البيئة باستخدام الدالة os.environ. إذا لم يتم العثور على PROJECT_ID، فسيتم مطالبة المستخدم بإدخاله يدويًا عن طريق إدخال.
# Set up credentials
credentials = {
    "url": "https://us-south.ml.cloud.ibm.com", # Replace with the correct region if needed
    "apikey": getpass.getpass("Please enter your WML API key (hit enter): ")
}

# Set up project_id
try:
    project_id = os.environ["PROJECT_ID"]
except KeyError:
    project_id = input("Please enter your project_id (hit enter): ")

الخطوة 6. تهيئة نموذج لغوي كبير.

يعمل هذا الكود على تهيئة IBM WatsonXLLM للاستخدام في التطبيق:

  1. يُنشئ هذا الكود مثيلًا لـ WatsonxLLM باستخدام نموذج ibm/granite-3-8b-instruct، المصمم لمهام الذكاء الاصطناعي التوليدي القائمة على التعليمات.
  2. يتم تمرير قيم url وapikey وproject_id من بيانات الاعتماد التي تم إعدادها مسبقًا للمصادقة والاتصال بخدمة IBM Watson LLM.
  3. يكوِّن مَعلمة max_new_tokens لتحديد عدد الرموز المميزة التي يُنشئها النموذج في كل استجابة (150 رمزًا مميزًا في هذه الحالة).

تعمل هذه الخطوة على إعداد Watson LLM لإنشاء الاستجابات في سير العمل.

# Initialize the IBM LLM
llm = WatsonxLLM(
    model_id="ibm/granite-3-8b-instruct",
    url=credentials["url"],
    apikey=credentials["apikey"],
    project_id=project_id,
    params={
    "max_new_tokens": 150
    }
)   

الخطوة 7. تحديد قوالب المطالبات

يحدِّد هذا الكود قوالب مطالبات لثلاث مراحل من سير عمل معالجة النصوص:

  1. استخراج الكلمات المفتاحية: تم تصميم keyword_prompt لاستخراج الكلمات المفتاحية الأكثر أهمية من النص المقدَّم. ويستخدم العنصر النائب {text} لإدراج الإدخال ديناميكيًا.
  2. إنشاء ملخص المشاعر: sentiment_prompt يأخذ العنصر المستخرج {keywords} كمُدخل ويولِّد ملخصًا للمشاعر للتعليقات. يضمن القالب أن توليد المشاعر يركِّز على الكلمات المفتاحية المقدَّمة.
  3. تحسين الملخص: يعمل refine_prompt على تحسين ملخص المشاعر باستخدام {sentiment_summary} كمُدخل. ويركِّز على أن تكون المخرجات موجزة ودقيقة.

تُتيح لك هذه المثيلات من PromptTemplate هندسة مطالبات قابلة لإعادة الاستخدام ومنظمة لتطبيق LLM.

# Define Prompt Templates

# Prompt for extracting keywords
keyword_prompt = PromptTemplate(
    input_variables=["text"],
    template="Extract the most important keywords from the following text:\n{text}\n\nKeywords:"
)

# Prompt for generating sentiment summary
sentiment_prompt = PromptTemplate(
    input_variables=["keywords"],
    template="Using the following keywords, summarize the sentiment of the feedback:\nKeywords: {keywords}\n\nSentiment Summary:"
)

# Prompt for refining the summary
refine_prompt = PromptTemplate(
    input_variables=["sentiment_summary"],
    template="Refine the following sentiment summary to make it more concise and precise:\n{sentiment_summary}\n\nRefined Summary:"
)

الخطوة 8. إنشاء السلاسل

يعرِّف هذا الكود سلاسل LLM التي تربط المطالبات مع نموذج IBM Watson LLM الذي تمت تهيئته، مع تخصيص مفاتيح مخرجات فريدة لكل مرحلة:

  1. سلسلة الكلمات المفتاحية:keyword_chain تستخدم keyword_prompt لاستخراج الكلمات المفتاحية من النص المُدخل. يتم تخزين النتيجة تحت المفتاح الفريد "الكلمات المفتاحية" لاستخدامها في الخطوات اللاحقة.
  2. سلسلة المشاعر: sentiment_chain تأخذ الكلمات الرئيسية المستخرجة وتولِّد ملخصًا للمشاعر باستخدام sentiment_prompt. يتم تصنيف المخرجات باسم "sentiment_summary".
  3. سلسلة التحسين: تعالج refine_chain ملخص المشاعر الناتج باستخدام refine_prompt. يتم تخزين المُخرج النهائي المكرر بالمفتاح "refined_summary".

تُتيح مثيلات LLMChain هذه تنفيذ المهام المعيارية، ما يسهِّل سير عمل تطبيق LLM خطوة بخطوة.

# Define Chains with Unique Keys

# Chain to extract keywords
keyword_chain = LLMChain(
    llm=llm,
    prompt=keyword_prompt,
    output_key="keywords" # Unique key for extracted keywords
)

# Chain to generate sentiment summary
sentiment_chain = LLMChain(
    llm=llm,
    prompt=sentiment_prompt,
    output_key="sentiment_summary" # Unique key for sentiment summary
)

# Chain to refine the sentiment summary
refine_chain = LLMChain(
    llm=llm,
    prompt=refine_prompt,
    output_key="refined_summary" # Final refined output
)

الخطوة 9. دمج السلاسل

يجمع هذا الكود السلاسل المعرَّفة سابقًا في سير عمل متسلسل، ما يُتيح معالجة خطوة بخطوة لمُدخلات النص. تعمل SequentialChain على ربط keyword_chain وsentiment_chain وrefine_chain بترتيب محدد، بحيث يضمن أن تكون مخرجات إحدى السلاسل مُدخلات للسلسلة التالية. تم تكوين سير العمل لقبول النص كمُدخل أوَّلي، بينما يتم تخزين المُخرج النهائي، وهو ملخص مشاعر محسَّن، تحت المفتاح refined_summary. يسمح هذا الإعداد بتنفيذ تطبيق LLM بشكل مبسَّط وفعَّال لتطبيق LLM، ما يضمن مسار معالجة متماسكًا ونموذجيًا.

# Combine Chains into a Sequential Workflow

workflow = SequentialChain(
    chains=[keyword_chain, sentiment_chain, refine_chain],
    input_variables=["text"], # Initial input for the workflow
    output_variables=["refined_summary"] # Final output of the workflow
)

الخطوة 10. تشغيل سير العمل

في هذا الجزء من الكود، سنعمل على تشغيل سير العمل بالكامل. أولًا، لدينا سلسلة نصية متعددة الأسطر معرَّفة باسم feedback_text، تحتوي على تعليقات المستخدمين الإيجابية والسلبية حول تطبيق ما. تعالج الدالة workflow.run الملاحظات عبر التسلسل المتتابع (استخراج الكلمات المفتاحية وتحليل المشاعر والتحسين) باستخدام الإدخال المقدَّم. وتتم طباعة ملخص المشاعر المحسَّن مباشرةً كمُخرج نهائي.

# Example Input Text

feedback_text = """
    I really enjoy the features of this app, but it crashes frequently, making it hard to use.
    The customer support is helpful, but response times are slow.

    I tried to reachout to the support team, but they never responded

    For me, the customer support was very much helpful. Ihis is very helpful app. Thank you for grate services.

"""

# Run the Workflow

result = workflow.run({"text": feedback_text})

# Display the Output

print("Refined Sentiment Summary:")
print(result) # Directly print the result since it is a string

المخرجات

ملخص المشاعر المحسَّن:

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

ملخص المشاعر المحسَّن هو تقييم موجز وواضح للتعليقات. يسلط التقرير الضوء على تقدير المستخدم لميزات التطبيق، ولكنه يعبِّر عن إحباطه من الأعطال المتكررة وبطء دعم العملاء، ما يعكس قدرة سير العمل على استخلاص رؤى حساسة بفاعلية.

كيفية اختيار نوع التسلسل الصحيح

ينطوي اختيار نوع التسلسل المناسب لتطبيق LLM على تقييم العوامل الرئيسية لضمان الكفاءة والترابط:

تعقيد المهمة: استخدِم مهام سير العمل القابلة للتنفيذ للمهام التي تحتوي على خطوات متعددة. يمكن أن تساعد المطالبة بخطوات قليلة أو chatprompttemplate على هيكلة المهام المعقدة التي تتطلب مطالبات مختلفة.

التبعية: إذا كانت مخرجات خطوة ما تُستخدم كعناصر نائبة للمطالبة التالية، فاستخدِم الربط التسلسلي. تضمن أدوات تحليل المخرجات انتقال النتائج بسلاسة إلى مدخلات منظمة.

القدرة على التكيف: في مهام سير العمل الديناميكية، مثل تلك التي تتضمن وكلاء LangChain، يُتيح التسلسل التكراري إجراء تعديلات فورية على المَعلمات والمطالبات التالية. 

أنماط البيانات: اختَر سير العمل المتوافق مع أنواع البيانات المتنوعة. استخدِم أساليب التضمين للبيانات النصية والمتجهة أو لغة تعبير LangChain Expression Language للعمليات المرنة.

من خلال أخذ هذه العوامل بعين الاعتبار، يمكنك بناء تطبيق LLM قوي وقابل للتكيف مع تسلسل مترابط لسير العمل.

ملخص

يُعَد تسلسل المطالبات تقنية متعددة الاستخدامات لبناء مهام سير عمل متقدمة في معالجة اللغة الطبيعية. في هذا البرنامج التعليمي، استكشفنا أنواعًا مختلفة من التسلسل وعرضنا مثالًا عامًّا يدمج أساليب تسلسل متعددة. من خلال تجربة هذه الطرق، يمكنك الاستفادة من الإمكانات الكاملة لنماذج اللغة للتطبيقات الواقعية.

حلول ذات صلة
®IBM® watsonx.ai

تدريب الذكاء الاصطناعي التوليدي والتحقق من صحته وضبطه ونشره، وكذلك قدرات نماذج الأساس والتعلم الآلي باستخدام IBM watsonx.ai، وهو استوديو الجيل التالي من المؤسسات لمنشئي الذكاء الاصطناعي. أنشئ تطبيقات الذكاء الاصطناعي في وقت قصير وباستخدام جزء بسيط من البيانات.

استكشف watsonx.ai
حلول الذكاء الاصطناعي

استفِد من الذكاء الاصطناعي في عملك بالاستعانة بخبرة IBM الرائدة في مجال الذكاء الاصطناعي ومحفظة حلولها التي ستكون بجانبك.

استكشف حلول الذكاء الاصطناعي
الاستشارات والخدمات في مجال الذكاء الاصطناعي

تساعد خدمات IBM Consulting AI في إعادة تصور طريقة عمل الشركات باستخدام حلول الذكاء الاصطناعي من أجل النهوض بأعمالها.

استكشف خدمات الذكاء الاصطناعي
اتخِذ الخطوة التالية

باستخدام الذكاء الاصطناعي، يكشف IBM Concert عن رؤى مهمة حول عملياتك ويقدم توصيات خاصة بالتطبيق من أجل التحسين. اكتشف كيف يمكن لمنصة Concert تعزيز نمو أعمالك.

استكشف Concert® استكشف حلول أتمتة عمليات الأعمال
الحواشي

[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.