Как добавить пользовательский тип памяти в LangChain?

Kak Dobavit Pol Zovatel Skij Tip Pamati V Langchain



LangChain используется для настройки/проектирования языковых моделей или чат-ботов, которые могут взаимодействовать с людьми, как в чате. Эти сообщения чата связаны цепочками, как следует из названия LangChain, и пользователь также может хранить их в памяти. LangChain позволяет разработчикам использовать библиотеки памяти, обеспечивающие использование встроенных классов или настройку собственной памяти.

Краткое описание

В этом посте будет показано:







Как добавить собственный тип памяти в LangChain



Заключение



Как добавить пользовательский тип памяти в LangChain?

Добавление настраиваемого типа памяти в LangChain позволяет пользователю получить максимальную производительность памяти. Пользователь может настроить тип памяти в соответствии со своими требованиями. Чтобы добавить собственный тип памяти в LangChain, просто выполните следующие шаги:





Шаг 1: Установка фреймворков

Сначала установите инфраструктуру LangChain, чтобы начать процесс добавления пользовательского типа памяти:

pip установить langchain

Выполнение приведенной выше команды в блокноте Python установит зависимости для LangChain, как показано в следующем фрагменте:



Установите модуль OpenAI, чтобы получить его библиотеки, которые можно использовать для настройки LLM:

pip установить openai

В этом руководстве будет использоваться платформа spaCy для разработки специального типа памяти в LangChain, а для установки модуля используется следующий код:

pip установить пространство

Модель spaCy использует хеш-таблицу для хранения информации в виде наблюдения, как и предыдущие сообщения чата. Следующий код используется для загрузки модели большого языка или LLM из библиотеки spaCy для создания расширенной модели НЛП:

! python -m spacy скачать en_core_web_lg

Импорт» ты ' и ' получить пропуск » библиотеки предназначены для ввода ключа API от учетной записи OpenAI в настроить его среду :

Импортировать ты
Импортировать получить пропуск

ты . примерно [ 'ОПЕНАЙ_API_KEY' ] '=' получить пропуск . получить пропуск ( «Ключ API OpenAI:» )

Шаг 2. Импорт библиотек

Следующий шаг — импорт необходимых библиотек для настройки типа памяти по модели чата:

от лангчейн. схема Импортировать Базовая память

от лангчейн. цепи Импортировать Разговорная цепочка

от пикантный Импортировать Базовая модель

от лангчейн. llms Импортировать ОпенАИ

от печатание Импортировать Список , Дикт , Любой

Импорт « простор ” библиотека для загрузки “ ru_core_web_lg ” модели и назначьте ее модели “ НЛП ” переменная, поскольку это модель обработки естественного языка:

Импортировать просторный

НЛП '=' просторный. нагрузка ( 'en_core_web_lg' )

Шаг 3. Создание пользовательской памяти

После этого просто создайте специальную память, используя аргументы BaseMemory и BaseModel в классе Memory. Затем настройте объекты (собранные/сохраненные из данных), которые могут храниться в памяти как полная информация или как единое целое. Память настроена так, чтобы содержать все объекты из документа для оптимизации производительности памяти и модели:

сорт SpacyEntityMemory ( Базовая память , Базовая модель ) :
''' Класс памяти для хранения информации о сущностях'''
субъекты: диктовать '=' { }
ключ_памяти: ул. '=' 'сущности'
защита прозрачный ( себя ) :
себя . сущности '=' { }
@ свойство
защита память_переменные ( себя ) - > Список [ ул. ] :
''' Инициализировать переменные, предоставленные в запросе '''
возвращаться [ себя . ключ_памяти ]
#определить переменные памяти, используя аргументы
защита load_memory_variables ( себя , входы: Дикт [ ул. , Любой ] ) - > Дикт [ ул. , ул. ] :
''' Вызов переменных для памяти, т.е. ключа сущности '''
док '=' НЛП ( входы [ список ( входы. ключи ( ) ) [ 0 ] ] )
#настроить объекты, которые будут храниться в памяти для отдельного устройства
сущности '=' [
себя . сущности [ ул. ( ент ) ] для ент в док. энты если ул. ( ент ) в себя . сущности
]
возвращаться { себя . ключ_памяти : ' \п ' . присоединиться ( сущности ) }
#определите save_context() для использования памяти
защита save_context ( себя , входы: Дикт [ ул. , Любой ] , выходы: Дикт [ ул. , ул. ] ) - > Никто :
'''Сохранить наблюдение из этого чата в памяти'''
текст '=' входы [ список ( входы. ключи ( ) ) [ 0 ] ]
док '=' НЛП ( текст )
для ент в док. энты :
ent_str '=' ул. ( ент )
если ent_str в себя . сущности :
себя . сущности [ ent_str ] + '=' ж ' \п {текст}'
еще :
себя . сущности [ ent_str ] '=' текст

Шаг 4. Настройка шаблона приглашения

После этого просто настройте шаблон приглашения, который объясняет структуру ввода, предоставляемого пользователем/человеком:

от лангчейн. подсказки . быстрый Импортировать Шаблон приглашения

шаблон '=' '''Ниже показано взаимодействие между машиной и человеком. Он говорит, что не знает. Если машина не знает ответа. Машина (ИИ) предоставляет подробности из своего контекста, и если он не понимает ответ на какой-либо вопрос, он просто говорит: извини

Информация о сущности:

{сущности}

Коммуникация:

Человек: {вход}

ИИ: '''


быстрый '=' Шаблон приглашения ( входные_переменные '=' [ 'сущности' , 'вход' ] , шаблон '=' шаблон )

Шаг 5: Тестирование модели

Прежде чем тестировать модель, просто настройте LLM с помощью метода OpenAI() и настройте функцию ConversationChain() с аргументами:

лм '=' ОпенАИ ( температура '=' 0 )

беседа '=' Разговорная цепочка (

лм '=' лм , быстрый '=' быстрый , подробный '=' Истинный , Память '=' SpacyEntityMemory ( )

)

Предоставьте информацию модели, используя входной аргумент при вызове метода Predict() с переменной диалога:

беседа. предсказывать ( вход '=' «Харрисону нравится машинное обучение» )

Выход

Модель усвоила информацию и сохранила ее в памяти, а также задала вопрос, связанный с информацией, для продолжения разговора:

Пользователь может ответить на вопрос модели, чтобы добавить в память дополнительную информацию, или проверить память, задав вопрос об информации:

беседа. предсказывать (

вход '=' «Какой любимый предмет у Харрисона»

)

Модель выдает выходные данные на основе предыдущей информации и отображает их на экране, как показано в следующем фрагменте:

Вот и все, что касается добавления пользовательского типа памяти в LangChain.

Заключение

Чтобы добавить пользовательский тип памяти в LangChain, просто установите необходимые модули для импорта библиотек для создания пользовательской памяти. SpaCy — это важная библиотека, которая используется в этом руководстве для добавления пользовательской памяти с использованием ее модели НЛП. После этого настройте пользовательскую память и шаблон подсказки, чтобы задать структуру интерфейса чата. После завершения настройки просто проверьте память модели, запросив информацию, связанную с сохраненными данными.