مقدمه

LangChain یک چارچوب توسعه‌ی برنامه‌های هوش مصنوعی بازمنبع است که در زمینه‌ی توسعه‌ی برنامه‌های مبتنی بر مدل‌های زبان بزرگ ماژول‌ها و ابزارها فراهم می‌کند. از طریق LangChain، توسعه‌دهندگان می‌توانند به راحتی با مدل‌های زبان بزرگ (LLM) ارتباط برقرار کرده و وظایفی همچون تولید متن، پاسخ به سوالات، ترجمه و گفتگو را انجام دهند. LangChain پتانسیل توسعه‌ی برنامه‌های هوش مصنوعی را به‌طور قابل توجهی افزایش می‌دهد و به هرکسی اجازه می‌دهد تا برنامه‌های خلاقانه‌ی خود را بر اساس LLM بسازد.

ویژگی‌های LangChain:

  • LLM و پرومپت: LangChain تمام API‌های مدل‌های زبان بزرگ را انتزاع می‌دهد، API دسترسی به مدل‌های بزرگ را یکپارچه می‌کند و مکانیزم مدیریت قالب پرومپت فراهم می‌کند.
  • زنجیره: LangChain برخی از سناریوهای متداول را درون ماژول‌های آماده‌ای کپسوله‌سازی می‌کند، مانند سیستم‌های پاسخ‌دهی به سوالات مبتنی بر متن، تولید زبان طبیعی پرس و جوهای SQL و غیره، به نام "زنجیره" چون اجرای این وظایف مانند یک گردش کار است که مراحل به ترتیب اجرا می‌شود.
  • LCEL: زبان بیان LangChain (LCEL) ویژگی اصلی نسخه‌ی جدید LangChain است که برای حل مسائل ارکستراسیون گردش کار استفاده می‌شود. از طریق بیان‌های LCEL، ما می‌توانیم به‌صورت انعطاف‌پذیر جریان پردازش وظایف هوش مصنوعی را سفارشی کنیم، به عبارت دیگر "زنجیره" را به‌صورت انعطاف‌پذیر سفارشی می‌کنیم.
  • تولید تقاضا و بازیابی (RAG): چون مدل‌های زبان بزرگ (LLM) نمی‌توانند اطلاعات جدید را درک کنند و به سوالات جدید پاسخ ندهند، ما می‌توانیم اطلاعات جدید را به LLM وارد کرده و کیفیت محتوای تولیدشده را افزایش دهیم. این حالت به "حالت RAG" (تولید تقاضا و بازیابی) گفته می‌شود.
  • نمایندگان: یک الگوی طراحی بر اساس مدل‌های زبان بزرگ است که از قابلیت‌های درک زبان طبیعی و استدلالی LLM (به عنوان مغز) برای خودکار فراخوانی سیستم‌ها و دستگاه‌های خارجی برای انجام وظایف بر پایه‌ی نیازهای کاربر استفاده می‌کند. به عنوان مثال، وقتی کاربر عبارت "فردا یک روز مرخصی بگیر" را وارد می‌کند، مدل زبان بزرگ (LLM) به‌طور خودکار سیستم مرخصی را فراخوانی و یک برنامه مرخصی را آغاز می‌کند.
  • حافظه مدل: به مدل زبان بزرگ (LLM) اجازه می‌دهد تا محتوای گفتگوهای قبلی را به‌خاطر بسپارد، یک قابلیتی که به آن "حافظه مدل" معروف است.

اجزای چارچوب LangChain

اجزای چارچوب LangChain

چارچوب LangChain از چندین جزء تشکیل شده است که شامل موارد زیر می‌شود:

  • کتابخانه LangChain: کتابخانه‌های Python و JavaScript. این شامل پایه‌های اجرا برای رابط‌ها و یکپارچگی اجزا مختلف، و همچنین پیاده‌سازی زنجیره‌ها و نمایندگان آماده می‌شود.
  • الگوهای LangChain: الگوهای رسمی وظایف هوش مصنوعی توسط LangChain فراهم شده.
  • LangServe: بر اساس FastAPI، می‌تواند زنجیره‌های تعریف‌شده توسط LangChain را به عنوان API‌های REST منتشر کند.
  • LangSmith: یک پلتفرم توسعه، یک سرویس ابری است که پشتیبانی از اشکال‌زدایی و مانیتورینگ وظایف LangChain را انجام می‌دهد.

کتابخانه LangChain (کتابخانه‌ها)

