Краткое описание
В этом посте будет показано:
Как добавить собственный тип памяти в 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 — это важная библиотека, которая используется в этом руководстве для добавления пользовательской памяти с использованием ее модели НЛП. После этого настройте пользовательскую память и шаблон подсказки, чтобы задать структуру интерфейса чата. После завершения настройки просто проверьте память модели, запросив информацию, связанную с сохраненными данными.