లాంగ్‌చెయిన్‌లో ఏజెంట్ మరియు దాని సాధనాలు రెండింటికీ మెమరీని ఎలా జోడించాలి?

Lang Ceyin Lo Ejent Mariyu Dani Sadhanalu Rendintiki Memarini Ela Jodincali



LangChain వినియోగదారు కోసం సమాచారాన్ని సంగ్రహించే ప్రక్రియను నియంత్రించడానికి ఏజెంట్‌లను రూపొందించడానికి అవసరమైన అన్ని సాధనాలను అందిస్తుంది. ఏజెంట్‌ను రూపొందించడానికి ఈ సాధనాలు అవసరం, ఎందుకంటే వారు వివిధ సాధనాలను ఉపయోగించి పనులను నిర్వహిస్తారు. దశల ద్వారా పని చేయడానికి మరియు అన్ని కార్యకలాపాలను అమలు చేయడానికి ఏజెంట్లు కూడా ఈ సాధనాలను తారుమారు చేస్తారు. ఉద్యోగం కోసం ఏ సాధనం అవసరమో మరియు నిర్దిష్ట పనికి దానిని ఎప్పుడు కేటాయించాలో దానికి తెలుసు.

త్వరిత రూపురేఖలు

ఈ పోస్ట్ క్రింది వాటిని ప్రదర్శిస్తుంది:

లాంగ్‌చెయిన్‌లో ఏజెంట్ మరియు దాని సాధనాలు రెండింటికీ మెమరీని ఎలా జోడించాలి?

ఏజెంట్లు మరియు సాధనాలకు మెమరీని జోడించడం వలన మోడల్ యొక్క చాట్ చరిత్రను ఉపయోగించగల సామర్థ్యంతో మెరుగ్గా పని చేయడానికి వాటిని అనుమతిస్తుంది. మెమరీతో, ఏజెంట్ ఏ టూల్‌ను ఎప్పుడు ఉపయోగించాలో సమర్ధవంతంగా నిర్ణయించవచ్చు. ఇది ఉపయోగించడానికి ప్రాధాన్యతనిస్తుంది ' చదవడానికి మాత్రమే మెమరీ ” ఏజెంట్లు మరియు టూల్స్ రెండింటికీ కాబట్టి వారు దానిని సవరించలేరు. LangChainలో ఏజెంట్లు మరియు సాధనాలు రెండింటికీ మెమరీని జోడించే ప్రక్రియను తెలుసుకోవడానికి, జాబితా చేయబడిన దశలను అనుసరించండి:







దశ 1: ఫ్రేమ్‌వర్క్‌లను ఇన్‌స్టాల్ చేయడం

అన్నింటిలో మొదటిది, ఇన్‌స్టాల్ చేయండి langchain-ప్రయోగాత్మక ఏజెంట్ కోసం భాషా నమూనాలు మరియు సాధనాలను రూపొందించడానికి దాని డిపెండెన్సీలను పొందడానికి మాడ్యూల్. LangChain ప్రయోగాత్మకం అనేది ప్రయోగాలు మరియు పరీక్షల కోసం ఎక్కువగా ఉపయోగించే మోడల్‌లను నిర్మించడానికి డిపెండెన్సీలను పొందే మాడ్యూల్:



పిప్ ఇన్‌స్టాల్ లాంగ్‌చెయిన్ - ప్రయోగాత్మకమైన



తీసుకురా గూగుల్-సెర్చ్-ఫలితాలు ఇంటర్నెట్ నుండి అత్యంత సంబంధిత సమాధానాలను పొందడానికి OpenAI డిపెండెన్సీలతో మాడ్యూల్స్:





పిప్ ఇన్‌స్టాల్ ఓపెన్ చేయండి గూగుల్ - వెతకండి - ఫలితాలు

దశ 2: పర్యావరణాలను ఏర్పాటు చేయడం

ఇంటర్నెట్ నుండి సమాధానాలను పొందే మోడల్‌ను రూపొందించడానికి, దీన్ని ఉపయోగించి పరిసరాలను సెటప్ చేయడం అవసరం OpenAI మరియు SerpAPi కీలు:



దిగుమతి మీరు
దిగుమతి getpass

మీరు. సుమారు [ 'OPENAI_API_KEY' ] = getpass. getpass ( 'OpenAI API కీ:' )
మీరు. సుమారు [ 'SERPAPI_API_KEY' ] = getpass. getpass ( 'Serpapi API కీ:' )