خود کتابخانه LangChain از چند بسته‌ی مختلف تشکیل شده است.

  • langchain-core: انتزاعات پایه و زبان بیان LangChain.
  • langchain-community: ادغام‌های شخص ثالث، اصولاً شامل اجزا شخص ثالثی است که با LangChain ادغام شده‌اند.
  • langchain: اصولاً شامل زنجیره‌ها، نمایندگان و استراتژی‌های بازیابی است.

جریان پردازش وظایف LangChain

همان‌گونه که در تصویر بالا نشان داده شده است، LangChain مجموعه‌ای ابزار مدیریت قالب پرومپت را برای کار با پرومپت‌ها ارائه می‌دهد. سپس پرومپت‌ها را برای پردازش به مدل بزرگ ارسال می‌کند و در نهایت نتایج توسط مدل بزرگ برگردانده شده را پردازش می‌کند.

کپسوله‌سازی LangChain از مدل بزرگ عمدتاً شامل دو نوع است: LLM و مدل گفتگو.

  • LLM - مدل پاسخ‌دهی به سوال که یک ورودی متنی را دریافت کرده و نتیجه‌ی متنی را برمی‌گرداند.
  • مدل گفتگو - مدل گفتگویی که به‌صورت خاص برای سناریوهای گفتگو طراحی شده است، برخلاف LLM. این مدل‌ها می‌توانند یک مجموعه پیام گفتگو را دریافت کرده و پیام‌های گفتگو را به شکل گفتگویی برگردانند.

مفاهیم اصلی

1. مدل‌های زبان بزرگ (LLM‌ها)

مدل‌های اساسی که توسط LangChain کپسوله‌سازی شده‌اند و یک ورودی متنی را دریافت کرده و یک نتیجه‌ی متنی را برمی‌گردانند.

2. مدل‌های گفتگو

مدل‌های گفتگو (یا مدل‌های دیالوگ) به خصوص برای سناریوهای گفتگو طراحی شده‌اند، به‌خلاف LLM. این مدل‌ها می‌توانند یک مجموعه پیام گفتگو را دریافت کرده و پیام‌های گفتگو را به شکل گفتگویی برگردانند.

3. پیام‌ها

اشاره به محتوای پیام‌ها در مدل‌های گفتگو دارد. انواع پیام شامل پیام انسانی، پیام هوش مصنوعی، پیام سیستم، پیام تابع و پیام ابزاری و غیره می‌شود.

4. پرومپت‌ها

LangChain مجموعه‌ای ابزار را به‌صورت خاص برای مدیریت پرومپت‌ها کپسوله‌سازی می‌کند و این امر باعث می‌شود که فرمت دادن محتوای پرومپت برای ما آسان‌تر شود.

5. تجزیه‌کننده‌های خروجی

همان‌طور که در تصویر بالا ذکر شده است، پس از دریافت محتوای متنی توسط LangChain، می‌تواند از تجزیه‌کننده‌های خروجی اختصاصی برای فرمت دادن محتوای متنی استفاده کند، مانند تجزیه JSON یا تبدیل خروجی LLM به یک شیء Python.

5. بازیاب‌ها

برای به راحتی وارد کردن داده‌های خصوصی به مدل بزرگ (LLM) و بهبود کیفیت پاسخ‌های مدل، LangChain یک چارچوب بازیابی (Retrievers) ایجاد می‌کند که فرآیند بارگیری، تقسیم، ذخیره‌سازی و بازیابی داده‌های سند را تسهیل می‌کند.

6. انبارهای بردار

برای پشتیبانی از جستجوهای شباهت معنایی برای داده‌های خصوصی، LangChain انواع مختلفی از پایگاه‌های داده برداری را پشتیبانی می‌کند.

7. عامل‌ها

عامل‌ها، معمولاً به برنامه‌های طراحی‌شده با مدل بزرگ (LLM) به عنوان موتور تصمیم اشاره دارد که به صورت خودکار سیستم‌ها و دستگاه‌های سخت‌افزاری خارجی را فراخوانی می‌کنند تا وظایف کاربر را بر اساس ورودی کاربر تکمیل کنند. این یک الگوی طراحی با مدل بزرگ (LLM) در مرکز آن است.

سناریوهای کاربردی

  • ربات‌های چت: ساخت دستیاران چت هوشمند، ربات‌های خدمات مشتری و ربات‌های گفتگویی.
  • پایگاه دانش سؤال و پاسخ: ارائه خدمات پرسش و پاسخ دامنه باز با ادغام با گراف‌های دانش.
  • نوشتن هوشمند: مانند نوشتن مقاله، نوشتن خلاق و خلاصه‌سازی متن.