LangChain இல் ஒரு முகவர் மற்றும் அதன் கருவிகள் இரண்டிலும் நினைவகத்தை எவ்வாறு சேர்ப்பது?

Langchain Il Oru Mukavar Marrum Atan Karuvikal Irantilum Ninaivakattai Evvaru Cerppatu



பயனருக்கான தகவலைப் பிரித்தெடுக்கும் செயல்முறையைக் கட்டுப்படுத்த முகவர்களை உருவாக்குவதற்கு தேவையான அனைத்து கருவிகளையும் LangChain வழங்குகிறது. வெவ்வேறு கருவிகளைப் பயன்படுத்தி பணிகளை நிர்வகிப்பதால், முகவரை உருவாக்க இந்தக் கருவிகள் அவசியம். முகவர்கள் இந்த கருவிகளைக் கையாளவும், படிகள் மூலம் வேலை செய்யவும் மற்றும் அனைத்து செயல்பாடுகளையும் செயல்படுத்தவும். வேலைக்கு எந்தக் கருவி தேவை என்பதையும், குறிப்பிட்ட பணிக்கு எப்போது அதை ஒதுக்க வேண்டும் என்பதையும் அது அறியும்.

விரைவான அவுட்லைன்

இந்த இடுகை பின்வருவனவற்றை நிரூபிக்கும்:

LangChain இல் ஒரு முகவர் மற்றும் அதன் கருவிகள் இரண்டிலும் நினைவகத்தை எவ்வாறு சேர்ப்பது?

முகவர்கள் மற்றும் கருவிகளுக்கு நினைவகத்தைச் சேர்ப்பது மாதிரியின் அரட்டை வரலாற்றைப் பயன்படுத்தும் திறனுடன் சிறப்பாகச் செயல்பட அவர்களுக்கு உதவுகிறது. நினைவகத்துடன், எந்த கருவியை எப்போது பயன்படுத்த வேண்டும் என்பதை முகவர் திறமையாக தீர்மானிக்க முடியும். இதைப் பயன்படுத்துவது விரும்பத்தக்கது ' படிக்க மட்டும் நினைவகம் ” முகவர்கள் மற்றும் கருவிகள் இரண்டிற்கும், அதனால் அவர்களால் அதை மாற்ற முடியாது. LangChain இல் உள்ள முகவர்கள் மற்றும் கருவிகள் இரண்டிற்கும் நினைவகத்தைச் சேர்க்கும் செயல்முறையை அறிய, பட்டியலிடப்பட்ட படிகளைப் பின்பற்றவும்:







படி 1: கட்டமைப்புகளை நிறுவுதல்

முதலில், நிறுவவும் langchain-சோதனை மொழி மாதிரிகள் மற்றும் முகவருக்கான கருவிகளை உருவாக்குவதற்கான அதன் சார்புகளைப் பெறுவதற்கு தொகுதி. LangChain சோதனையானது பெரும்பாலும் சோதனைகள் மற்றும் சோதனைகளுக்குப் பயன்படுத்தப்படும் மாதிரிகளை உருவாக்குவதற்கான சார்புகளைப் பெறும் தொகுதி ஆகும்:



pip நிறுவல் langchain - சோதனைக்குரிய



கிடைக்கும் google-search-results இணையத்திலிருந்து மிகவும் பொருத்தமான பதில்களைப் பெற OpenAI சார்புகளைக் கொண்ட தொகுதிகள்:





pip நிறுவு openai google - தேடல் - முடிவுகள்

படி 2: சூழலை அமைத்தல்

இணையத்தில் இருந்து பதில்களைப் பெறும் மாதிரியை உருவாக்க, அதை பயன்படுத்தி சூழல்களை அமைக்க வேண்டும் OpenAI மற்றும் SerpAPi விசைகள்:



இறக்குமதி நீ
இறக்குமதி கெட்பாஸ்

நீ. தோராயமாக [ 'OPENAI_API_KEY' ] = கெட்பாஸ். கெட்பாஸ் ( 'OpenAI API விசை:' )
நீ. தோராயமாக [ 'SERPAPI_API_KEY' ] = கெட்பாஸ். கெட்பாஸ் ( 'Serpapi API விசை:' )

