จะเพิ่มประเภทหน่วยความจำแบบกำหนดเองใน LangChain ได้อย่างไร

Ca Pheim Prapheth Hnwy Khwam Ca Baeb Kahnd Xeng Ni Langchain Di Xyangri



LangChain ใช้เพื่อกำหนดค่า/ออกแบบโมเดลภาษาหรือ Chatbot ที่สามารถโต้ตอบกับมนุษย์ได้เหมือนกับการแชท ข้อความแชทเหล่านี้เชื่อมโยงกันผ่านลูกโซ่ตามชื่อที่ LangChain แนะนำ และผู้ใช้สามารถเก็บไว้ในหน่วยความจำได้ LangChain ช่วยให้นักพัฒนาสามารถใช้ไลบรารีหน่วยความจำที่จัดให้มีการใช้คลาสในตัวหรือการปรับแต่งหน่วยความจำของตนเอง

โครงร่างด่วน

โพสต์นี้จะแสดง:







วิธีเพิ่มประเภทหน่วยความจำแบบกำหนดเองใน LangChain



บทสรุป



จะเพิ่มประเภทหน่วยความจำแบบกำหนดเองใน LangChain ได้อย่างไร

การเพิ่มประเภทหน่วยความจำที่กำหนดเองใน LangChain ช่วยให้ผู้ใช้สามารถได้รับประสิทธิภาพสูงสุดเช่นเดียวกับหน่วยความจำ ผู้ใช้สามารถกำหนดค่าประเภทหน่วยความจำได้ตามความต้องการ หากต้องการเพิ่มประเภทหน่วยความจำแบบกำหนดเองใน LangChain เพียงทำตามขั้นตอนต่อไปนี้:





ขั้นตอนที่ 1: การติดตั้งกรอบงาน

ขั้นแรก ให้ติดตั้งเฟรมเวิร์ก LangChain เพื่อเริ่มต้นกระบวนการเพิ่มประเภทหน่วยความจำแบบกำหนดเอง:

pip ติดตั้ง langchain

การรันคำสั่งข้างต้นใน Python Notebook จะติดตั้งการขึ้นต่อกันสำหรับ LangChain ดังที่แสดงในตัวอย่างต่อไปนี้:



ติดตั้งโมดูล OpenAI เพื่อรับไลบรารีที่สามารถใช้เพื่อกำหนดค่า LLM:

pip ติดตั้ง openai

คู่มือนี้จะใช้เฟรมเวิร์ก spaCy เพื่อออกแบบประเภทหน่วยความจำแบบกำหนดเองใน LangChain และโค้ดต่อไปนี้ใช้เพื่อติดตั้งโมดูล:

pip ติดตั้ง space

โมเดล spaCy ใช้ตารางแฮชเพื่อเก็บข้อมูลเป็นการสังเกตเหมือนกับข้อความแชทก่อนหน้า รหัสต่อไปนี้ใช้เพื่อดาวน์โหลด Large Language Model หรือ LLM จากไลบรารี spaCy เพื่อสร้างโมเดล NLP ขั้นสูง:

! ดาวน์โหลด python -m spacey en_core_web_lg

กำลังนำเข้า “ คุณ ' และ ' รับผ่าน ” ไลบรารี่มีไว้สำหรับป้อนคีย์ API จากบัญชีของ OpenAI ไปที่ ตั้งค่าสภาพแวดล้อม : :

นำเข้า คุณ
นำเข้า รับผ่าน

คุณ . ประมาณ [ 'OPENAI_API_KEY' ] = รับผ่าน . รับผ่าน ( 'คีย์ OpenAI API:' )

ขั้นตอนที่ 2: การนำเข้าไลบรารี

ขั้นตอนต่อไปคือการนำเข้าไลบรารีที่จำเป็นสำหรับการปรับแต่งประเภทหน่วยความจำตามรูปแบบการแชท:

จาก แลงเชน สคีมา นำเข้า หน่วยความจำฐาน

จาก แลงเชน ห่วงโซ่ นำเข้า การสนทนาห่วงโซ่