దశ 3: లైబ్రరీలను దిగుమతి చేసుకోవడం

ఎన్విరాన్మెంట్లను సెటప్ చేసిన తర్వాత, ఏజెంట్ కోసం సాధనాలను మరియు వాటితో ఏకీకృతం చేయడానికి అదనపు మెమరీని రూపొందించడానికి లైబ్రరీలను దిగుమతి చేయండి. కింది కోడ్ అవసరమైన లైబ్రరీలను పొందడానికి ఏజెంట్లు, మెమరీ, llms, చైన్‌లు, ప్రాంప్ట్‌లు మరియు యుటిలిటీలను ఉపయోగిస్తుంది:

లాంగ్‌చెయిన్ నుండి. ఏజెంట్లు దిగుమతి ZeroShotAgent , సాధనం , ఏజెంట్ ఎగ్జిక్యూటర్
లాంగ్‌చెయిన్ నుండి. జ్ఞాపకశక్తి దిగుమతి సంభాషణబఫర్ మెమరీ , చదవడానికి మాత్రమే షేర్డ్ మెమరీ
లాంగ్‌చెయిన్ నుండి. llms దిగుమతి OpenAI
#లైబ్రరీని పొందండి కోసం LangChain ఉపయోగించి గొలుసును నిర్మించడం
లాంగ్‌చెయిన్ నుండి. గొలుసులు దిగుమతి LLMCచైన్
లాంగ్‌చెయిన్ నుండి. అడుగుతుంది దిగుమతి ప్రాంప్ట్ టెంప్లేట్
#లైబ్రరీని పొందండి కోసం ఇంటర్నెట్ నుండి సమాచారాన్ని పొందడం
లాంగ్‌చెయిన్ నుండి. వినియోగాలు దిగుమతి SerpAPIWrapper

దశ 4: ReadOnlyMemoryని జోడించడం

వినియోగదారు ఇన్‌పుట్‌ను అందించిన వెంటనే విధులను ప్రారంభించడం కోసం ఏజెంట్ కోసం టెంప్లేట్‌ను కాన్ఫిగర్ చేయండి. ఆ తరువాత, జోడించండి “సంభాషణ బఫర్ మెమరీ()” మోడల్ యొక్క చాట్ చరిత్రను నిల్వ చేయడానికి మరియు ప్రారంభించేందుకు “చదవడానికి మాత్రమే మెమరీ” ఏజెంట్లు మరియు దాని సాధనాల కోసం:

టెంప్లేట్ = '' 'ఇది మానవుడు మరియు బోట్ మధ్య సంభాషణ:

{chat_history}
#ఖచ్చితమైన మరియు సులభమైన సారాంశాన్ని సంగ్రహించడానికి నిర్మాణాన్ని సెట్ చేయండి
{ఇన్‌పుట్} కోసం చాట్‌ని సంగ్రహించండి:
'
''

ప్రాంప్ట్ = ప్రాంప్ట్ టెంప్లేట్ ( ఇన్‌పుట్_వేరియబుల్స్ = [ 'ఇన్‌పుట్' , 'చాట్_చరిత్ర' ] , టెంప్లేట్ = టెంప్లేట్ )
జ్ఞాపకశక్తి = సంభాషణబఫర్ మెమరీ ( మెమరీ_కీ = 'చాట్_చరిత్ర' )
చదవడానికి మాత్రమే మెమరీ = చదవడానికి మాత్రమే షేర్డ్ మెమరీ ( జ్ఞాపకశక్తి = జ్ఞాపకశక్తి )
అన్ని భాగాలను ఏకీకృతం చేయడానికి #సారాంశ గొలుసు కోసం సంభాషణ యొక్క సారాంశాన్ని పొందడం
సారాంశం_గొలుసు = LLMCచైన్ (
llm = OpenAI ( ) ,
ప్రాంప్ట్ = ప్రాంప్ట్ ,
మాటలతో కూడిన = నిజమే ,
జ్ఞాపకశక్తి = చదవడానికి మాత్రమే మెమరీ ,
)

దశ 5: సాధనాలను సెటప్ చేయడం

ఇప్పుడు, చాట్ సారాంశంతో పాటు ఇంటర్నెట్ నుండి సమాధానాన్ని పొందడానికి శోధన మరియు సారాంశం వంటి సాధనాలను సెటప్ చేయండి:

వెతకండి = SerpAPIWrapper ( )
ఉపకరణాలు = [
సాధనం (
పేరు = 'వెతకండి' ,
ఫంక్ = వెతకండి. పరుగు ,
వివరణ = 'ఇటీవలి సంఘటనల గురించి లక్ష్యంగా చేసుకున్న ప్రశ్నలకు సరైన ప్రతిస్పందనలు' ,
) ,
సాధనం (
పేరు = 'సారాంశం' ,
ఫంక్ = సారాంశం_గొలుసు. పరుగు ,
వివరణ = 'చాట్‌ను సారాంశం చేయడానికి సహాయకరంగా ఉంటుంది మరియు ఈ సాధనానికి ఇన్‌పుట్ స్ట్రింగ్‌గా ఉండాలి, ఈ సారాంశాన్ని ఎవరు చదవాలి అని సూచిస్తుంది' ,
) ,
]

దశ 6: ఏజెంట్‌ను నిర్మించడం

అవసరమైన పనులను నిర్వహించడానికి మరియు ఇంటర్నెట్ నుండి సమాధానాలను సేకరించేందుకు సాధనాలు సిద్ధంగా ఉన్న వెంటనే ఏజెంట్‌ను కాన్ఫిగర్ చేయండి. ది ' ఉపసర్గ ఏజెంట్లు టూల్స్‌కు ఏదైనా పనిని కేటాయించే ముందు ” వేరియబుల్ అమలు చేయబడుతుంది మరియు “ ప్రత్యయం సాధనాలు సమాధానాన్ని సంగ్రహించిన తర్వాత ” అమలు చేయబడుతుంది:

ఉపసర్గ = '' 'ఈ క్రింది సాధనాలను యాక్సెస్ చేయడం ద్వారా మీరు చేయగలిగినంత ఉత్తమంగా క్రింది ప్రశ్నలకు సమాధానమివ్వడం ద్వారా మానవుడితో సంభాషణను నిర్వహించండి: ''
ప్రత్యయం = '' 'ప్రారంభించండి!'
#నిర్మాణం కోసం మెమరీని ఉపయోగిస్తున్నప్పుడు సాధనాలను ఉపయోగించడం ప్రారంభించే ఏజెంట్
{ చాట్_చరిత్ర }
ప్రశ్న : { ఇన్పుట్ }
{ ఏజెంట్_స్క్రాచ్‌ప్యాడ్ } '' '