படி 3: நூலகங்களை இறக்குமதி செய்தல்

சூழல்களை அமைத்த பிறகு, முகவருக்கான கருவிகளை உருவாக்க நூலகங்களை இறக்குமதி செய்யவும் மற்றும் அவற்றுடன் ஒருங்கிணைக்க கூடுதல் நினைவகத்தை உருவாக்கவும். பின்வரும் குறியீடு முகவர்கள், நினைவகம், எல்.எல்.எம்., சங்கிலிகள், தூண்டுதல்கள் மற்றும் பயன்பாடுகளை தேவையான நூலகங்களைப் பெற பயன்படுத்துகிறது:

லாங்செயினில் இருந்து. முகவர்கள் இறக்குமதி ZeroShotAgent , கருவி , முகவர் நிறைவேற்றுபவர்
லாங்செயினில் இருந்து. நினைவு இறக்குமதி உரையாடல் தாங்கல் நினைவகம் , படிக்க மட்டும் பகிரப்பட்ட நினைவகம்
லாங்செயினில் இருந்து. llms இறக்குமதி OpenAI
#நூலகத்தைப் பெறுங்கள் க்கான LangChain ஐப் பயன்படுத்தி சங்கிலியை உருவாக்குதல்
லாங்செயினில் இருந்து. சங்கிலிகள் இறக்குமதி எல்எல்எம்செயின்
லாங்செயினில் இருந்து. தூண்டுகிறது இறக்குமதி PromptTemplate
#நூலகத்தைப் பெறுங்கள் க்கான இணையத்திலிருந்து தகவல்களைப் பெறுதல்
லாங்செயினில் இருந்து. பயன்பாடுகள் இறக்குமதி SerpAPIWrapper

படி 4: ReadOnlyMemory ஐச் சேர்த்தல்

பயனர் உள்ளீட்டை வழங்கியவுடன், முகவர் பணிகளைத் தொடங்குவதற்கு டெம்ப்ளேட்டை உள்ளமைக்கவும். அதன் பிறகு, சேர்க்கவும் “உரையாடல் பஃபர் நினைவகம்()” மாதிரியின் அரட்டை வரலாற்றைச் சேமித்து, துவக்கவும் “படிக்க மட்டும் நினைவகம்” முகவர்கள் மற்றும் அதன் கருவிகளுக்கு:

டெம்ப்ளேட் = '' 'இது ஒரு மனிதனுக்கும் ஒரு போட்க்கும் இடையிலான உரையாடல்:

{chat_history}
#துல்லியமான மற்றும் எளிதான சுருக்கத்தைப் பிரித்தெடுப்பதற்கான கட்டமைப்பை அமைக்கவும்
{input} க்கான அரட்டையைச் சுருக்கவும்:
'
''

உடனடியாக = PromptTemplate ( உள்ளீடு_மாறிகள் = [ 'உள்ளீடு' , 'அரட்டை_வரலாறு' ] , டெம்ப்ளேட் = டெம்ப்ளேட் )
நினைவு = உரையாடல் தாங்கல் நினைவகம் ( நினைவகம்_விசை = 'அரட்டை_வரலாறு' )
படிக்க மட்டுமே நினைவகம் = படிக்க மட்டும் பகிரப்பட்ட நினைவகம் ( நினைவு = நினைவு )
அனைத்து கூறுகளையும் ஒருங்கிணைக்க #சுருக்க சங்கிலி க்கான உரையாடலின் சுருக்கத்தைப் பெறுதல்
சுருக்கம்_சங்கிலி = எல்எல்எம்செயின் (
llm = OpenAI ( ) ,
உடனடியாக = உடனடியாக ,
வாய்மொழி = உண்மை ,
நினைவு = படிக்க மட்டுமே நினைவகம் ,
)

படி 5: கருவிகளை அமைத்தல்

இப்போது, ​​அரட்டையின் சுருக்கத்துடன் இணையத்திலிருந்து பதிலைப் பெற தேடல் மற்றும் சுருக்கம் போன்ற கருவிகளை அமைக்கவும்:

தேடல் = SerpAPIWrapper ( )
கருவிகள் = [
கருவி (
பெயர் = 'தேடல்' ,
செயல்பாடு = தேடல். ஓடு ,
விளக்கம் = 'சமீபத்திய நிகழ்வுகள் பற்றிய இலக்கு வினவல்களுக்கு சரியான பதில்கள்' ,
) ,
கருவி (
பெயர் = 'சுருக்கம்' ,
செயல்பாடு = சுருக்கம்_சங்கிலி. ஓடு ,
விளக்கம் = 'அரட்டையை சுருக்கவும், இந்த கருவிக்கான உள்ளீடு இந்த சுருக்கத்தை யார் படிக்க வேண்டும் என்பதைக் குறிக்கும் சரமாக இருக்க வேண்டும்' ,
) ,
]

படி 6: முகவரை உருவாக்குதல்

தேவையான பணிகளைச் செய்வதற்கும், இணையத்திலிருந்து பதில்களைப் பிரித்தெடுப்பதற்கும் கருவிகள் தயாரானவுடன் முகவரை உள்ளமைக்கவும். ' முன்னொட்டு முகவர்கள் எந்தப் பணியையும் கருவிகளுக்கு வழங்குவதற்கு முன் ' மாறி செயல்படுத்தப்படும். பின்னொட்டு ” கருவிகள் பதிலைப் பிரித்தெடுத்த பிறகு செயல்படுத்தப்படுகிறது:

முன்னொட்டு = '' 'ஒரு மனிதருடன் உரையாடுங்கள், பின்வரும் கருவிகளை அணுகுவதன் மூலம் பின்வரும் கேள்விகளுக்கு உங்களால் முடிந்தவரை சிறந்த முறையில் பதிலளிக்கவும்:' ''
பின்னொட்டு = '' 'ஆரம்பம்!'
#கட்டமைப்பு க்கான நினைவகத்தைப் பயன்படுத்தும் போது கருவிகளைப் பயன்படுத்தத் தொடங்கும் முகவர்
{ அரட்டை_வரலாறு }
கேள்வி : { உள்ளீடு }
{ முகவர்_ஸ்கிராட்ச்பேட் } '' '

