۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

راهنمای مختصری از LangChain برای توسعه دهندگان نرم افزار

LangChain یک SDK است که ادغام مدل‌ها و برنامه‌های زبان بزرگ را با زنجیر کردن مؤلفه‌ها و نمایش یک API ساده و یکپارچه ساده می‌کند. در اینجا یک پرایمر سریع است.

LangChain یک SDK است که ادغام مدل‌ها و برنامه‌های زبان بزرگ را با زنجیر کردن مؤلفه‌ها و نمایش یک API ساده و یکپارچه ساده می‌کند. در اینجا یک پرایمر سریع است.

اگر توسعه‌دهنده نرم‌افزاری هستید که می‌کوشید با جدیدترین اخبار مربوط به مدل‌های زبان بزرگ همراه باشید، ممکن است مانند من احساس سردرگمی یا سردرگمی کنید. به نظر می رسد هر روز شاهد انتشار یک مدل منبع باز جدید یا اعلام یک ویژگی جدید قابل توجه توسط یک ارائه دهنده مدل تجاری هستیم.

LLMها به سرعت در حال تبدیل شدن به بخشی جدایی ناپذیر از پشته نرم افزار مدرن هستند. با این حال، چه بخواهید یک API مدل ارائه شده توسط ارائه‌دهنده‌ای مانند OpenAI را مصرف کنید یا یک مدل منبع باز را در برنامه خود جاسازی کنید، ساخت برنامه‌های مبتنی بر LLM مستلزم چیزی بیش از ارسال یک درخواست و انتظار برای پاسخ نیست. . عناصر متعددی وجود دارد که باید در نظر گرفته شوند، از تغییر پارامترها گرفته تا افزایش اعلان تا تعدیل پاسخ.

LLM ها بدون تابعیت هستند، به این معنی که پیام های قبلی در مکالمه را به خاطر نمی آورند. این مسئولیت توسعه دهنده است که تاریخچه را حفظ کند و زمینه را به LLM بدهد. این مکالمات ممکن است باید در یک پایگاه داده دائمی ذخیره شوند تا زمینه را به یک مکالمه جدید بازگردانند. بنابراین، افزودن حافظه کوتاه مدت و بلند مدت به LLM یکی از مسئولیت های کلیدی توسعه دهندگان است.

چالش دیگر این است که هیچ قانون یکسانی برای LLM وجود ندارد. ممکن است مجبور شوید از چندین مدل استفاده کنید که برای سناریوهای مختلف مانند تجزیه و تحلیل احساسات، طبقه بندی، پاسخ به سؤال و خلاصه سازی تخصصی هستند. برخورد با چندین LLM پیچیده است و نیاز به مقدار زیادی لوله کشی دارد.

یک لایه API یکپارچه برای ساخت برنامه های LLM

LangChain یک SDK است که برای ساده‌سازی ادغام LLMها و برنامه‌های کاربردی طراحی شده است. بسیاری از چالش هایی که در بالا به آن اشاره کردیم را حل می کند. LangChain شبیه یک ODBC یا JDBC Driver است که با تمرکز بر دستورات استاندارد SQL پایگاه داده زیربنایی را انتزاعی می کند. LangChain جزئیات پیاده سازی LLM های اساسی را با افشای یک API ساده و یکپارچه خلاصه می کند. این API این امکان را برای توسعه‌دهندگان فراهم می‌کند تا مدل‌ها را بدون تغییرات قابل توجه در کد عوض کنند.

برنامه نویسی Rust برای توسعه دهندگان جاوا

LangChain تقریباً همزمان با ChatGPT ظاهر شد. هریسون چیس، خالق آن، اولین تعهد را در اواخر اکتبر ۲۰۲۲ انجام داد، درست قبل از اینکه موج LLM با قدرت تمام شود. انجمن از آن زمان تاکنون به طور فعال مشارکت کرده است و LangChain را به یکی از بهترین ابزارها برای تعامل با LLM تبدیل کرده است.

LangChain یک چارچوب قدرتمند است که با ابزارهای خارجی برای تشکیل یک اکوسیستم ادغام می شود. بیایید درک کنیم که چگونه جریان مربوط به دریافت نتیجه مطلوب از یک LLM را هماهنگ می‌کند.

