۳۰ آذر ۱۴۰۳

Techboy

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

LangChain چیست؟ توسعه آسان تر در مورد LLM

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

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

استفاده از مدل‌های زبان بزرگ (LLM) معمولاً آسان است، اگرچه ساختن اعلان‌های مؤثر برای آنها هنر وجود دارد. از سوی دیگر، برنامه نویسی با مدل های زبان می تواند چالش برانگیز باشد. LangChain را وارد کنید.

LangChain چارچوبی برای توسعه برنامه‌های کاربردی است که توسط مدل‌های زبان پشتیبانی می‌شوند. می‌توانید از LangChain برای ساخت ربات‌های چت یا دستیاران شخصی، خلاصه‌سازی، تجزیه و تحلیل، یا تولید پرسش و پاسخ بر روی اسناد یا داده‌های ساختاریافته، نوشتن یا درک کد، تعامل با APIها و ایجاد برنامه‌های کاربردی دیگری که از هوش مصنوعی مولد بهره می‌برند استفاده کنید. . در حال حاضر دو نسخه از LangChain وجود دارد، یکی در Python و دیگری در TypeScript/JavaScript.

LangChain مدل‌های زبان را قادر می‌سازد تا به منابع داده متصل شوند و همچنین با محیط‌هایشان تعامل داشته باشند. کامپوننت‌ها LangChain انتزاعات مدولار و مجموعه‌ای از پیاده‌سازی انتزاع‌ها هستند. LangChain زنجیرهای خارج از قفسه مجموعه‌ای ساختار یافته از اجزاء برای انجام وظایف سطح بالاتر خاص هستند. می‌توانید از مؤلفه‌ها برای سفارشی‌سازی زنجیره‌های موجود و ساخت زنجیره‌های جدید استفاده کنید.

توجه داشته باشید که دو نوع مدل زبان وجود دارد، مدل‌های LLM و مدل‌های چت. LLM ها یک رشته را به عنوان ورودی می گیرند و یک رشته را برمی گردانند. مدل‌های چت فهرستی از پیام‌ها را به عنوان ورودی دریافت می‌کنند و پیام چت را برمی‌گردانند. پیام های چت شامل دو جزء، محتوا و یک نقش است. نقش ها مشخص می کنند که محتوا از کجا آمده است: یک انسان، یک هوش مصنوعی، سیستم، یک فراخوانی تابع، یا یک ورودی عمومی.

به طور کلی، LLM ها از الگوهای سریع برای ورودی خود استفاده می کنند. یک الگوی سریع به شما امکان می‌دهد نقشی را که می‌خواهید مدل LLM یا چت انجام دهد، مشخص کنید، به عنوان مثال «دستیار مفیدی که انگلیسی را به فرانسوی ترجمه می‌کند». همچنین به شما این امکان را می‌دهد که الگو را برای بسیاری از نمونه‌های محتوا اعمال کنید، مانند فهرستی از عباراتی که می‌خواهید ترجمه شوند.

چگونه LangChain کار می کند: ماژول ها

LangChain دارای شش ماژول است:

  1. مدل I/O، رابطی با مدل‌های زبان
  2. اتصال داده، یک رابط با برنامه- داده های خاص
  3. زنجیره، که دنباله‌ای از تماس‌ها را می‌سازد
  4. نمایندگان، که به زنجیره‌ها اجازه می‌دهد ابزارهای مورد استفاده در دستورالعمل‌های سطح بالا را انتخاب کنند.
  5. حافظه، که حالت برنامه را بین اجراهای یک زنجیره و
  6. پاسخ به تماس، که مراحل میانی هر زنجیره را ثبت و پخش می کند.

Model I/O به شما امکان می‌دهد درخواست‌ها را مدیریت کنید، مدل‌های زبان را از طریق رابط‌های مشترک فراخوانی کنید و اطلاعات را از خروجی‌های مدل استخراج کنید.

langchain 01

اتصال داده بلوک‌های ساختمانی را در اختیار شما قرار می‌دهد تا داده‌های خود را بارگیری، تبدیل، ذخیره و جستجو کنید.