prompt = ZeroShotAgent.create_prompt(
#கேள்வியின் சூழலைப் புரிந்துகொள்ள, உடனடி வார்ப்புருக்களை உள்ளமைக்கவும்
கருவிகள்,
முன்னொட்டு = முன்னொட்டு,
பின்னொட்டு = பின்னொட்டு,
input_variables=['
உள்ளீடு ',' அரட்டை_வரலாறு ',' முகவர்_ஸ்கிராட்ச்பேட் '],
)

முறை 1: ReadOnlyMemory ஐப் பயன்படுத்துதல்

கருவிகளை இயக்க முகவர் அமைக்கப்பட்டவுடன், ReadOnlyMemory உடன் மாதிரியானது விருப்பமான பதில்களைப் பெற சங்கிலிகளை உருவாக்க மற்றும் செயல்படுத்தும் வழி மற்றும் செயல்முறை பின்வருமாறு:

படி 1: சங்கிலியை உருவாக்குதல்

இந்த முறையின் முதல் படி, சங்கிலி மற்றும் செயல்படுத்துபவரை உருவாக்குவது 'ZeroShotAgent()' அதன் வாதங்களுடன். தி “எல்எல்எம்செயின்()” llm மற்றும் உடனடி வாதங்களைப் பயன்படுத்தி மொழி மாதிரியில் உள்ள அனைத்து அரட்டைகளுக்கும் இடையே இணைப்பை உருவாக்க பயன்படுகிறது. முகவர் llm_chain, கருவிகள் மற்றும் verbose ஐ அதன் வாதமாகப் பயன்படுத்துகிறது மற்றும் முகவர் மற்றும் அதன் கருவிகள் இரண்டையும் நினைவகத்துடன் செயல்படுத்த agent_chain ஐ உருவாக்குகிறது:

llm_செயின் = எல்எல்எம்செயின் ( llm = OpenAI ( வெப்ப நிலை = 0 ) , உடனடியாக = உடனடியாக )
முகவர் = ZeroShotAgent ( llm_செயின் = llm_செயின் , கருவிகள் = கருவிகள் , வாய்மொழி = உண்மை )
முகவர்_செயின் = முகவர் நிறைவேற்றுபவர். முகவர்_மற்றும்_கருவிகள் (
முகவர் = முகவர் , கருவிகள் = கருவிகள் , வாய்மொழி = உண்மை , நினைவு = நினைவு
)

படி 2: சங்கிலியை சோதித்தல்

அழைக்கவும் முகவர்_செயின் ரன்() முறையைப் பயன்படுத்தி இணையத்தில் இருந்து கேள்வி கேட்க:

முகவர்_செயின். ஓடு ( உள்ளீடு = 'லாங்செயின் என்றால் என்ன' )

முகவர் தேடல் கருவிகளைப் பயன்படுத்தி இணையத்திலிருந்து பதிலைப் பிரித்தெடுத்தார்:

ஏஜெண்டுடன் இணைக்கப்பட்ட நினைவகத்தை சோதிக்க பயனர் தெளிவற்ற பின்தொடர்தல் கேள்வியைக் கேட்கலாம்:

முகவர்_செயின். ஓடு ( உள்ளீடு = 'அதை உருவாக்கியது யார்?' )

ஏஜென்ட் முந்தைய அரட்டையைப் பயன்படுத்தி கேள்விகளின் சூழலைப் புரிந்துகொண்டு, பின்வரும் ஸ்கிரீன்ஷாட்டில் காட்டப்பட்டுள்ளபடி பதில்களைப் பெற்றுள்ளார்:

முகவரின் நினைவகத்தைப் பயன்படுத்தி முன்னர் பிரித்தெடுக்கப்பட்ட அனைத்து பதில்களின் சுருக்கத்தைப் பிரித்தெடுக்க, முகவர் கருவியைப் (சுருக்க_செயின்) பயன்படுத்துகிறார்:

முகவர்_செயின். ஓடு (
உள்ளீடு = 'நன்றி! எனது 5 வயதுக்கான உரையாடலைச் சுருக்கவும்'
)

வெளியீடு
பின்வரும் ஸ்கிரீன்ஷாட்டில் 5 வயது குழந்தைக்கு முன்பு கேட்கப்பட்ட கேள்விகளின் சுருக்கம் காட்டப்பட்டுள்ளது:

படி 3: நினைவகத்தை சோதித்தல்

பின்வரும் குறியீட்டைப் பயன்படுத்தி அதில் சேமிக்கப்பட்டுள்ள அரட்டைகளைப் பிரித்தெடுக்க, இடையக நினைவகத்தை அச்சிடவும்:

அச்சு ( முகவர்_செயின். நினைவு . தாங்கல் )

எந்த மாற்றமும் இல்லாமல் சரியான வரிசையில் அரட்டைகள் பின்வரும் துணுக்கில் காட்டப்பட்டுள்ளன:

முறை 2: முகவர் மற்றும் கருவிகள் இரண்டிற்கும் ஒரே நினைவகத்தைப் பயன்படுத்துதல்

தளத்தால் பரிந்துரைக்கப்படாத இரண்டாவது முறை முகவர்கள் மற்றும் கருவிகள் இரண்டிற்கும் இடையக நினைவகத்தைப் பயன்படுத்துகிறது. கருவிகள் நினைவகத்தில் சேமிக்கப்பட்ட அரட்டைகளை மாற்றலாம், இது பெரிய உரையாடல்களில் தவறான வெளியீடுகளை வழங்கலாம்:

படி 1: சங்கிலியை உருவாக்குதல்

இந்த முறை ReadOnlyMemory சேர்க்கப்படாததால், டெம்ப்ளேட்டிலிருந்து முழுமையான குறியீட்டைப் பயன்படுத்தி முகவர்களுக்கான கருவிகள் மற்றும் சங்கிலிகளை சிறிய மாற்றத்துடன் உருவாக்கவும்:

டெம்ப்ளேட் = '' 'இது ஒரு மனிதனுக்கும் ஒரு போட்க்கும் இடையிலான உரையாடல்:

{chat_history}

{input}க்கான உரையாடலின் சுருக்கத்தை எழுதவும்:
'
''
#அரட்டையின் கட்டமைப்பை உருவாக்கவும் இடைமுகம் சங்கிலியுடன் நினைவகத்தைச் சேர்ப்பதன் மூலம் ப்ராம்ட் டெம்ப்ளேட்டைப் பயன்படுத்துதல்
உடனடியாக = PromptTemplate ( உள்ளீடு_மாறிகள் = [ 'உள்ளீடு' , 'அரட்டை_வரலாறு' ] , டெம்ப்ளேட் = டெம்ப்ளேட் )
நினைவு = உரையாடல் தாங்கல் நினைவகம் ( நினைவகம்_விசை = 'அரட்டை_வரலாறு' )
சுருக்கம்_சங்கிலி = எல்எல்எம்செயின் (
llm = OpenAI ( ) ,
உடனடியாக = உடனடியாக ,
வாய்மொழி = உண்மை ,
நினைவு = நினைவு ,
)
#கருவிகளை உருவாக்குங்கள் ( தேடல் மற்றும் சுருக்கம் ) க்கான முகவர்களை கட்டமைத்தல்
தேடல் = SerpAPIWrapper ( )
கருவிகள் = [
கருவி (
பெயர் = 'தேடல்' ,
செயல்பாடு = தேடல். ஓடு ,
விளக்கம் = 'சமீபத்திய நிகழ்வுகள் பற்றிய இலக்கு வினவல்களுக்கு சரியான பதில்கள்' ,
) ,
கருவி (
பெயர் = 'சுருக்கம்' ,
செயல்பாடு = சுருக்கம்_சங்கிலி. ஓடு ,
விளக்கம் = 'அரட்டையின் சுருக்கத்தைப் பெற உதவியாக இருக்கும், மேலும் இந்த சுருக்கத்தை யார் படிக்க வேண்டும் என்பதைக் குறிக்கும் இந்த கருவியில் சரம் உள்ளீடு தேவை' ,
) ,
]
#படிகளை விளக்குங்கள் க்கான தகவலைப் பிரித்தெடுக்க கருவிகளைப் பயன்படுத்தும் முகவர் க்கான அரட்டை
முன்னொட்டு = '' 'ஒரு மனிதருடன் உரையாடுங்கள், பின்வரும் கருவிகளை அணுகுவதன் மூலம் கேள்விகளுக்கு சிறந்த முறையில் பதிலளிக்கவும்:' ''
பின்னொட்டு = '' 'ஆரம்பம்!'
#கட்டமைப்பு க்கான நினைவகத்தைப் பயன்படுத்தும் போது கருவிகளைப் பயன்படுத்தத் தொடங்கும் முகவர்
{ அரட்டை_வரலாறு }
கேள்வி : { உள்ளீடு }
{ முகவர்_ஸ்கிராட்ச்பேட் } '' '

prompt = ZeroShotAgent.create_prompt(
#கேள்வியின் சூழலைப் புரிந்துகொள்ள, உடனடி வார்ப்புருக்களை உள்ளமைக்கவும்
கருவிகள்,
முன்னொட்டு = முன்னொட்டு,
பின்னொட்டு = பின்னொட்டு,
input_variables=['
உள்ளீடு ',' அரட்டை_வரலாறு ',' முகவர்_ஸ்கிராட்ச்பேட் '],
)
#ஏஜென்ட் எக்ஸிகியூட்டரை உருவாக்கும்போது அனைத்து கூறுகளையும் ஒருங்கிணைக்கவும்
llm_chain = LLMCchain(llm=OpenAI(வெப்பநிலை=0), prompt=prompt)
முகவர் = ZeroShotAgent(llm_chain=llm_chain, tools=tools, verbose=True)
agent_chain = AgentExecutor.from_agent_and_tools(
முகவர் = முகவர், கருவிகள் = கருவிகள், verbose = உண்மை, நினைவகம் = நினைவகம்
)

படி 2: சங்கிலியை சோதித்தல்

பின்வரும் குறியீட்டை இயக்கவும்:

முகவர்_செயின். ஓடு ( உள்ளீடு = 'லாங்செயின் என்றால் என்ன' )

பதில் வெற்றிகரமாகக் காட்டப்பட்டு நினைவகத்தில் சேமிக்கப்படுகிறது:

அதிகமான சூழலைக் கொடுக்காமல் பின்தொடர்தல் கேள்வியைக் கேளுங்கள்:

முகவர்_செயின். ஓடு ( உள்ளீடு = 'அதை உருவாக்கியது யார்?' )

முகவர் நினைவகத்தைப் பயன்படுத்தி கேள்வியைப் புரிந்துகொண்டு அதை மாற்றுவதன் மூலம் பதிலை அச்சிடுகிறார்:

முகவருடன் இணைக்கப்பட்ட நினைவகத்தைப் பயன்படுத்தி அரட்டையின் சுருக்கத்தைப் பெறவும்:

முகவர்_செயின். ஓடு (
உள்ளீடு = 'நன்றி! எனது 5 வயதுக்கான உரையாடலைச் சுருக்கவும்'
)

வெளியீடு
சுருக்கம் வெற்றிகரமாகப் பிரித்தெடுக்கப்பட்டது, இப்போது வரை அனைத்தும் ஒரே மாதிரியாக இருப்பதாகத் தெரிகிறது, ஆனால் அடுத்த கட்டத்தில் மாற்றம் வரும்:

படி 3: நினைவகத்தை சோதித்தல்

பின்வரும் குறியீட்டைப் பயன்படுத்தி அரட்டை செய்திகளை நினைவகத்திலிருந்து பிரித்தெடுத்தல்:

அச்சு ( முகவர்_செயின். நினைவு . தாங்கல் )

முதலில் கேட்கப்படாத மற்றொரு கேள்வியைச் சேர்ப்பதன் மூலம் கருவி வரலாற்றை மாற்றியமைத்துள்ளது. a ஐப் பயன்படுத்தி கேள்வியை மாதிரி புரிந்துகொள்வதால் இது நிகழ்கிறது சுய-கேள்வி கேள்வி. பயனரால் கேட்கப்பட்டதாகக் கருவி தவறாக நினைத்து, அதை ஒரு தனி வினவலாகக் கருதுகிறது. எனவே இது அந்த கூடுதல் கேள்வியை நினைவகத்தில் சேர்க்கிறது மேலும் இது உரையாடலின் சூழலைப் பெற பயன்படுகிறது:

இப்பொழுது இத்துடன் நிறைவடைகிறது.

முடிவுரை

LangChain இல் உள்ள முகவர் மற்றும் அதன் கருவிகள் இரண்டிற்கும் நினைவகத்தைச் சேர்க்க, தொகுதிகளை நிறுவி அவற்றின் சார்புகளைப் பெறவும் மற்றும் நூலகங்களை இறக்குமதி செய்யவும். அதன் பிறகு, உரையாடல் நினைவகம், மொழி மாதிரி, கருவிகள் மற்றும் நினைவகத்தைச் சேர்ப்பதற்கான முகவர் ஆகியவற்றை உருவாக்கவும். தி பரிந்துரைக்கப்பட்ட முறை நினைவகத்தைச் சேர்க்க, முகவருக்கு ReadOnlyMemory மற்றும் அரட்டை வரலாற்றைச் சேமிக்க அதன் கருவிகளைப் பயன்படுத்துகிறது. பயனரும் பயன்படுத்தலாம் உரையாடல் நினைவகம் முகவர்கள் மற்றும் கருவிகள் இரண்டிற்கும். ஆனால், அவர்கள் பெறுகிறார்கள் குழப்பமான சில நேரங்களில் மற்றும் நினைவகத்தில் அரட்டைகளை மாற்றவும்.