معماری langchain

منابع داده

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

جاسازی های کلمه

داده های بازیابی شده از برخی از منابع خارجی باید به بردار تبدیل شوند. این کار با ارسال متن به یک مدل جاسازی کلمه مرتبط با LLM انجام می شود. به عنوان مثال، مدل GPT-3.5 OpenAI دارای یک مدل جاسازی کلمه مرتبط است که باید برای ارسال متن مورد استفاده قرار گیرد. LangChain بهترین مدل جاسازی را بر اساس LLM انتخابی انتخاب می کند و حدس و گمان در جفت کردن مدل ها را حذف می کند. 

پایگاه های اطلاعاتی برداری

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

مدل های زبان بزرگ

LangChain از LLM های اصلی ارائه شده توسط OpenAI، Cohere، و AI21 و LLM های منبع باز موجود در Hugging Face پشتیبانی می کند. لیست مدل های پشتیبانی شده و نقاط پایانی API به سرعت در حال رشد است.

معنی رو به رشد مجموعه داده های هوش مصنوعی برای مهندسی و مدیریت داده ها چیست؟

معماری برنامه langchain

جریان فوق هسته چارچوب LangChain را نشان می دهد. برنامه های کاربردی در بالای پشته با یکی از ماژول های LangChain از طریق Python یا JavaScript SDK تعامل دارند. بیایید نقش این ماژول ها را درک کنیم.

مدل ورودی/خروجی 

ماژول Model I/O با تعامل با LLM سروکار دارد. اساساً به ایجاد اعلان‌های مؤثر، فراخوانی API مدل و تجزیه خروجی کمک می‌کند. مهندسی سریع، که هسته هوش مصنوعی مولد است، توسط LangChain به خوبی مدیریت می شود. این ماژول احراز هویت، پارامترهای API و نقطه پایانی را که توسط ارائه دهندگان LLM در معرض دید قرار گرفته اند را خلاصه می کند. در نهایت، می تواند پاسخ ارسال شده توسط مدل را در قالب مورد نظر که برنامه می تواند مصرف کند، تجزیه و تحلیل کند.

اتصال داده

ماژول اتصال داده را به عنوان خط لوله ETL برنامه LLM خود در نظر بگیرید. این برنامه با بارگیری اسناد خارجی مانند فایل‌های PDF یا Excel، تبدیل آن‌ها به تکه‌هایی برای پردازش آنها به جاسازی‌های کلمه به صورت دسته‌ای، ذخیره جاسازی‌ها در یک پایگاه داده برداری و در نهایت بازیابی آنها از طریق پرس‌و‌جوها سروکار دارد. همانطور که قبلاً گفتیم، این مهمترین بلوک سازنده LangChain است.

زنجیر

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

حافظه

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

نحوه انتقال کد ASP.NET Core 5 به ASP.NET Core 6

تماسهای پاسخ

LangChain به توسعه دهندگان سیستمی ارائه می دهد که به آنها امکان می دهد تا به مراحل مختلف یک برنامه LLM متصل شوند. این برای ورود به سیستم، نظارت، پخش جریانی و سایر وظایف مفید است. این امکان وجود دارد که کنترل کننده های برگشت تماس سفارشی را بنویسید که زمانی که یک رویداد خاص در خط لوله رخ می دهد فراخوانی می شوند. تماس پیش‌فرض LangChain به stdout اشاره می‌کند، که به سادگی خروجی هر مرحله را در کنسول چاپ می‌کند.

نمایندگان 

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

LangChain به سرعت در حال تبدیل شدن به مهمترین مؤلفه برنامه های کاربردی GenAI است. به لطف اکوسیستم پر رونق خود، که به طور مداوم در حال گسترش است، می تواند طیف گسترده ای از بلوک های ساختمانی را پشتیبانی کند. پشتیبانی از منبع باز و LLM های تجاری، پایگاه های داده برداری، منابع داده، و جاسازی ها، LangChain را به ابزاری ضروری برای توسعه دهندگان تبدیل می کند.

هدف این مقاله معرفی توسعه دهندگان با LangChain بود. در مقاله بعدی این مجموعه، از LangChain با Google’s Palm 2 API استفاده خواهیم کرد. با ما همراه باشید.