فهرست مندرجات[پنهان شدن][نمایش]
LangChain یک ابزار پیشرفته و قوی است که برای مهار قدرت مدلهای زبان بزرگ (LLM) توسعه یافته است.
این LLM ها دارای قابلیت های قابل توجهی هستند و می توانند به طور موثر با مجموعه وسیعی از وظایف مقابله کنند. با این حال، توجه به این نکته مهم است که قدرت آنها در ماهیت کلی آنها نهفته در تخصص عمیق در حوزه است. محبوبیت آن از زمان معرفی GPT-4 به سرعت افزایش یافته است.
در حالی که LLM ها در انجام وظایف مختلف عالی هستند، ممکن است در ارائه پاسخ های خاص یا مقابله با وظایفی که نیاز به دانش عمیق دامنه دارند، با محدودیت هایی مواجه شوند. به عنوان مثال، استفاده از یک LLM برای پاسخ به سؤالات یا انجام وظایف در زمینه های تخصصی مانند پزشکی یا حقوق را در نظر بگیرید.
در حالی که LLM مطمئناً می تواند به سؤالات عمومی در مورد این زمینه ها پاسخ دهد، ممکن است برای ارائه پاسخ های دقیق یا ظریف تر که نیاز به دانش یا تخصص تخصصی دارد مشکل داشته باشد.
این به این دلیل است که LLM ها بر روی حجم وسیعی از داده های متنی از منابع مختلف آموزش می بینند و به آنها امکان می دهد الگوها را بیاموزند، زمینه را درک کنند و پاسخ های منسجمی تولید کنند. با این حال، آموزش آنها معمولاً به اندازه متخصصان انسانی در آن زمینه ها شامل کسب دانش خاص یا تخصصی نیست.
بنابراین، در حالی که LangChain، همراه با LLM، میتواند ابزار ارزشمندی برای طیف گستردهای از وظایف باشد، مهم است که بدانیم تخصص دامنه عمیق ممکن است در شرایط خاص همچنان ضروری باشد. متخصصان انسانی با دانش تخصصی میتوانند عمق لازم، درک دقیق و بینشهای مربوط به زمینه را ارائه دهند که ممکن است فراتر از تواناییهای LLM به تنهایی باشد.
ما توصیه می کنیم به اسناد LangChain نگاه کنید یا GitHub مخزن برای درک کامل تر از موارد استفاده معمولی آن. اکیداً توصیه می شود که تصویر بزرگتری از این بسته بدست آورید.
چگونه کار می کند؟
برای درک هدف و کار LangChain، اجازه دهید یک مثال عملی را در نظر بگیریم. ما می دانیم که GPT-4 دانش عمومی قابل توجهی دارد و می تواند پاسخ های قابل اعتمادی به طیف گسترده ای از سوالات ارائه دهد.
با این حال، اگر اطلاعات خاصی از دادههای خودمان، مانند یک سند شخصی، کتاب، فایل PDF یا پایگاه داده اختصاصی بخواهیم چه میشود؟
LangChain به ما این امکان را می دهد که a مدل زبان بزرگ مانند GPT-4 به منابع داده خودمان. این فراتر از چسباندن یک قطعه متن در رابط چت است. در عوض، میتوانیم به یک پایگاه داده کامل که با دادههای خودمان پر شده است ارجاع دهیم.
پس از به دست آوردن اطلاعات مورد نظر، LangChain می تواند ما را در انجام اقدامات خاص یاری کند. به عنوان مثال، میتوانیم به آن دستور دهیم ایمیلی حاوی جزئیات خاص ارسال کند.
برای رسیدن به این هدف، ما یک رویکرد خط لوله با استفاده از LangChain را دنبال می کنیم. ابتدا سند مورد نظر را می گیریم مدل زبان برای ارجاع و تقسیم آن به تکه های کوچکتر. این تکه ها سپس به عنوان جاسازی ذخیره می شوند، که هستند نمایش برداری از متن، در یک پایگاه داده برداری.
با این تنظیمات، میتوانیم برنامههای کاربردی مدل زبان بسازیم که از خط لوله استاندارد پیروی میکنند: کاربر یک سؤال اولیه میپرسد، که سپس به مدل زبان ارسال میشود. نمایش برداری سوال برای انجام جستجوی شباهت در پایگاه داده برداری و بازیابی تکه های مربوطه از اطلاعات استفاده می شود.
سپس این تکهها به مدل زبان بازگردانده میشوند و آن را قادر میسازند پاسخی ارائه دهد یا اقدام مورد نظر را انجام دهد.
LangChain توسعه برنامههایی را تسهیل میکند که از اطلاعات آگاه هستند، زیرا میتوانیم به دادههای خود در یک فروشگاه برداری ارجاع دهیم، و معتبر هستند، زیرا میتوانند اقداماتی فراتر از پاسخ دادن به سؤالات انجام دهند. تی
بسیاری از موارد استفاده عملی را باز می کند، به ویژه در کمک های شخصی، که در آن یک مدل زبان بزرگ می تواند وظایفی مانند رزرو پرواز، انتقال پول، یا کمک به امور مربوط به مالیات را انجام دهد.
علاوه بر این، مفاهیم برای مطالعه و یادگیری موضوعات جدید قابل توجه است، زیرا یک مدل زبان می تواند به کل برنامه درسی ارجاع دهد و روند یادگیری را تسریع کند. انتظار می رود کدگذاری، تجزیه و تحلیل داده ها و علم داده نیز به میزان زیادی تحت تأثیر این پیشرفت ها قرار گیرند.
یکی از هیجان انگیزترین چشم اندازها، اتصال مدل های زبان بزرگ به داده های موجود شرکت، مانند اطلاعات مشتری یا داده های بازاریابی است. این ادغام با APIهای پیشرفته مانند Meta's API یا Google's API نوید پیشرفت نمایی در تجزیه و تحلیل داده و علم داده را می دهد.
نحوه ساخت یک صفحه وب (دمو)
در حال حاضر، Langchain به عنوان بسته های پایتون و جاوا اسکریپت در دسترس است.
ما می توانیم یک برنامه وب نمایشی با استفاده از Streamlit، LangChain و مدل OpenAI GPT-3 برای پیاده سازی مفهوم LangChain ایجاد کنیم.
اما ابتدا باید چند وابستگی از جمله Streamlit، LangChain و OpenAI را نصب کنیم.
پیش نیازها
Streamlit: یک بسته محبوب پایتون برای ایجاد برنامه های کاربردی وب مرتبط با علم داده
OpenAI: دسترسی به مدل زبان GPT-3 OpenAI مورد نیاز است.
برای نصب این وابستگی ها، از دستورات زیر در cmd استفاده کنید:
pip install streamlit
pip install langchain
pip install openai
بسته های وارداتی
ما با وارد کردن بسته های مورد نیاز مانند OpenAI، LangChain و Streamlit شروع می کنیم. زنجیرههای مدل زبان ما با استفاده از سه کلاس از LangChain تعریف و اجرا میشوند: LLMChain، SimpleSequentialChain و PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
راه اندازی پایه
سپس اساس ساختاری پروژه ما با استفاده از نحو Streamlit تنظیم شد. ما به برنامه عنوان "واقعیت چیست: استفاده از زنجیره متوالی ساده" را دادیم و یک پیوند علامت گذاری به مخزن GitHub اضافه کردیم که الهام بخش برنامه بود.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
ابزارک های جلویی
ما با استفاده از نحو ساده Streamlit، برنامه را با اطلاعات مرتبط کمی راه اندازی کردیم:
# If an API key has been provided, create an OpenAI language model instance
if API:
llm = OpenAI(temperature=0.7, openai_api_key=API)
else:
# If an API key hasn't been provided, display a warning message
st.warning("Enter your OPENAI API-KEY. Get your OpenAI API key from [here](https://platform.openai.com/account/api-keys).\n")
برای افزودن ویجت های جلویی
علاوه بر این، ما باید یک ویجت ورودی ارائه کنیم تا به کاربرانمان اجازه دهیم هرگونه سوالی را وارد کنند.
# Add a text input box for the user's question
user_question = st.text_input(
"Enter Your Question : ",
placeholder = "Cyanobacteria can perform photosynthetsis , are they considered as plants?",
)
همه چیز تمام شد! زنجیر در حال اجراست!
ما زنجیره های مختلف عملیات را همراه با SimpleSequentialChain
برای پاسخ به سوال کاربر هنگامی که کاربر انتخاب می کند، زنجیره ها به ترتیب زیر انجام می شوند "Tell me about it"
دکمه:
if st.button("Tell me about it", type="primary"):
# Chain 1: Generating a rephrased version of the user's question
template = """{question}\n\n"""
prompt_template = PromptTemplate(input_variables=["question"], template=template)
question_chain = LLMChain(llm=llm, prompt=prompt_template)
# Chain 2: Generating assumptions made in the statement
template = """Here is a statement:
{statement}
Make a bullet point list of the assumptions you made when producing the above statement.\n\n"""
prompt_template = PromptTemplate(input_variables=["statement"], template=template)
assumptions_chain = LLMChain(llm=llm, prompt=prompt_template)
assumptions_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain], verbose=True
)
# Chain 3: Fact checking the assumptions
template = """Here is a bullet point list of assertions:
{assertions}
For each assertion, determine whether it is true or false. If it is false, explain why.\n\n"""
prompt_template = PromptTemplate(input_variables=["assertions"], template=template)
fact_checker_chain = LLMChain(llm=llm, prompt=prompt_template)
fact_checker_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain], verbose=True
)
# Final Chain: Generating the final answer to the user's question based on the facts and assumptions
template = """In light of the above facts, how would you answer the question '{}'""".format(
user_question
)
template = """{facts}\n""" + template
prompt_template = PromptTemplate(input_variables=["facts"], template=template)
answer_chain = LLMChain(llm=llm, prompt=prompt_template)
overall_chain = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain, answer_chain],
verbose=True,
)
# Running all the chains on the user's question and displaying the final answer
st.success(overall_chain.run(user_question))
question_chain
: که اولین مرحله در خط لوله ما است، سوال کاربر را به عنوان ورودی و خروجی دریافت می کند. درخواست کاربر به عنوان الگوی زنجیره عمل می کند.- بر اساس یک بیانیه مرتبط با این سوال،
assumptions_chain
با استفاده از خروجی از مفروضات، فهرستی از مفروضات را ایجاد می کندquestion_chain
به عنوان ورودی اینLLMChain
وOpenAI
برای ساخت عبارت از مدل LangChain استفاده شد. کاربر وظیفه دارد فهرستی از مفروضاتی ایجاد کند که به منظور تولید عبارت با استفاده از الگوی این زنجیره ساخته شده است. - بر اساس خروجی از
question_chain
وassumptions_chain
ازfact_checker_chain
لیستی از ادعاها را در قالب نقاط گلوله ایجاد می کند. ادعاها با استفاده ازOpenAI
مدل وLLMChain
از LangChain. کاربر وظیفه دارد تشخیص دهد که آیا هر ادعا صحیح است یا نادرست و توجیهی برای ادعاهایی که درست است ارائه دهد. - La
answer_chain
از خروجی ها استفاده می کندquestion_chain
,assumptions_chain
وfact_checker_chain
به عنوان ورودی برای ایجاد پاسخ به سوال کاربر با استفاده از داده های تولید شده توسط زنجیره های قبلی. الگوی این زنجیره درخواست می کند که کاربر با استفاده از حقایق ایجاد شده به اولین پرس و جو پاسخ دهد. - به منظور ارائه پاسخ نهایی به درخواست کاربر بر اساس اطلاعات تولید شده توسط زنجیره های قبلی، ما این زنجیره ها را در زنجیره کلی ادغام می کنیم. بعد از تکمیل شدن زنجیرها استفاده می کنیم
st.success()
تا راه حل را به کاربر نشان دهد.
نتیجه
ما به سادگی می توانیم اقدامات مدل زبان های مختلف را با هم زنجیره کنیم تا خطوط لوله پیچیده تری را با استفاده از آن ایجاد کنیم SimpleSequentialChain
ماژول LangChain. برای طیف گسترده ای از برنامه های NLP، از جمله ربات های گفتگو، سیستم های پرسش و پاسخ، و ابزارهای ترجمه زبان، این ممکن است بسیار مفید باشد.
درخشش LangChain در ظرفیت آن برای انتزاع یافت می شود، که کاربر را قادر می سازد تا به جای ویژگی های مدل سازی زبان، روی موضوع فعلی تمرکز کند.
LangChain با ارائه مدل های از پیش آموزش دیده و مجموعه ای از الگوها، فرآیند ایجاد مدل های زبانی پیچیده را کاربرپسندتر می کند.
این گزینه را به شما می دهد تا مدل های زبان را با استفاده از داده های خود تنظیم کنید و سفارشی کردن مدل های زبان را ساده می کند. این امکان توسعه مدلهای دقیقتر و مختص دامنه را فراهم میآورد که برای یک کار معین، بهتر از مدلهای آموزشدیده عمل میکنند.
La SimpleSequentialChain
ماژول و سایر ویژگی های LangChain آن را به ابزاری موثر برای توسعه سریع و استقرار سیستم های NLP پیچیده تبدیل می کند.
پاسخ دهید