ప్రాంప్ట్ = ZeroShotAgent.create_prompt(
#ప్రశ్న యొక్క సందర్భాన్ని అర్థం చేసుకోవడానికి ప్రాంప్ట్ టెంప్లేట్‌లను కాన్ఫిగర్ చేయండి
సాధనాలు,
ఉపసర్గ = ఉపసర్గ,
ప్రత్యయం=ప్రత్యయం,
input_variables=['
ఇన్పుట్ ',' చాట్_చరిత్ర ',' ఏజెంట్_స్క్రాచ్‌ప్యాడ్ '],
)

విధానం 1: ReadOnlyMemoryని ఉపయోగించడం

సాధనాలను అమలు చేయడానికి ఏజెంట్ సెట్ చేయబడిన తర్వాత, ReadOnlyMemoryతో మోడల్ ప్రాధాన్యం ఇచ్చారు సమాధానాలను పొందడానికి గొలుసులను నిర్మించడానికి మరియు అమలు చేయడానికి మార్గం మరియు ప్రక్రియ క్రింది విధంగా ఉంటుంది:

దశ 1: గొలుసును నిర్మించడం

ఈ పద్ధతిలో మొదటి దశ గొలుసు మరియు కార్యనిర్వాహకుడిని నిర్మించడం “ZeroShotAgent()” దాని వాదనలతో. ది “LLMCchain()” llm మరియు ప్రాంప్ట్ ఆర్గ్యుమెంట్‌లను ఉపయోగించి భాష మోడల్‌లోని అన్ని చాట్‌ల మధ్య కనెక్షన్‌ని నిర్మించడానికి ఉపయోగించబడుతుంది. ఏజెంట్ llm_chain, టూల్స్ మరియు వెర్బోస్‌ను దాని వాదనగా ఉపయోగిస్తుంది మరియు మెమరీతో ఏజెంట్లు మరియు దాని సాధనాలు రెండింటినీ అమలు చేయడానికి agent_chainని నిర్మిస్తుంది:

llm_గొలుసు = LLMCచైన్ ( llm = OpenAI ( ఉష్ణోగ్రత = 0 ) , ప్రాంప్ట్ = ప్రాంప్ట్ )
ఏజెంట్ = ZeroShotAgent ( llm_గొలుసు = llm_గొలుసు , ఉపకరణాలు = ఉపకరణాలు , మాటలతో కూడిన = నిజమే )
ఏజెంట్_గొలుసు = ఏజెంట్ ఎగ్జిక్యూటర్. ఏజెంట్_మరియు_టూల్స్ నుండి (
ఏజెంట్ = ఏజెంట్ , ఉపకరణాలు = ఉపకరణాలు , మాటలతో కూడిన = నిజమే , జ్ఞాపకశక్తి = జ్ఞాపకశక్తి
)

దశ 2: చైన్‌ని పరీక్షించడం

కాల్ చేయండి ఏజెంట్_గొలుసు ఇంటర్నెట్ నుండి ప్రశ్న అడగడానికి రన్() పద్ధతిని ఉపయోగించడం:

ఏజెంట్_గొలుసు. పరుగు ( ఇన్పుట్ = 'లాంగ్‌చెయిన్ అంటే ఏమిటి' )

ఏజెంట్ శోధన సాధనాలను ఉపయోగించి ఇంటర్నెట్ నుండి సమాధానాన్ని సంగ్రహించారు:

ఏజెంట్‌కు జోడించిన మెమరీని పరీక్షించడానికి వినియోగదారు అస్పష్టమైన తదుపరి ప్రశ్నను అడగవచ్చు:

ఏజెంట్_గొలుసు. పరుగు ( ఇన్పుట్ = 'ఎవరు అభివృద్ధి చేసారు?' )

ప్రశ్నల సందర్భాన్ని అర్థం చేసుకోవడానికి ఏజెంట్ మునుపటి చాట్‌ని ఉపయోగించారు మరియు కింది స్క్రీన్‌షాట్‌లో ప్రదర్శించబడిన విధంగా సమాధానాలను పొందారు:

ఏజెంట్ మెమరీని ఉపయోగించి గతంలో సంగ్రహించిన అన్ని సమాధానాల సారాంశాన్ని సంగ్రహించడానికి ఏజెంట్ సాధనాన్ని (summary_chain) ఉపయోగిస్తాడు:

ఏజెంట్_గొలుసు. పరుగు (
ఇన్పుట్ = 'ధన్యవాదాలు! నా 5 సంవత్సరాల వయస్సులో సంభాషణను సంగ్రహించండి'
)

అవుట్‌పుట్
కింది స్క్రీన్‌షాట్‌లో 5 ఏళ్ల చిన్నారి కోసం గతంలో అడిగిన ప్రశ్నల సారాంశం ప్రదర్శించబడింది:

దశ 3: మెమరీని పరీక్షించడం

కింది కోడ్‌ని ఉపయోగించడం ద్వారా బఫర్ మెమరీని అందులో నిల్వ చేసిన చాట్‌లను సేకరించేందుకు దాన్ని ప్రింట్ చేయండి:

ముద్రణ ( ఏజెంట్_గొలుసు. జ్ఞాపకశక్తి . బఫర్ )

ఎటువంటి మార్పు లేకుండా సరైన క్రమంలో చాట్‌లు క్రింది స్నిప్పెట్‌లో ప్రదర్శించబడ్డాయి:

విధానం 2: ఏజెంట్ మరియు టూల్స్ రెండింటికీ ఒకే మెమరీని ఉపయోగించడం

ప్లాట్‌ఫారమ్ సిఫార్సు చేయని రెండవ పద్ధతి ఏజెంట్లు మరియు సాధనాల కోసం బఫర్ మెమరీని ఉపయోగించడం. సాధనాలు మెమరీలో నిల్వ చేయబడిన చాట్‌లను మార్చగలవు, ఇవి పెద్ద సంభాషణలలో తప్పుడు అవుట్‌పుట్‌లను అందించగలవు:

దశ 1: గొలుసును నిర్మించడం

ఈసారి ReadOnlyMemory జోడించబడనందున చిన్న మార్పుతో ఏజెంట్ల కోసం సాధనాలు మరియు గొలుసులను రూపొందించడానికి టెంప్లేట్ నుండి పూర్తి కోడ్‌ను ఉపయోగించడం:

టెంప్లేట్ = '' 'ఇది మానవుడు మరియు బోట్ మధ్య సంభాషణ:

{chat_history}

{input} కోసం సంభాషణ యొక్క సారాంశాన్ని వ్రాయండి:
'
''
#చాట్ యొక్క నిర్మాణాన్ని రూపొందించండి ఇంటర్ఫేస్ చైన్‌తో మెమరీని జోడించడం ద్వారా ప్రాంప్ట్ టెంప్లేట్‌ని ఉపయోగించడం
ప్రాంప్ట్ = ప్రాంప్ట్ టెంప్లేట్ ( ఇన్‌పుట్_వేరియబుల్స్ = [ 'ఇన్‌పుట్' , 'చాట్_చరిత్ర' ] , టెంప్లేట్ = టెంప్లేట్ )
జ్ఞాపకశక్తి = సంభాషణబఫర్ మెమరీ ( మెమరీ_కీ = 'చాట్_చరిత్ర' )
సారాంశం_గొలుసు = LLMCచైన్ (
llm = OpenAI ( ) ,
ప్రాంప్ట్ = ప్రాంప్ట్ ,
మాటలతో కూడిన = నిజమే ,
జ్ఞాపకశక్తి = జ్ఞాపకశక్తి ,
)
#ఉపకరణాలను నిర్మించండి ( శోధన మరియు సారాంశం ) కోసం ఏజెంట్లను కాన్ఫిగర్ చేయడం
వెతకండి = SerpAPIWrapper ( )
ఉపకరణాలు = [
సాధనం (
పేరు = 'వెతకండి' ,
ఫంక్ = వెతకండి. పరుగు ,
వివరణ = 'ఇటీవలి సంఘటనల గురించి లక్ష్యంగా చేసుకున్న ప్రశ్నలకు సరైన ప్రతిస్పందనలు' ,
) ,
సాధనం (
పేరు = 'సారాంశం' ,
ఫంక్ = సారాంశం_గొలుసు. పరుగు ,
వివరణ = 'చాట్ యొక్క సారాంశాన్ని పొందడానికి సహాయకరంగా ఉంటుంది మరియు ఈ సారాంశాన్ని ఎవరు చదవాలో సూచించే ఈ సాధనానికి స్ట్రింగ్ ఇన్‌పుట్ అవసరం' ,
) ,
]
#దశలను వివరించండి కోసం సమాచారాన్ని సేకరించేందుకు సాధనాలను ఉపయోగించే ఏజెంట్ కోసం చాట్
ఉపసర్గ = '' 'కింది సాధనాలను యాక్సెస్ చేయడం ద్వారా ప్రశ్నలకు సాధ్యమైనంత ఉత్తమమైన రీతిలో సమాధానమివ్వడం ద్వారా మానవునితో సంభాషణను నిర్వహించండి:' ''
ప్రత్యయం = '' 'ప్రారంభించండి!'
#నిర్మాణం కోసం మెమరీని ఉపయోగిస్తున్నప్పుడు సాధనాలను ఉపయోగించడం ప్రారంభించే ఏజెంట్
{ చాట్_చరిత్ర }
ప్రశ్న : { ఇన్పుట్ }
{ ఏజెంట్_స్క్రాచ్‌ప్యాడ్ } '' '

ప్రాంప్ట్ = ZeroShotAgent.create_prompt(
#ప్రశ్న యొక్క సందర్భాన్ని అర్థం చేసుకోవడానికి ప్రాంప్ట్ టెంప్లేట్‌లను కాన్ఫిగర్ చేయండి
సాధనాలు,
ఉపసర్గ = ఉపసర్గ,
ప్రత్యయం=ప్రత్యయం,
input_variables=['
ఇన్పుట్ ',' చాట్_చరిత్ర ',' ఏజెంట్_స్క్రాచ్‌ప్యాడ్ '],
)
#ఏజెంట్ ఎగ్జిక్యూటర్‌ను నిర్మించేటప్పుడు అన్ని భాగాలను ఏకీకృతం చేయండి
llm_chain = LLMCchain(llm=OpenAI(ఉష్ణోగ్రత=0), ప్రాంప్ట్=ప్రాంప్ట్)
ఏజెంట్ = ZeroShotAgent(llm_chain=llm_chain, టూల్స్=టూల్స్, వెర్బోస్=ట్రూ)
agent_chain = AgentExecutor.from_agent_and_tools(
ఏజెంట్=ఏజెంట్, టూల్స్=టూల్స్, వెర్బోస్=ట్రూ, మెమరీ=మెమరీ
)

దశ 2: చైన్‌ని పరీక్షించడం

కింది కోడ్‌ను అమలు చేయండి:

ఏజెంట్_గొలుసు. పరుగు ( ఇన్పుట్ = 'లాంగ్‌చెయిన్ అంటే ఏమిటి' )

సమాధానం విజయవంతంగా ప్రదర్శించబడుతుంది మరియు మెమరీలో నిల్వ చేయబడుతుంది:

సందర్భాన్ని ఎక్కువగా ఇవ్వకుండా తదుపరి ప్రశ్నను అడగండి:

ఏజెంట్_గొలుసు. పరుగు ( ఇన్పుట్ = 'ఎవరు అభివృద్ధి చేసారు?' )

ఏజెంట్ దానిని మార్చడం ద్వారా ప్రశ్నను అర్థం చేసుకోవడానికి మెమరీని ఉపయోగిస్తాడు మరియు ఆపై సమాధానాన్ని ప్రింట్ చేస్తాడు:

ఏజెంట్‌కు జోడించిన మెమరీని ఉపయోగించి చాట్ సారాంశాన్ని పొందండి:

ఏజెంట్_గొలుసు. పరుగు (
ఇన్పుట్ = 'ధన్యవాదాలు! నా 5 సంవత్సరాల వయస్సులో సంభాషణను సంగ్రహించండి'
)

అవుట్‌పుట్
సారాంశం విజయవంతంగా సంగ్రహించబడింది మరియు ఇప్పటి వరకు ప్రతిదీ ఒకేలా ఉన్నట్లు కనిపిస్తోంది కానీ తదుపరి దశలో మార్పు వస్తుంది:

దశ 3: మెమరీని పరీక్షించడం

కింది కోడ్‌ని ఉపయోగించి మెమరీ నుండి చాట్ సందేశాలను సంగ్రహించడం:

ముద్రణ ( ఏజెంట్_గొలుసు. జ్ఞాపకశక్తి . బఫర్ )

సాధనం అసలు అడగని మరో ప్రశ్నను జోడించడం ద్వారా చరిత్రను సవరించింది. మోడల్ ప్రశ్నను aని ఉపయోగించి అర్థం చేసుకున్నందున ఇది జరుగుతుంది స్వీయ అడగండి ప్రశ్న. సాధనం పొరపాటుగా వినియోగదారు అడిగారని భావించి, దానిని ప్రత్యేక ప్రశ్నగా పరిగణిస్తుంది. కాబట్టి ఇది మెమరీకి అదనపు ప్రశ్నను జోడిస్తుంది, ఇది సంభాషణ యొక్క సందర్భాన్ని పొందడానికి ఉపయోగించబడుతుంది:

ఇప్పటికి ఇంతే.

ముగింపు

లాంగ్‌చెయిన్‌లో ఏజెంట్ మరియు దాని సాధనాలు రెండింటికీ మెమరీని జోడించడానికి, వాటి డిపెండెన్సీలను పొందడానికి మాడ్యూల్‌లను ఇన్‌స్టాల్ చేయండి మరియు వాటి నుండి లైబ్రరీలను దిగుమతి చేయండి. ఆ తర్వాత, సంభాషణ మెమరీ, భాషా నమూనా, సాధనాలు మరియు మెమరీని జోడించడానికి ఏజెంట్‌ను రూపొందించండి. ది సిఫార్సు చేసిన పద్ధతి మెమరీని జోడించడానికి ఏజెంట్‌కు ReadOnlyMemoryని మరియు చాట్ చరిత్రను నిల్వ చేయడానికి దాని సాధనాలను ఉపయోగిస్తోంది. వినియోగదారు కూడా ఉపయోగించవచ్చు సంభాషణ జ్ఞాపకశక్తి ఏజెంట్లు మరియు సాధనాలు రెండింటికీ. కానీ, వారు పొందుతారు గందరగోళం కొన్నిసార్లు మరియు మెమరీలో చాట్‌లను మార్చండి.