Bagaimana untuk Menambah Jenis Memori Tersuai dalam LangChain?

Bagaimana Untuk Menambah Jenis Memori Tersuai Dalam Langchain



LangChain digunakan untuk mengkonfigurasi/mereka bentuk Model Bahasa atau Chatbots yang boleh berinteraksi dengan manusia seperti sembang. Mesej sembang ini dipautkan melalui rantaian seperti yang dicadangkan oleh nama LangChain dan pengguna juga boleh menyimpannya dalam ingatan. LangChain membolehkan pembangun menggunakan perpustakaan memori yang menyediakan penggunaan kelas terbina dalam atau penyesuaian memori mereka sendiri.

Rangka Pantas

Catatan ini akan menunjukkan:







Cara Menambah Jenis Memori Tersuai dalam LangChain



Kesimpulan



Bagaimana untuk Menambah Jenis Memori Tersuai dalam LangChain?

Menambah jenis memori tersuai dalam LangChain membolehkan pengguna mendapat prestasi paling banyak sebagai memori. Pengguna boleh mengkonfigurasi jenis memori mengikut keperluannya. Untuk menambah jenis memori tersuai dalam LangChain, hanya melalui langkah berikut:





Langkah 1: Memasang Rangka Kerja

Mula-mula, pasang rangka kerja LangChain untuk memulakan proses menambah jenis memori tersuai:

pip pasang langchain

Menjalankan arahan di atas dalam Buku Nota Python akan memasang kebergantungan untuk LangChain seperti yang dipaparkan dalam coretan berikut:



Pasang modul OpenAI untuk mendapatkan perpustakaannya yang boleh digunakan untuk mengkonfigurasi LLM:

pip pasang openai

Panduan ini akan menggunakan rangka kerja spaCy untuk mereka bentuk jenis memori tersuai dalam LangChain dan kod berikut digunakan untuk memasang modul:

pip pasang spacy

Model spaCy menggunakan jadual cincang untuk menyimpan maklumat sebagai pemerhatian seperti mesej sembang sebelumnya. Kod berikut digunakan untuk memuat turun Model Bahasa Besar atau LLM daripada perpustakaan spaCy untuk membina model NLP lanjutan:

! python -m spacy muat turun en_core_web_lg

Mengimport ' awak ” dan “ getpass ” perpustakaan adalah untuk memasukkan kunci API daripada akaun OpenAI ke menetapkan persekitarannya :

import awak
import getpass