langchain 02

برنامه های پیچیده نیاز به زنجیره LLM دارند، چه با یکدیگر و چه با اجزای دیگر. LangChain رابط Chain را برای چنین برنامه‌های «زنجیره‌ای» فراهم می‌کند.

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

langchain 03

بر خلاف زنجیره‌ها، که دنباله‌های کد سخت هستند، عامل‌ها از یک مدل زبان به عنوان موتور استدلال استفاده می‌کنند تا تعیین کنند کدام اقدامات و به چه ترتیبی انجام شود.

Callbacks به شما این امکان را می دهد که به مراحل مختلف برنامه LLM خود متصل شوید. این برای ورود به سیستم، نظارت، پخش جریانی و سایر وظایف مفید است.

اشکال‌زدایی با LangSmith

LangSmith به شما کمک می کند LangChain خود را ردیابی و ارزیابی کنید برنامه های کاربردی مدل زبان و عوامل هوشمند به شما کمک می کنند تا از نمونه اولیه به تولید حرکت کنید. از زمان نوشتن این مقاله، هنوز بتای بسته است. می‌توانید یک راهنمای LangSmith را مشاهده کنید و اسناد LangSmith بدون پیوستن به آزمون بتا.

مورد استفاده LangChain

مورد استفاده برای LangChain شامل پرسش و پاسخ در مورد اسناد، تجزیه و تحلیل داده های ساخت یافته، تعامل با apis، درک کد، شبیه سازی عامل، نمایندگان، < a href="https://python.langchain.com/docs/use_cases/autonomous_agents/" rel="nofollow">عامل‌های مستقل (طولانی‌مدت)، ربات‌های چت، کدنویسی، استخراج، تجزیه و تحلیل داده های نمودار، خروجی های چند وجهی، بررسی خودکار، خلاصه‌سازی، و برچسب گذاری.

بعضی از این موارد استفاده مثال‌های زیادی دارند، مانند پرسش و پاسخ، که حدود ۱۷ مورد دارد. برخی دیگر فقط یک نمونه دارند، مانند خراش دادن وب.

ادغام های LangChain

تقریباً ۱۶۳ ادغام LangChain تا زمان نگارش این مقاله وجود دارد. اینها شامل پنج تماس، ۹ مدل چت، ۱۱۵ بارکننده سند، شش ترانسفورماتور سند، ۵۴ LLM، ۱۱ روش پیاده سازی حافظه (عمدتا با پایگاه داده)، ۲۲ بازیابی (عمدتا روش های جستجو)، ۳۱ مدل جاسازی متن، ۲۱ جعبه ابزار عامل، ۳۴ ابزار است. و ۴۲ فروشگاه وکتور. ادغام ها نیز به صورت گروه بندی شده بر اساس ارائه دهنده در دسترس هستند.

LangChain اساساً به عنوان یک مرکز بی طرف برای همه این قابلیت ها عمل می کند.

نصب LangChain برای Python و JavaScript

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

من دستورات pip را نشان خواهم داد. برای دستورات conda، به صفحه نصب مراجعه کنید و روی Conda کلیک کنید. .

نصب اولیه و حداقل

است

pip install langchain

برای ثبت، این همان چیزی است که من استفاده کردم. این شامل ماژول های ارائه دهندگان مدل، فروشگاه های داده یا سایر ادغام ها نمی شود. من قصد دارم هر کدام از آنها را که نیاز دارم نصب کنم.

برای نصب LangChain و مدل‌های زبان رایج، از

استفاده کنید

pip install langchain[llms]

برای نصب LangChain و همه ادغام‌ها، از

استفاده کنید

pip install langchain[all]

اگر از zsh استفاده می‌کنید، که پوسته پیش‌فرض در نسخه‌های اخیر macOS است، باید عبارات را با براکت مربع نقل قول کنید. در غیر این صورت، بدون نقل قول، پوسته براکت های مربع را به عنوان نشان دهنده آرایه تفسیر می کند. به عنوان مثال:

pip install 'langchain[all]'

برای نصب LangChain برای جاوا اسکریپت، از npm، Yarn یا pnpm استفاده کنید، برای مثال:

npm install -S langchain

شما می توانید از LangChain برای جاوا اسکریپت در Node.js، Cloudflare Workers، Vercel / Next.js (توابع مرورگر، سرور، و Edge)، توابع Supabase Edge، مرورگرهای وب و استفاده کنید. Deno.

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

مثال LangChain

در حالی که صدها مثال در مستندات LangChain وجود دارد، من فقط یک مورد را به شما نشان می دهم. این کد پایتون از انتهای Quickstart می آید و یک زنجیره LLMC را نشان می دهد. این زنجیره متغیرهای ورودی را می گیرد، آنها را به یک الگوی اعلان ارسال می کند تا یک اعلان ایجاد کند، اعلان را به یک LLM (ChatOpenAI) می دهد و سپس خروجی CSV را از یک تجزیه کننده خروجی (اختیاری) عبور می دهد تا یک آرایه از رشته های پایتون ایجاد کند.

from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.schema import BaseOutputParser

class CommaSeparatedListOutputParser(BaseOutputParser):
    """Parse the output of an LLM call to a comma-separated list."""
    
    def parse(self, text: str):
        """Parse the output of an LLM call."""
        return text.strip().split(", ")

template = """You are a helpful assistant who generates comma separated lists.
A user will pass in a category, and you should generate 5 objects in that category in a comma separated list.
ONLY return a comma separated list, and nothing more."""
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template = "{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
chain = LLMChain(
    llm=ChatOpenAI(),
    prompt=chat_prompt,
    output_parser=CommaSeparatedListOutputParser()
)
chain.run("colors")
# >> ['red', 'blue', 'green', 'yellow', 'orange']

زبان بیان LangChain (LCEL)

زبان بیانی LangChain روشی بیانی برای نوشتن زنجیره‌ها و دریافت جریان، دسته‌ای است. ، و پشتیبانی غیر همگام را خارج از جعبه. LCEL استفاده از LangChain را آسان تر می کند. می‌توانید از تمام ساختارهای LangChain موجود برای ایجاد زنجیره‌ها استفاده کنید، همانطور که هنگام نوشتن آنها در کد انجام می‌دهید، زیرا LCEL اساساً جایگزین سطح بالایی برای ایجاد زنجیره‌ها در Python یا TypeScript/JavaScript است.

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

عبارات LCEL از کاراکترهای لوله (|) برای اتصال متغیرها به زنجیره استفاده می کنند. برای مثال، یک زنجیره مشترک از یک مدل و یک درخواست:

chain = prompt | model

در زمینه، ممکن است این برنامه پایتون را داشته باشید:

from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatOpenAI

model = ChatOpenAI()
prompt = ChatPromptTemplate.from_template("tell me a joke about {foo}")

chain = prompt | model

chain.invoke({"foo": "bears"})

خروجی (همانطور که در سایت داده شده است) این است:

    AIMessage(content='Why don\'t bears use cell phones? \n\nBecause they always get terrible "grizzly" reception!', additional_kwargs={}, example=False)

همانطور که مشاهده کردید، LangChain راه قدرتمندی برای ایجاد برنامه‌های هوش مصنوعی مولد ارائه می‌دهد که با مدل‌های زبان و داده‌ها به زنجیره متصل می‌شوند. من چند نمونه پایتون را به شما نشان دادم و به شما پیوندی به نمونه های جاوا اسکریپت دادم. همانطور که همکار من در InfoWorld شارون ماچلیس در هوش مصنوعی مولد با LangChain، RStudio و فقط کافی پایتون توضیح می‌دهد، می‌توانید LangChain را در R با استفاده از شیم پایتون برنامه‌ریزی کنید. /em> یکی دیگر از منابع مفید وبلاگ LangChain است که در اکثر روزهای هفته یک مقاله کوتاه منتشر می کند.