LangChain میں ایجنٹ اور اس کے ٹولز دونوں میں میموری کیسے شامل کی جائے؟

Langchain My Ayjn Awr As K Wlz Dwnw My Mymwry Kys Shaml Ky Jay



LangChain صارف کے لیے معلومات نکالنے کے عمل کو کنٹرول کرنے کے لیے ایجنٹس کی تعمیر کے لیے تمام مطلوبہ ٹولز فراہم کرتا ہے۔ یہ ٹولز ایجنٹ کی تعمیر کے لیے ضروری ہیں کیونکہ وہ مختلف ٹولز کا استعمال کرتے ہوئے کاموں کا انتظام کرتے ہیں۔ ایجنٹس بھی ان ٹولز میں ہیرا پھیری سے کام کرتے ہیں اور تمام سرگرمیوں کو نافذ کرتے ہیں۔ یہ جانتا ہے کہ کام کے لیے کون سا ٹول درکار ہے اور اسے اس مخصوص کام کے لیے کب تفویض کرنا ہے۔

فوری آؤٹ لائن

یہ پوسٹ درج ذیل کو ظاہر کرے گی:

LangChain میں ایجنٹ اور اس کے ٹولز دونوں میں میموری کیسے شامل کی جائے؟

ایجنٹوں اور ٹولز میں میموری شامل کرنا انہیں ماڈل کی چیٹ ہسٹری استعمال کرنے کی صلاحیت کے ساتھ بہتر کام کرنے کے قابل بناتا ہے۔ میموری کے ساتھ، ایجنٹ مؤثر طریقے سے فیصلہ کر سکتا ہے کہ کون سا ٹول اور کب تعینات کرنا ہے۔ استعمال کرنے کو ترجیح دی جاتی ہے ' ReadOnlyMemory ایجنٹوں اور ٹولز دونوں کے لیے تاکہ وہ اس میں ترمیم نہیں کر سکیں گے۔ LangChain میں ایجنٹوں اور ٹولز دونوں میں میموری کو شامل کرنے کے عمل کو جاننے کے لیے درج کردہ مراحل سے گزریں:







مرحلہ 1: فریم ورک انسٹال کرنا

سب سے پہلے، انسٹال کریں langchain-تجرباتی ایجنٹ کے لیے زبان کے ماڈلز اور ٹولز بنانے کے لیے اپنی انحصار حاصل کرنے کے لیے ماڈیول۔ LangChain تجرباتی وہ ماڈیول ہے جو ماڈلز بنانے کے لیے انحصار حاصل کرتا ہے جو زیادہ تر تجربات اور ٹیسٹوں کے لیے استعمال ہوتے ہیں:



pip انسٹال langchain - تجرباتی



حاصل کریں گوگل سرچ کے نتائج انٹرنیٹ سے انتہائی متعلقہ جوابات حاصل کرنے کے لیے OpenAI انحصار کے ساتھ ماڈیولز:





پائپ انسٹال اوپنائی گوگل - تلاش کریں - نتائج

مرحلہ 2: ماحول کو ترتیب دینا

انٹرنیٹ سے جوابات حاصل کرنے والے ماڈل کو بنانے کے لیے، اس کا استعمال کرتے ہوئے ماحول کو ترتیب دینے کی ضرورت ہے۔ اوپن اے آئی اور سرپاپی چابیاں:



درآمد تم
درآمد گیٹ پاس

تم. تقریباً [ 'OPENAI_API_KEY' ] = گیٹ پاس گیٹ پاس ( 'اوپن اے آئی API کلید:' )
تم. تقریباً [ 'SERPAPI_API_KEY' ] = گیٹ پاس گیٹ پاس ( 'Serpapi API کلید:' )

مرحلہ 3: لائبریریاں درآمد کرنا

ماحول کو ترتیب دینے کے بعد، ایجنٹ کے لیے ٹولز بنانے کے لیے لائبریریوں کو درآمد کریں اور ان کے ساتھ ضم کرنے کے لیے اضافی میموری۔ درج ذیل کوڈ مطلوبہ لائبریریوں کو حاصل کرنے کے لیے ایجنٹس، میموری، llms، چینز، پرامپٹس اور یوٹیلیٹیز کا استعمال کرتا ہے:

