LangChain এ এজেন্ট এবং এর সরঞ্জাম উভয়ের সাথে কীভাবে মেমরি যুক্ত করবেন?

Langchain E Ejenta Ebam Era Saranjama Ubhayera Sathe Kibhabe Memari Yukta Karabena



LangChain ব্যবহারকারীর জন্য তথ্য আহরণের প্রক্রিয়া নিয়ন্ত্রণ করতে এজেন্ট তৈরির জন্য প্রয়োজনীয় সমস্ত সরঞ্জাম সরবরাহ করে। এই সরঞ্জামগুলি এজেন্ট তৈরির জন্য প্রয়োজনীয় কারণ তারা বিভিন্ন সরঞ্জাম ব্যবহার করে কাজগুলি পরিচালনা করে। এজেন্টরাও এই সরঞ্জামগুলিকে ধাপে ধাপে কাজ করতে এবং সমস্ত কার্যক্রম বাস্তবায়নের জন্য ব্যবহার করে। এটি জানে যে কাজের জন্য কোন টুলটি প্রয়োজন এবং কখন সেই নির্দিষ্ট কাজের জন্য এটি বরাদ্দ করতে হবে।

দ্রুত রূপরেখা

এই পোস্ট নিম্নলিখিত প্রদর্শন করবে:

ল্যাংচেইনে এজেন্ট এবং এর সরঞ্জাম উভয়ের সাথে কীভাবে মেমরি যুক্ত করবেন?

এজেন্ট এবং সরঞ্জামগুলিতে মেমরি যোগ করা তাদের মডেলের চ্যাট ইতিহাস ব্যবহার করার ক্ষমতা সহ আরও ভাল কাজ করতে সক্ষম করে। মেমরির সাহায্যে, এজেন্ট দক্ষতার সাথে সিদ্ধান্ত নিতে পারে কোন টুলটি কখন স্থাপন করতে হবে। এটি ব্যবহার করা পছন্দনীয় ' শুধুমাত্র স্মৃতি পড়া ” উভয় এজেন্ট এবং সরঞ্জামের জন্য তাই তারা এটি সংশোধন করতে সক্ষম হবে না। LangChain এ এজেন্ট এবং টুল উভয়ের সাথে মেমরি যোগ করার প্রক্রিয়া শিখতে, তালিকাভুক্ত পদক্ষেপগুলি অনুসরণ করুন:







ধাপ 1: ফ্রেমওয়ার্ক ইনস্টল করা

প্রথমত, ইনস্টল করুন ল্যাংচেন-পরীক্ষামূলক মডিউল ভাষা মডেল এবং এজেন্ট জন্য সরঞ্জাম নির্মাণের জন্য তার নির্ভরতা পেতে. ল্যাংচেইন পরীক্ষামূলক হল এমন একটি মডিউল যা বিল্ডিং মডেলগুলির জন্য নির্ভরতা পায় যা বেশিরভাগ পরীক্ষা এবং পরীক্ষার জন্য ব্যবহৃত হয়:



পিপ ল্যাংচেইন ইনস্টল করুন - পরীক্ষামূলক



পাওয়া গুগল-সার্চ-ফলাফল ইন্টারনেট থেকে সবচেয়ে প্রাসঙ্গিক উত্তর পেতে OpenAI নির্ভরতা সহ মডিউল:





পিপ ইনস্টল ওপেনই গুগল - অনুসন্ধান - ফলাফল

ধাপ 2: পরিবেশ সেট আপ করা

ইন্টারনেট থেকে উত্তর পায় এমন মডেল তৈরি করতে, এটি ব্যবহার করে পরিবেশ সেট আপ করতে হবে OpenAI এবং সার্পাপি কী:



আমদানি আপনি
আমদানি গেটপাস

আপনি. আন্দাজ [ 'OPENAI_API_KEY' ] = গেটপাস গেটপাস ( 'ওপেনএআই এপিআই কী:' )
আপনি. আন্দাজ [ 'SERPAPI_API_KEY' ] = গেটপাস গেটপাস ( 'Serpapi API কী:' )

ধাপ 3: লাইব্রেরি আমদানি করা

এনভায়রনমেন্ট সেট আপ করার পরে, এজেন্টের জন্য টুল তৈরি করতে লাইব্রেরিগুলি আমদানি করুন এবং তাদের সাথে একীভূত করার জন্য অতিরিক্ত মেমরি। প্রয়োজনীয় লাইব্রেরি পেতে নিম্নলিখিত কোডটি এজেন্ট, মেমরি, এলএমএস, চেইন, প্রম্পট এবং ইউটিলিটি ব্যবহার করে:

ল্যাংচেইন থেকে। এজেন্ট আমদানি জিরোশট এজেন্ট , টুল , এজেন্ট এক্সিকিউটর
ল্যাংচেইন থেকে। স্মৃতি আমদানি কথোপকথন বাফার মেমরি , ReadOnlySharedMemory
ল্যাংচেইন থেকে। এলএমএস আমদানি OpenAI
#লাইব্রেরি পান জন্য ল্যাংচেইন ব্যবহার করে চেইন তৈরি করা
ল্যাংচেইন থেকে। চেইন আমদানি এলএলএমচেইন
ল্যাংচেইন থেকে। প্রম্পট আমদানি প্রম্পট টেমপ্লেট
#লাইব্রেরি পান জন্য ইন্টারনেট থেকে তথ্য পাওয়া
ল্যাংচেইন থেকে। ইউটিলিটি আমদানি SerpAPIWrapper

ধাপ 4: ReadOnlyMemory যোগ করা

ব্যবহারকারী ইনপুট প্রদান করার সাথে সাথে কার্য সম্পাদন শুরু করার জন্য এজেন্টের জন্য টেমপ্লেটটি কনফিগার করুন। এর পরে, যোগ করুন 'কথোপকথনবাফার মেমোরি()' মডেলের চ্যাট ইতিহাস সংরক্ষণ করতে এবং শুরু করতে 'শুধুমাত্র স্মৃতি পড়া' এজেন্ট এবং এর সরঞ্জামগুলির জন্য:

টেমপ্লেট = '' 'এটি একটি মানুষ এবং একটি বটের মধ্যে একটি কথোপকথন:

{কথোপকথনের ইতিহাস}
# সুনির্দিষ্ট এবং সহজ সারাংশ বের করার জন্য কাঠামো সেট করুন
{input}-এর জন্য চ্যাটের সংক্ষিপ্ত বিবরণ:
'
''

শীঘ্র = প্রম্পট টেমপ্লেট ( input_variables = [ 'ইনপুট' , 'কথোপকথনের ইতিহাস' ] , টেমপ্লেট = টেমপ্লেট )
স্মৃতি = কথোপকথন বাফার মেমরি ( মেমরি_কী = 'কথোপকথনের ইতিহাস' )
শুধুমাত্র স্মৃতি পড়া = ReadOnlySharedMemory ( স্মৃতি = স্মৃতি )
সমস্ত উপাদান একত্রিত করার জন্য #সারাংশ চেইন জন্য কথোপকথনের সারাংশ পাওয়া
summary_chain = এলএলএমচেইন (
এলএলএম = OpenAI ( ) ,
শীঘ্র = শীঘ্র ,
ভার্বোস = সত্য ,
স্মৃতি = শুধুমাত্র স্মৃতি পড়া ,
)

ধাপ 5: টুল সেট আপ করা

এখন, চ্যাটের সারাংশ সহ ইন্টারনেট থেকে উত্তর পেতে অনুসন্ধান এবং সারাংশের মতো সরঞ্জামগুলি সেট আপ করুন:

অনুসন্ধান = SerpAPIWrapper ( )
টুলস = [
টুল (
নাম = 'অনুসন্ধান' ,
ফাংশন = অনুসন্ধান চালান ,
বর্ণনা = 'সাম্প্রতিক ঘটনা সম্পর্কে লক্ষ্যযুক্ত প্রশ্নের যথাযথ প্রতিক্রিয়া' ,
) ,
টুল (
নাম = 'সারসংক্ষেপ' ,
ফাংশন = summary_chain. চালান ,
বর্ণনা = 'চ্যাট সংক্ষিপ্ত করতে সহায়ক এবং এই টুলে ইনপুট একটি স্ট্রিং হওয়া উচিত, যা এই সারাংশ কে পড়বে তা প্রতিনিধিত্ব করে' ,
) ,
]

ধাপ 6: এজেন্ট তৈরি করা

প্রয়োজনীয় কাজগুলি সম্পাদন করতে এবং ইন্টারনেট থেকে উত্তরগুলি বের করার জন্য সরঞ্জামগুলি প্রস্তুত হওয়ার সাথে সাথে এজেন্টটিকে কনফিগার করুন৷ দ্য ' উপসর্গ 'ভেরিয়েবলটি কার্যকর করা হয় এজেন্টরা টুলগুলিতে কোন কাজ বরাদ্দ করার আগে এবং ' প্রত্যয় সরঞ্জামগুলি উত্তরটি বের করার পরে কার্যকর করা হয়:

উপসর্গ = '' 'একজন মানুষের সাথে কথোপকথন করুন, নিম্নলিখিত সরঞ্জামগুলি অ্যাক্সেস করে আপনি যতটা পারেন নীচের প্রশ্নের উত্তর দিন:' ''
প্রত্যয় = '' 'শুরু!'
#কাঠামো জন্য এজেন্ট মেমরি ব্যবহার করার সময় টুল ব্যবহার শুরু করতে
{ কথোপকথনের ইতিহাস }
প্রশ্ন : { ইনপুট }
{ agent_scratchpad } '' '

প্রম্পট = ZeroShotAgent.create_prompt(
# প্রশ্নটির প্রেক্ষাপট বুঝতে প্রম্পট টেমপ্লেট কনফিগার করুন
সরঞ্জাম,
উপসর্গ = উপসর্গ,
প্রত্যয়=প্রত্যয়,
input_variables=['
ইনপুট ', ' কথোপকথনের ইতিহাস ', ' agent_scratchpad '],
)

পদ্ধতি 1: ReadOnlyMemory ব্যবহার করা

একবার এজেন্ট টুলগুলি চালানোর জন্য সেট হয়ে গেলে, ReadOnlyMemory সহ মডেল হল পছন্দের উত্তর আনার জন্য চেইন তৈরি এবং চালানোর উপায় এবং প্রক্রিয়াটি নিম্নরূপ:

ধাপ 1: চেইন তৈরি করা

এই পদ্ধতির প্রথম ধাপ হল চেইন এবং নির্বাহক তৈরি করা 'জিরোশট এজেন্ট()' তার যুক্তি সহ। দ্য 'LLMCchain()' llm এবং প্রম্পট আর্গুমেন্ট ব্যবহার করে ভাষা মডেলের সমস্ত চ্যাটের মধ্যে সংযোগ তৈরি করতে ব্যবহৃত হয়। এজেন্ট তার আর্গুমেন্ট হিসাবে llm_chain, টুলস এবং ভার্বোস ব্যবহার করে এবং এজেন্ট_চেইন তৈরি করে মেমরির সাহায্যে এজেন্ট এবং এর টুলস উভয়ই চালাতে:

llm_chain = এলএলএমচেইন ( এলএলএম = OpenAI ( তাপমাত্রা = 0 ) , শীঘ্র = শীঘ্র )
প্রতিনিধি = জিরোশট এজেন্ট ( llm_chain = llm_chain , টুলস = টুলস , ভার্বোস = সত্য )
agent_chain = এজেন্ট এক্সিকিউটর। থেকে_এজেন্ট_এবং_সরঞ্জাম (
প্রতিনিধি = প্রতিনিধি , টুলস = টুলস , ভার্বোস = সত্য , স্মৃতি = স্মৃতি
)

ধাপ 2: চেইন পরীক্ষা করা

কল agent_chain ইন্টারনেট থেকে প্রশ্ন জিজ্ঞাসা করতে run() পদ্ধতি ব্যবহার করে:

agent_chain. চালান ( ইনপুট = 'ল্যাংচেইন কি' )

এজেন্ট অনুসন্ধান টুল ব্যবহার করে ইন্টারনেট থেকে উত্তর বের করেছে:

ব্যবহারকারী এজেন্টের সাথে সংযুক্ত মেমরি পরীক্ষা করার জন্য অস্পষ্ট ফলো-আপ প্রশ্ন জিজ্ঞাসা করতে পারেন:

agent_chain. চালান ( ইনপুট = 'কে এটি বিকাশ করেছে?' )

এজেন্ট প্রশ্নগুলির প্রেক্ষাপট বুঝতে পূর্ববর্তী চ্যাট ব্যবহার করেছেন এবং নিম্নলিখিত স্ক্রিনশটে প্রদর্শিত উত্তরগুলি নিয়ে এসেছেন:

এজেন্ট এজেন্টের মেমরি ব্যবহার করে পূর্বে বের করা সমস্ত উত্তরের সারাংশ বের করতে টুল(সারাংশ_চেইন) ব্যবহার করে:

agent_chain. চালান (
ইনপুট = 'ধন্যবাদ! কথোপকথনটি সংক্ষিপ্ত করুন, আমার 5 বছর বয়সের জন্য'
)

আউটপুট
পূর্বে জিজ্ঞাসিত প্রশ্নের সারসংক্ষেপ নিম্নলিখিত স্ক্রিনশটে 5 বছর বয়সী ব্যক্তির জন্য প্রদর্শিত হয়েছে:

ধাপ 3: মেমরি পরীক্ষা করা

নিম্নলিখিত কোড ব্যবহার করে এতে সংরক্ষিত চ্যাটগুলি বের করতে বাফার মেমরিটি প্রিন্ট করুন:

ছাপা ( agent_chain. স্মৃতি . বাফার )

কোন পরিবর্তন ছাড়াই সঠিক ক্রমে চ্যাটগুলি নিম্নলিখিত স্নিপেটে প্রদর্শিত হয়েছে:

পদ্ধতি 2: এজেন্ট এবং টুল উভয়ের জন্য একই মেমরি ব্যবহার করা

দ্বিতীয় পদ্ধতি যা প্ল্যাটফর্ম দ্বারা সুপারিশ করা হয় না তা হল এজেন্ট এবং সরঞ্জাম উভয়ের জন্য বাফার মেমরি ব্যবহার করা। সরঞ্জামগুলি মেমরিতে সংরক্ষিত চ্যাটগুলি পরিবর্তন করতে পারে যা বড় কথোপকথনে মিথ্যা আউটপুট ফিরিয়ে দিতে পারে:

ধাপ 1: চেইন তৈরি করা

এই সময়ে ReadOnlyMemory যোগ করা হয়নি বলে একটি ছোট পরিবর্তন সহ এজেন্টদের জন্য সরঞ্জাম এবং চেইন তৈরি করতে টেমপ্লেট থেকে সম্পূর্ণ কোড ব্যবহার করে:

টেমপ্লেট = '' 'এটি একটি মানুষ এবং একটি বটের মধ্যে একটি কথোপকথন:

{কথোপকথনের ইতিহাস}

{input}-এর জন্য কথোপকথনের একটি সারসংক্ষেপ লিখুন:
'
''
#চ্যাটের কাঠামো তৈরি করুন ইন্টারফেস চেইনের সাথে মেমরি যোগ করে প্রম্পট টেমপ্লেট ব্যবহার করে
শীঘ্র = প্রম্পট টেমপ্লেট ( input_variables = [ 'ইনপুট' , 'কথোপকথনের ইতিহাস' ] , টেমপ্লেট = টেমপ্লেট )
স্মৃতি = কথোপকথন বাফার মেমরি ( মেমরি_কী = 'কথোপকথনের ইতিহাস' )
summary_chain = এলএলএমচেইন (
এলএলএম = OpenAI ( ) ,
শীঘ্র = শীঘ্র ,
ভার্বোস = সত্য ,
স্মৃতি = স্মৃতি ,
)
# সরঞ্জাম তৈরি করুন ( অনুসন্ধান এবং সারসংক্ষেপ ) জন্য এজেন্ট কনফিগার করা
অনুসন্ধান = SerpAPIWrapper ( )
টুলস = [
টুল (
নাম = 'অনুসন্ধান' ,
ফাংশন = অনুসন্ধান চালান ,
বর্ণনা = 'সাম্প্রতিক ঘটনা সম্পর্কে লক্ষ্যযুক্ত প্রশ্নের যথাযথ প্রতিক্রিয়া' ,
) ,
টুল (
নাম = 'সারসংক্ষেপ' ,
ফাংশন = summary_chain. চালান ,
বর্ণনা = 'চ্যাটের সারাংশ পেতে সহায়ক এবং এই সারাংশ কে পড়বে তা প্রতিনিধিত্ব করে এই টুলটিতে স্ট্রিং ইনপুট প্রয়োজন' ,
) ,
]
# পদক্ষেপগুলি ব্যাখ্যা করুন জন্য এজেন্ট তথ্য বের করার জন্য টুল ব্যবহার করে জন্য চ্যাট
উপসর্গ = '' 'একজন মানুষের সাথে কথোপকথন করুন, নিম্নলিখিত সরঞ্জামগুলি অ্যাক্সেস করে সম্ভাব্য সর্বোত্তম উপায়ে প্রশ্নের উত্তর দিন:' ''
প্রত্যয় = '' 'শুরু!'
#কাঠামো জন্য এজেন্ট মেমরি ব্যবহার করার সময় টুল ব্যবহার শুরু করতে
{ কথোপকথনের ইতিহাস }
প্রশ্ন : { ইনপুট }
{ agent_scratchpad } '' '

প্রম্পট = ZeroShotAgent.create_prompt(
# প্রশ্নটির প্রেক্ষাপট বুঝতে প্রম্পট টেমপ্লেট কনফিগার করুন
সরঞ্জাম,
উপসর্গ = উপসর্গ,
প্রত্যয়=প্রত্যয়,
input_variables=['
ইনপুট ', ' কথোপকথনের ইতিহাস ', ' agent_scratchpad '],
)
# এজেন্ট নির্বাহক তৈরি করার সময় সমস্ত উপাদান একত্রিত করুন
llm_chain = LLMCchain(llm=OpenAI(temperature=0), prompt=prompt)
agent = ZeroShotAgent(llm_chain=llm_chain, tools=tools, verbose=True)
agent_chain = AgentExecutor.from_agent_and_tools(
agent=agent, tools=tools, verbose=True, memory=memory
)

ধাপ 2: চেইন পরীক্ষা করা

নিম্নলিখিত কোড চালান:

agent_chain. চালান ( ইনপুট = 'ল্যাংচেইন কি' )

উত্তরটি সফলভাবে প্রদর্শিত এবং মেমরিতে সংরক্ষণ করা হয়েছে:

অনেক প্রসঙ্গ না দিয়ে ফলো-আপ প্রশ্ন জিজ্ঞাসা করুন:

agent_chain. চালান ( ইনপুট = 'কে এটি বিকাশ করেছে?' )

এজেন্ট এটিকে রূপান্তরিত করে প্রশ্ন বোঝার জন্য মেমরি ব্যবহার করে এবং তারপর উত্তরটি প্রিন্ট করে:

এজেন্টের সাথে সংযুক্ত মেমরি ব্যবহার করে চ্যাটের সারাংশ পান:

agent_chain. চালান (
ইনপুট = 'ধন্যবাদ! কথোপকথনটি সংক্ষিপ্ত করুন, আমার 5 বছর বয়সের জন্য'
)

আউটপুট
সারাংশটি সফলভাবে বের করা হয়েছে, এবং এখন পর্যন্ত সবকিছু একই বলে মনে হচ্ছে কিন্তু পরবর্তী ধাপে পরিবর্তন আসে:

ধাপ 3: মেমরি পরীক্ষা করা

নিম্নলিখিত কোড ব্যবহার করে মেমরি থেকে চ্যাট বার্তাগুলি বের করা হচ্ছে:

ছাপা ( agent_chain. স্মৃতি . বাফার )

টুলটি অন্য একটি প্রশ্ন যোগ করে ইতিহাস পরিবর্তন করেছে যা মূলত জিজ্ঞাসা করা হয়নি। মডেলটি a ব্যবহার করে প্রশ্নটি বোঝে বলে এটি ঘটে স্ব-জিজ্ঞাসা প্রশ্ন টুলটি ভুলভাবে মনে করে যে এটি ব্যবহারকারীর দ্বারা জিজ্ঞাসা করা হয়েছে এবং এটি একটি পৃথক ক্যোয়ারী হিসাবে বিবেচনা করে। সুতরাং এটি মেমরিতে অতিরিক্ত প্রশ্ন যুক্ত করে যা তারপর কথোপকথনের প্রসঙ্গ পেতে ব্যবহার করা হবে:

এখন এ পর্যন্তই.

উপসংহার

LangChain-এ একটি এজেন্ট এবং এর সরঞ্জাম উভয়ের সাথে মেমরি যোগ করতে, তাদের নির্ভরতা পেতে এবং তাদের থেকে লাইব্রেরি আমদানি করতে মডিউলগুলি ইনস্টল করুন। এর পরে, মেমরি যোগ করার জন্য কথোপকথন মেমরি, ভাষা মডেল, সরঞ্জাম এবং এজেন্ট তৈরি করুন। দ্য প্রস্তাবিত পদ্ধতি মেমরি যোগ করার জন্য এজেন্টে ReadOnlyMemory ব্যবহার করা হয় এবং চ্যাট ইতিহাস সংরক্ষণ করার জন্য এর সরঞ্জামগুলি। ব্যবহারকারী ব্যবহার করতে পারেন কথোপকথন স্মৃতি এজেন্ট এবং সরঞ্জাম উভয়ের জন্য। কিন্তু, তারা পায় বিভ্রান্ত কখনও কখনও এবং মেমরি চ্যাট পরিবর্তন.