awak . lebih kurang [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API Key:' )

Langkah 2: Mengimport Perpustakaan

Langkah seterusnya ialah mengimport perpustakaan yang diperlukan untuk menyesuaikan jenis memori mengikut model sembang:

daripada langchain. skema import BaseMemory

daripada langchain. rantai import Rantaian Perbualan

daripada pydantic import BaseModel

daripada langchain. llms import OpenAI

daripada menaip import Senaraikan , Dict , mana-mana

Mengimport ' spaCy ” perpustakaan untuk memuatkan “ en_core_web_lg ” model dan serahkan kepada “ nlp ” pembolehubah kerana ia adalah model Pemprosesan Bahasa Semulajadi:

import lapang

nlp = lapang. memuatkan ( 'en_core_web_lg' )

Langkah 3: Membina Memori Tersuai

Selepas itu, hanya bina memori tersuai menggunakan argumen BaseMemory dan BaseModel dalam kelas Memori. Kemudian, konfigurasikan entiti (dikumpul/disimpan daripada data) yang boleh disimpan dalam ingatan sebagai maklumat lengkap atau sebagai satu unit. Memori dikonfigurasikan untuk mengandungi semua entiti daripada dokumen untuk mengoptimumkan prestasi memori dan model:

kelas SpacyEntityMemory ( BaseMemory , BaseModel ) :
''' Kelas memori untuk menyimpan maklumat tentang entiti'''
entiti: dict = { }
kunci_memori: str = 'entiti'
def jelas ( diri sendiri ) :
diri sendiri . entiti = { }
@ harta benda
def pembolehubah_memori ( diri sendiri ) - > Senaraikan [ str ] :
''' Mulakan pembolehubah yang disediakan untuk pertanyaan'''
kembali [ diri sendiri . kunci_memori ]
#define pembolehubah memori menggunakan argumen
def load_memory_variables ( diri sendiri , input: Dict [ str , mana-mana ] ) - > Dict [ str , str ] :
''' Panggil pembolehubah untuk ingatan iaitu kunci entiti'''
doc = nlp ( input [ senarai ( input. kunci ( ) ) [ 0 ] ] )
#configure entiti untuk disimpan dalam memori untuk unit individu
entiti = [
diri sendiri . entiti [ str ( ent ) ] untuk ent dalam doc. ents jika str ( ent ) dalam diri sendiri . entiti
]
kembali { diri sendiri . kunci_memori : ' \n ' . sertai ( entiti ) }
#define save_context() untuk menggunakan memori
def simpan_konteks ( diri sendiri , input: Dict [ str , mana-mana ] , output: Dict [ str , str ] ) - > tiada :
'''Simpan pemerhatian dari sembang ini ke ingatan'''
teks = input [ senarai ( input. kunci ( ) ) [ 0 ] ]
doc = nlp ( teks )
untuk ent dalam doc. ents :
ent_str = str ( ent )
jika ent_str dalam diri sendiri . entiti :
diri sendiri . entiti [ ent_str ] + = f ' \n {teks}'
lain :
diri sendiri . entiti [ ent_str ] = teks

Langkah 4: Mengkonfigurasi Templat Prompt

Selepas itu, hanya konfigurasikan templat segera yang menerangkan struktur input yang disediakan oleh pengguna/manusia:

daripada langchain. gesaan . segera import PromptTemplate

templat = '''Berikut ialah interaksi antara mesin dan manusia Ia mengatakan ia tidak tahu Jika mesin tidak mengetahui jawapannya Mesin (AI) memberikan butiran daripada konteksnya dan jika ia tidak memahami jawapan kepada sebarang soalan ia sekadar minta maaf

Maklumat entiti:

{entiti}

Komunikasi:

Manusia: {input}

AI:'''


segera = PromptTemplate ( input_variables = [ 'entiti' , 'input' ] , templat = templat )

Langkah 5: Menguji Model

Sebelum menguji model, hanya konfigurasikan LLM menggunakan kaedah OpenAI() dan sediakan fungsi ConversationChain() dengan hujah:

llm = OpenAI ( suhu = 0 )

perbualan = Rantaian Perbualan (

llm = llm , segera = segera , bertele-tele = betul , ingatan = SpacyEntityMemory ( )

)

Beri maklumat kepada model menggunakan argumen input sambil memanggil kaedah predict() dengan pembolehubah perbualan:

perbualan. menjangkakan ( input = 'Harrison suka pembelajaran mesin' )

Pengeluaran

Model telah menyerap maklumat dan menyimpannya dalam ingatan dan juga mengemukakan soalan yang berkaitan dengan maklumat untuk meneruskan perbualan:

Pengguna boleh bertindak balas kepada soalan daripada model untuk menambah lebih banyak maklumat pada ingatan atau menguji ingatan dengan bertanya soalan tentang maklumat:

perbualan. menjangkakan (

input = 'Apakah subjek kegemaran Harrison'

)

Model memberikan output berdasarkan maklumat sebelumnya dan memaparkannya pada skrin seperti yang ditunjukkan oleh coretan berikut:

Itu sahaja tentang menambah jenis memori tersuai dalam LangChain.

Kesimpulan

Untuk menambah jenis memori tersuai dalam LangChain, cuma pasang modul yang diperlukan untuk mengimport perpustakaan untuk membina memori tersuai. SpaCy ialah perpustakaan penting yang sedang digunakan dalam panduan ini untuk menambah memori tersuai menggunakan model NLPnya. Selepas itu, konfigurasikan memori tersuai dan templat gesaan untuk memberikan struktur antara muka sembang. Setelah konfigurasi selesai, cukup uji memori model dengan meminta maklumat yang berkaitan dengan data yang disimpan.