Това ръководство ще илюстрира процеса на добавяне на памет към верига с множество входове в LangChain.
Как да добавите памет към верига с множество входове в LangChain?
Паметта може да се добави към LLMs или chatbots за съхраняване на най-новите съобщения или данни, така че моделът да може да разбере контекста на командата. За да научите процеса на добавяне на памет към верига с множество входове в LangChain, просто преминете през следните стъпки:
Стъпка 1: Инсталирайте модули
Първо инсталирайте рамката LangChain, тъй като тя има различни зависимости за изграждане на езикови модели:
pip инсталирайте langchain
Инсталирайте chromadb, за да съхранявате данните, използвани от паметта в векторното хранилище на Chroma:
pip инсталирайте chromadb
Tiktoken е токенизаторът, използван за създаване на малки части от големи документи, така че да могат да се управляват лесно:
pip инсталирайте tiktoken
OpenAI е модулът, който може да се използва за изграждане на вериги и LLM чрез метода OpenAI():
pip инсталирайте openai
Стъпка 2: Настройка на среда и качване на данни
Следващата стъпка след инсталирането на всички необходими модули за този процес е настройка на средата използвайки API ключа от акаунта на OpenAI:
импортиране Виеимпортиране getpass
Вие . приблизително [ „OPENAI_API_KEY“ ] = getpass . getpass ( „API ключ на OpenAI:“ )
Качете документите, като използвате библиотеката с файлове, за да изградите веригите в рамката LangChain:
от google. ET AL импортиране файловекачен = файлове. качване ( )
Стъпка 3: Импортирайте библиотеки
След като документът бъде качен успешно, просто импортирайте необходимите библиотеки от модула Langchain:
от Langchain. вграждания . openai импортиране OpenAIEmbeddingsот Langchain. вграждания . съгласувам се импортиране CohereEmbeddings
от Langchain. текстов_разделител импортиране CharacterTextSplitter
от Langchain. векторни магазини . еластично_векторно_търсене импортиране ElasticVectorSearch
от Langchain. векторни магазини импортиране Chroma
от Langchain. docstore . документ импортиране Документ
Стъпка 4: Изграждане на памет с помощта на Chroma Database
Сега започнете да изграждате векторното пространство, за да съхранявате вгражданията и токените на документа, качен по-рано:
с отворен ( 'state_of_the_union.txt' ) като е:държава_на_съюза = f. Прочети ( )
текстов_разделител = CharacterTextSplitter ( chunk_size = 1000 , част_припокриване = 0 )
текстове = текстов_разделител. разделен_текст ( държава_на_съюза )
вграждания = OpenAIEmbeddings ( )
Конфигурирайте базата данни Chroma за съхраняване на текста и вгражданията от документа:
docsearch = Chroma. от_текстове (текстове , вграждания , метаданни = [ { 'източник' : i } за аз в диапазон ( само ( текстове ) ) ]
)
Тествайте паметта, като зададете командата в променливата на заявката и след това изпълнете метода similarity_search():
заявка = 'Кога е създадено НАТО'документи = docsearch. търсене на сходство ( заявка )
Стъпка 5: Конфигуриране на шаблон за подкана
Тази стъпка обяснява процеса на конфигуриране на шаблона за подканите чрез импортиране на следните библиотеки:
от Langchain. вериги . въпрос_отговор импортиране load_qa_chainот Langchain. llms импортиране OpenAI
от Langchain. подкани импортиране PromptTemplate
от Langchain. памет импортиране ConversationBufferMemory
След това просто конфигурирайте шаблона или структурата за заявката и стартирайте веригата, след като паметта бъде добавена към модела:
шаблон = '''Вие сте модел, който разговаря с човекКато се имат предвид частите, извлечени от дълъг документ и въпрос, създайте окончателен отговор
{контекст}
{hist}
Човек: {вход}
Чатбот:'''
подкана = PromptTemplate (
входни_променливи = [ 'история' , 'вход' , 'контекст' ] , шаблон = шаблон
)
памет = ConversationBufferMemory ( памет_ключ = 'история' , input_key = 'вход' )
верига = load_qa_chain (
OpenAI ( температура = 0 ) , тип_верига = 'неща' , памет = памет , подкана = подкана
)
Стъпка 6: Тестване на паметта
Тук е моментът да тествате модела, като зададете въпроса с помощта на променливата на заявката и след това изпълните метода chain() с неговите параметри:
заявка = 'Кога е създадено НАТО'верига ( { 'входни_документи' : документи , 'вход' : запитване } , връщане_само_изходи = Вярно )
Отпечатайте данните, съхранени в буферната памет, тъй като отговорът, даден от модела, е съхранен наскоро в паметта:
печат ( верига. памет . буфер )
Това е всичко за добавяне на памет към верига с множество входове в LangChain.
Заключение
За да добавите памет към верига с множество входове в LangChain, просто инсталирайте модулите и векторното хранилище, за да съхранявате текста и вгражданията. След това качете данните/документа от локалната система и след това импортирайте необходимите библиотеки за съхранение на данните, за да изградите паметта за LLM. Конфигурирайте шаблона за подкана, за да съхранява най-новите съобщения в буферната памет и след това изпратете текст във веригата. Това ръководство разработи подробно процеса на добавяне на памет към верига с множество входове в LangChain.