จาก ขี้อาย นำเข้า BaseModel

จาก แลงเชน llms นำเข้า OpenAI

จาก กำลังพิมพ์ นำเข้า รายการ , คำพูด , ใดๆ

การนำเข้า “ สปาซี ” ห้องสมุดที่จะโหลด “ en_core_web_lg ” สร้างโมเดลและกำหนดให้กับ “ nlp ” ตัวแปรเนื่องจากเป็นโมเดลการประมวลผลภาษาธรรมชาติ:

นำเข้า กว้างขวาง

nlp = กว้างขวาง โหลด ( 'en_core_web_lg' )

ขั้นตอนที่ 3: สร้างหน่วยความจำแบบกำหนดเอง

หลังจากนั้น เพียงสร้างหน่วยความจำแบบกำหนดเองโดยใช้อาร์กิวเมนต์ BaseMemory และ BaseModel ในคลาส Memory จากนั้น กำหนดค่าเอนทิตี (รวบรวม/จัดเก็บจากข้อมูล) ที่สามารถจัดเก็บไว้ในหน่วยความจำเป็นข้อมูลที่ครบถ้วนหรือเป็นหน่วยเดียว หน่วยความจำได้รับการกำหนดค่าให้มีเอนทิตีทั้งหมดจากเอกสารเพื่อเพิ่มประสิทธิภาพการทำงานของหน่วยความจำและรุ่น:

ระดับ SpacyEntityMemory ( หน่วยความจำฐาน , BaseModel ) : :
'''คลาสหน่วยความจำสำหรับจัดเก็บข้อมูลเกี่ยวกับเอนทิตี'''
เอนทิตี: คำสั่ง = { }
หน่วยความจำ_คีย์: STR = 'หน่วยงาน'
แน่นอน ชัดเจน ( ตัวเอง ) : :
ตัวเอง . เอนทิตี = { }
@ คุณสมบัติ
แน่นอน memory_variables ( ตัวเอง ) - - > รายการ [ STR ] : :
''' เริ่มต้นตัวแปรที่มีให้กับแบบสอบถาม'''
กลับ [ ตัวเอง . หน่วยความจำ_คีย์ ]
#define ตัวแปรหน่วยความจำโดยใช้อาร์กิวเมนต์
แน่นอน load_memory_variables ( ตัวเอง , อินพุต: Dict [ STR , ใดๆ ] ) - - > คำพูด [ STR , STR ] : :
''' เรียกตัวแปรสำหรับหน่วยความจำเช่นคีย์เอนทิตี '''
หมอ = nlp ( อินพุต [ รายการ ( อินพุต กุญแจ ( ) ) [ 0 ] ] )
#configure เอนทิตีที่จะจัดเก็บไว้ในหน่วยความจำสำหรับแต่ละหน่วย
เอนทิตี = [
ตัวเอง . เอนทิตี [ STR ( ent ) ] สำหรับ ent ใน หมอ ents ถ้า STR ( ent ) ใน ตัวเอง . เอนทิตี
]
กลับ { ตัวเอง . หน่วยความจำ_คีย์ : : ' \n ' . เข้าร่วม ( เอนทิตี ) }
#define the save_context() เพื่อใช้หน่วยความจำ
แน่นอน บันทึก_บริบท ( ตัวเอง , อินพุต: Dict [ STR , ใดๆ ] , เอาท์พุท: Dict [ STR , STR ] ) - - > ไม่มี : :
'''เก็บการสังเกตจากการแชทนี้ไว้ในหน่วยความจำ'''
ข้อความ = อินพุต [ รายการ ( อินพุต กุญแจ ( ) ) [ 0 ] ]
หมอ = nlp ( ข้อความ )
สำหรับ ent ใน หมอ ents : :
ent_str = STR ( ent )
ถ้า ent_str ใน ตัวเอง . เอนทิตี : :
ตัวเอง . เอนทิตี [ ent_str ] + = ' \n {ข้อความ}'
อื่น : :
ตัวเอง . เอนทิตี [ ent_str ] = ข้อความ

