โครงร่างด่วน
โพสต์นี้จะแสดง:
วิธีเพิ่มประเภทหน่วยความจำแบบกำหนดเองใน 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 หลังจากนั้น ให้กำหนดค่าหน่วยความจำที่กำหนดเองและเทมเพลตพร้อมท์เพื่อกำหนดโครงสร้างของอินเทอร์เฟซการแชท เมื่อการกำหนดค่าเสร็จสิ้น เพียงทดสอบหน่วยความจำของโมเดลโดยขอข้อมูลที่เกี่ยวข้องกับข้อมูลที่เก็บไว้