langchain سے. ایجنٹس درآمد زیرو شاٹ ایجنٹ , ٹول , AgentExecutor
langchain سے. یاداشت درآمد گفتگو بفر میموری , ReadOnlySharedMemory
langchain سے. ایل ایم ایس درآمد اوپن اے آئی
#لائبریری حاصل کریں۔ کے لیے LangChain کا ​​استعمال کرتے ہوئے چین کی تعمیر
langchain سے. زنجیریں درآمد ایل ایل ایم چین
langchain سے. اشارہ کرتا ہے درآمد PromptTemplate
#لائبریری حاصل کریں۔ کے لیے انٹرنیٹ سے معلومات حاصل کرنا
langchain سے. افادیت درآمد SerpAPIWrapper

مرحلہ 4: ReadOnlyMemory شامل کرنا

ایجنٹ کے لیے ٹیمپلیٹ کو ترتیب دیں تاکہ صارف ان پٹ فراہم کرتے ہی کاموں کو انجام دینے کے ساتھ شروع کرے۔ اس کے بعد، شامل کریں 'ConversationBufferMemory()' ماڈل کی چیٹ کی تاریخ کو ذخیرہ کرنے اور شروع کرنے کے لیے 'ReadOnlyMemory' ایجنٹوں اور اس کے اوزار کے لیے:

سانچے = '' 'یہ ایک انسان اور بوٹ کے درمیان بات چیت ہے:

{chat_history}
# درست اور آسان خلاصہ نکالنے کے لیے ڈھانچہ سیٹ کریں۔
{input} کے لیے چیٹ کا خلاصہ کریں:
'
''

فوری طور پر = PromptTemplate ( input_variables = [ 'ان پٹ' , 'چیٹ_ہسٹری' ] , سانچے = سانچے )
یاداشت = گفتگو بفر میموری ( میموری_کی = 'چیٹ_ہسٹری' )
صرف پڑھنے کی یادداشت = ReadOnlySharedMemory ( یاداشت = یاداشت )
تمام اجزاء کو مربوط کرنے کے لیے #summary چین کے لیے گفتگو کا خلاصہ حاصل کرنا
خلاصہ_چین = ایل ایل ایم چین (
ایل ایل ایم = اوپن اے آئی ( ) ,
فوری طور پر = فوری طور پر ,
لفظی = سچ ہے۔ ,
یاداشت = صرف پڑھنے کی یادداشت ,
)

مرحلہ 5: ٹولز ترتیب دینا

اب، چیٹ کے خلاصے کے ساتھ انٹرنیٹ سے جواب حاصل کرنے کے لیے سرچ اور سمری جیسے ٹولز ترتیب دیں:

تلاش کریں = SerpAPIWrapper ( )
اوزار = [
ٹول (
نام = 'تلاش' ,
func = تلاش کریں رن ,
تفصیل = 'حالیہ واقعات کے بارے میں ھدف بنائے گئے سوالات کے مناسب جوابات' ,
) ,
ٹول (
نام = 'خلاصہ' ,
func = خلاصہ_چین رن ,
تفصیل = 'چیٹ کا خلاصہ کرنے میں مددگار اور اس ٹول میں ان پٹ ایک سٹرنگ ہونا چاہئے، جو اس کی نمائندگی کرتا ہے کہ یہ خلاصہ کون پڑھے گا' ,
) ,
]

مرحلہ 6: ایجنٹ بنانا

جیسے ہی ٹولز مطلوبہ کاموں کو انجام دینے اور انٹرنیٹ سے جوابات نکالنے کے لیے تیار ہوں ایجنٹ کو کنفیگر کریں۔ ' سابقہ 'متغیر کو عمل میں لایا جاتا ہے اس سے پہلے کہ ایجنٹ ٹولز کو کوئی کام تفویض کریں اور' لاحقہ ٹولز کے جواب نکالنے کے بعد عمل میں لایا جاتا ہے:

سابقہ = '' 'کسی انسان کے ساتھ بات چیت کریں، درج ذیل ٹولز تک رسائی حاصل کرکے درج ذیل سوالات کے بہترین جواب دیں:' ''
لاحقہ = '' 'شروع کرو!'
# ڈھانچہ کے لیے ایجنٹ میموری استعمال کرتے ہوئے ٹولز کا استعمال شروع کرے۔
{ چیٹ_ہسٹری }
سوال : { ان پٹ }
{ ایجنٹ_اسکریچ پیڈ } '' '

prompt = ZeroShotAgent.create_prompt(
سوال کے سیاق و سباق کو سمجھنے کے لیے پرامپٹ ٹیمپلیٹس کو ترتیب دیں۔
اوزار،
سابقہ ​​= سابقہ،
لاحقہ = لاحقہ،
input_variables=['
ان پٹ '،' چیٹ_ہسٹری '،' ایجنٹ_اسکریچ پیڈ ']،
)

طریقہ 1: ReadOnlyMemory کا استعمال

ایک بار جب ایجنٹ ٹولز کو انجام دینے کے لیے سیٹ ہو جاتا ہے تو ReadOnlyMemory والا ماڈل ہے۔ ترجیحی جوابات حاصل کرنے کے لیے زنجیروں کو بنانے اور اس پر عمل کرنے کا طریقہ اور عمل درج ذیل ہے:

مرحلہ 1: چین کی تعمیر

اس طریقہ کار میں پہلا قدم چین اور ایگزیکیوٹر کی تعمیر کرنا ہے۔ 'زیرو شاٹ ایجنٹ ()' اس کے دلائل کے ساتھ. دی 'LLMChain()' llm اور prompt arguments کا استعمال کرتے ہوئے زبان کے ماڈل میں تمام چیٹس کے درمیان کنکشن بنانے کے لیے استعمال کیا جاتا ہے۔ ایجنٹ llm_chain، ٹولز، اور وربوز کو اپنی دلیل کے طور پر استعمال کرتا ہے اور ایجنٹوں اور اس کے ٹولز دونوں کو میموری کے ساتھ عمل میں لانے کے لیے agent_chain بناتا ہے:

llm_chain = ایل ایل ایم چین ( ایل ایل ایم = اوپن اے آئی ( درجہ حرارت = 0 ) , فوری طور پر = فوری طور پر )
ایجنٹ = زیرو شاٹ ایجنٹ ( llm_chain = llm_chain , اوزار = اوزار , لفظی = سچ ہے۔ )
ایجنٹ_چین = AgentExecutor. ایجنٹ_اور_ٹولز سے (
ایجنٹ = ایجنٹ , اوزار = اوزار , لفظی = سچ ہے۔ , یاداشت = یاداشت
)

مرحلہ 2: سلسلہ کی جانچ کرنا

کو کال کریں۔ ایجنٹ_چین انٹرنیٹ سے سوال پوچھنے کے لیے run() طریقہ استعمال کرتے ہوئے:

ایجنٹ_چین رن ( ان پٹ = 'LangChain کیا ہے' )

ایجنٹ نے سرچ ٹولز کا استعمال کرتے ہوئے انٹرنیٹ سے جواب نکالا ہے:

صارف ایجنٹ سے منسلک میموری کو جانچنے کے لیے غیر واضح فالو اپ سوال پوچھ سکتا ہے:

ایجنٹ_چین رن ( ان پٹ = 'یہ کس نے تیار کیا؟' )

ایجنٹ نے پچھلی چیٹ کو سوالات کے سیاق و سباق کو سمجھنے کے لیے استعمال کیا ہے اور جوابات حاصل کیے ہیں جیسا کہ درج ذیل اسکرین شاٹ میں دکھایا گیا ہے:

ایجنٹ ٹول (summary_chain) کا استعمال کرتا ہے تاکہ ایجنٹ کی میموری کا استعمال کرتے ہوئے پہلے نکالے گئے تمام جوابات کا خلاصہ نکالا جا سکے۔

ایجنٹ_چین رن (
ان پٹ = 'شکریہ! میری 5 سال کی عمر کے لیے گفتگو کا خلاصہ کریں'
)

آؤٹ پٹ
مندرجہ ذیل اسکرین شاٹ میں 5 سالہ بچے کے لیے پہلے پوچھے گئے سوالات کا خلاصہ دکھایا گیا ہے۔

مرحلہ 3: میموری کی جانچ کرنا

درج ذیل کوڈ کا استعمال کرتے ہوئے بفر میموری کو پرنٹ کریں اس میں ذخیرہ شدہ چیٹس کو نکالنے کے لیے:

پرنٹ کریں ( ایجنٹ_چین یاداشت . بفر )

بغیر کسی ترمیم کے اپنی درست ترتیب میں چیٹس کو درج ذیل ٹکڑوں میں دکھایا گیا ہے:

طریقہ 2: ایجنٹ اور ٹولز دونوں کے لیے ایک ہی میموری کا استعمال

دوسرا طریقہ جس کی پلیٹ فارم کی طرف سے سفارش نہیں کی جاتی ہے وہ ایجنٹوں اور ٹولز دونوں کے لیے بفر میموری کا استعمال کر رہا ہے۔ ٹولز میموری میں ذخیرہ شدہ چیٹس کو تبدیل کر سکتے ہیں جو بڑی بات چیت میں غلط آؤٹ پٹ واپس کر سکتے ہیں:

مرحلہ 1: چین کی تعمیر

ایک چھوٹی سی تبدیلی کے ساتھ ایجنٹوں کے لیے ٹولز اور چینز بنانے کے لیے ٹیمپلیٹ سے مکمل کوڈ کا استعمال کرنا کیونکہ اس بار ReadOnlyMemory کو شامل نہیں کیا گیا ہے:

سانچے = '' 'یہ ایک انسان اور بوٹ کے درمیان بات چیت ہے:

{chat_history}

{input} کے لیے گفتگو کا خلاصہ لکھیں:
'
''
# چیٹ کا ڈھانچہ بنائیں انٹرفیس چین کے ساتھ میموری کو شامل کرکے پرامپٹ ٹیمپلیٹ کا استعمال کرتے ہوئے
فوری طور پر = PromptTemplate ( input_variables = [ 'ان پٹ' , 'چیٹ_ہسٹری' ] , سانچے = سانچے )
یاداشت = گفتگو بفر میموری ( میموری_کی = 'چیٹ_ہسٹری' )
خلاصہ_چین = ایل ایل ایم چین (
ایل ایل ایم = اوپن اے آئی ( ) ,
فوری طور پر = فوری طور پر ,
لفظی = سچ ہے۔ ,
یاداشت = یاداشت ,
)
# اوزار بنائیں ( تلاش اور خلاصہ ) کے لیے ایجنٹوں کی تشکیل
تلاش کریں = SerpAPIWrapper ( )
اوزار = [
ٹول (
نام = 'تلاش' ,
func = تلاش کریں رن ,
تفصیل = 'حالیہ واقعات کے بارے میں ھدف بنائے گئے سوالات کے مناسب جوابات' ,
) ,
ٹول (
نام = 'خلاصہ' ,
func = خلاصہ_چین رن ,
تفصیل = 'چیٹ کا خلاصہ حاصل کرنے میں مددگار ہے اور اس ٹول میں اسٹرنگ ان پٹ کی ضرورت ہے جس کی نمائندگی کرتے ہوئے یہ خلاصہ کون پڑھے گا' ,
) ,
]
#اقدامات کی وضاحت کریں۔ کے لیے ایجنٹ معلومات نکالنے کے لیے ٹولز کا استعمال کرتا ہے۔ کے لیے چیٹ
سابقہ = '' 'مندرجہ ذیل ٹولز تک رسائی حاصل کر کے بہترین ممکنہ طریقے سے سوالات کا جواب دیتے ہوئے، انسان کے ساتھ بات چیت کریں:' ''
لاحقہ = '' 'شروع کرو!'
# ڈھانچہ کے لیے ایجنٹ میموری استعمال کرتے ہوئے ٹولز کا استعمال شروع کرے۔
{ چیٹ_ہسٹری }
سوال : { ان پٹ }
{ ایجنٹ_اسکریچ پیڈ } '' '

prompt = ZeroShotAgent.create_prompt(
سوال کے سیاق و سباق کو سمجھنے کے لیے پرامپٹ ٹیمپلیٹس کو ترتیب دیں۔
اوزار،
سابقہ ​​= سابقہ،
لاحقہ = لاحقہ،
input_variables=['
ان پٹ '،' چیٹ_ہسٹری '،' ایجنٹ_اسکریچ پیڈ ']،
)
# ایجنٹ ایگزیکیوٹر کی تعمیر کے دوران تمام اجزاء کو مربوط کریں۔
llm_chain = LLMCchain(llm=OpenAI(درجہ حرارت=0), prompt=prompt)
agent = ZeroShotAgent(llm_chain=llm_chain, tools=tools, verbose=True)
agent_chain = AgentExecutor.from_agent_and_tools(
ایجنٹ=ایجنٹ، ٹولز=ٹولز، وربوز=سچ، میموری=میموری
)

مرحلہ 2: سلسلہ کی جانچ کرنا

درج ذیل کوڈ کو چلائیں:

ایجنٹ_چین رن ( ان پٹ = 'LangChain کیا ہے' )

جواب کامیابی کے ساتھ ڈسپلے اور میموری میں محفوظ کیا جاتا ہے:

سیاق و سباق کا زیادہ حصہ بتائے بغیر فالو اپ سوال پوچھیں:

ایجنٹ_چین رن ( ان پٹ = 'یہ کس نے تیار کیا؟' )

ایجنٹ اس کو تبدیل کرکے سوال کو سمجھنے کے لیے میموری کا استعمال کرتا ہے اور پھر جواب پرنٹ کرتا ہے:

ایجنٹ کے ساتھ منسلک میموری کا استعمال کرتے ہوئے چیٹ کا خلاصہ حاصل کریں:

ایجنٹ_چین رن (
ان پٹ = 'شکریہ! میری 5 سال کی عمر کے لیے گفتگو کا خلاصہ کریں'
)

آؤٹ پٹ
خلاصہ کامیابی کے ساتھ نکالا گیا ہے، اور اب تک سب کچھ ویسا ہی لگتا ہے لیکن تبدیلی اگلے مرحلے میں آتی ہے:

مرحلہ 3: میموری کی جانچ کرنا

درج ذیل کوڈ کا استعمال کرتے ہوئے میموری سے چیٹ پیغامات کو نکالنا:

پرنٹ کریں ( ایجنٹ_چین یاداشت . بفر )

ٹول نے ایک اور سوال شامل کرکے تاریخ میں ترمیم کی ہے جو اصل میں نہیں پوچھا گیا تھا۔ ایسا اس وقت ہوتا ہے جب ماڈل a کا استعمال کرتے ہوئے سوال کو سمجھتا ہے۔ خود سے پوچھنا سوال ٹول غلطی سے سوچتا ہے کہ اسے صارف نے پوچھا ہے اور اسے ایک الگ سوال کے طور پر پیش کرتا ہے۔ لہذا یہ اس اضافی سوال کو میموری میں بھی شامل کرتا ہے جسے پھر گفتگو کا سیاق و سباق حاصل کرنے کے لئے استعمال کیا جاتا ہے:

ابھی کے لیے اتنا ہی ہے۔

نتیجہ

LangChain میں ایجنٹ اور اس کے ٹولز دونوں میں میموری شامل کرنے کے لیے، ان کی انحصار حاصل کرنے کے لیے ماڈیولز انسٹال کریں اور ان سے لائبریریاں درآمد کریں۔ اس کے بعد، میموری کو شامل کرنے کے لیے گفتگو کی میموری، زبان کا ماڈل، ٹولز، اور ایجنٹ بنائیں۔ دی تجویز کردہ طریقہ میموری کو شامل کرنے کے لیے ایجنٹ کو ReadOnlyMemory اور چیٹ کی تاریخ کو ذخیرہ کرنے کے لیے اس کے ٹولز کا استعمال کر رہا ہے۔ صارف بھی استعمال کرسکتا ہے۔ بات چیت کی یادداشت ایجنٹوں اور آلات دونوں کے لیے۔ لیکن، وہ حاصل کرتے ہیں الجھن میں کبھی کبھی اور چیٹس کو میموری میں تبدیل کریں۔