ขั้นตอนที่ 4: การกำหนดค่าเทมเพลตพร้อมท์

หลังจากนั้น เพียงกำหนดค่าเทมเพลตพร้อมต์ที่อธิบายโครงสร้างของอินพุตที่ผู้ใช้/มนุษย์จัดเตรียมให้:

จาก แลงเชน แจ้ง . พร้อมท์ นำเข้า พรอมต์เทมเพลต

แม่แบบ = “””ต่อไปนี้เป็นปฏิสัมพันธ์ระหว่างเครื่องจักรกับมนุษย์ โดยบอกว่าไม่รู้ หากเครื่องจักรไม่ทราบคำตอบ เครื่องจักร (AI) จะให้รายละเอียดจากบริบทของมัน และหากไม่เข้าใจคำตอบสำหรับคำถามใด ๆ แค่บอกว่าขอโทษ

ข้อมูลเอนทิตี:

{เอนทิตี}

การสื่อสาร:

มนุษย์: {อินพุต}

AI:'''


พร้อมท์ = พรอมต์เทมเพลต ( input_variables = [ 'หน่วยงาน' , 'ป้อนข้อมูล' ] , แม่แบบ = แม่แบบ )

ขั้นตอนที่ 5: ทดสอบโมเดล

ก่อนที่จะทดสอบโมเดล เพียงกำหนดค่า LLM โดยใช้วิธี OpenAI() และตั้งค่าฟังก์ชัน ConversationChain() ด้วยอาร์กิวเมนต์:

llm = OpenAI ( อุณหภูมิ = 0 )

การสนทนา = การสนทนาห่วงโซ่ (

llm = llm , พร้อมท์ = พร้อมท์ , รายละเอียด = จริง , หน่วยความจำ = SpacyEntityMemory ( )

)

ให้ข้อมูลแก่โมเดลโดยใช้อาร์กิวเมนต์อินพุตในขณะที่เรียกใช้เมธอดการคาดการณ์ () ด้วยตัวแปรการสนทนา:

การสนทนา. ทำนาย ( ป้อนข้อมูล = 'แฮร์ริสันชอบแมชชีนเลิร์นนิง' )

เอาท์พุต

โมเดลได้ดูดซับข้อมูลและเก็บไว้ในหน่วยความจำ และยังตั้งคำถามที่เกี่ยวข้องกับข้อมูลเพื่อเริ่มการสนทนา:

ผู้ใช้สามารถตอบคำถามจากแบบจำลองเพื่อเพิ่มข้อมูลลงในหน่วยความจำหรือทดสอบหน่วยความจำโดยถามคำถามเกี่ยวกับข้อมูล:

การสนทนา. ทำนาย (

ป้อนข้อมูล = “วิชาโปรดของแฮร์ริสันคืออะไร”

)

โมเดลให้เอาต์พุตตามข้อมูลก่อนหน้า และแสดงบนหน้าจอตามตัวอย่างต่อไปนี้:

นั่นคือทั้งหมดที่เกี่ยวกับการเพิ่มประเภทหน่วยความจำแบบกำหนดเองใน LangChain

บทสรุป

หากต้องการเพิ่มประเภทหน่วยความจำแบบกำหนดเองใน LangChain เพียงติดตั้งโมดูลที่จำเป็นสำหรับการนำเข้าไลบรารีเพื่อสร้างหน่วยความจำแบบกำหนดเอง spaCy เป็นไลบรารีที่สำคัญที่ใช้ในคู่มือนี้เพื่อเพิ่มหน่วยความจำแบบกำหนดเองโดยใช้โมเดล NLP หลังจากนั้น ให้กำหนดค่าหน่วยความจำที่กำหนดเองและเทมเพลตพร้อมท์เพื่อกำหนดโครงสร้างของอินเทอร์เฟซการแชท เมื่อการกำหนดค่าเสร็จสิ้น เพียงทดสอบหน่วยความจำของโมเดลโดยขอข้อมูลที่เกี่ยวข้องกับข้อมูลที่เก็บไว้