จะเพิ่มหน่วยความจำให้กับ Chain ด้วยอินพุตหลายตัวใน LangChain ได้อย่างไร

Ca Pheim Hnwy Khwam Ca Hi Kab Chain Dwy Xinphut Hlay Taw Ni Langchain Di Xyangri



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

คู่มือนี้จะแสดงขั้นตอนการเพิ่มหน่วยความจำให้กับ chain ที่มีอินพุตหลายตัวใน LangChain

จะเพิ่มหน่วยความจำให้กับ Chain ด้วยอินพุตหลายตัวใน LangChain ได้อย่างไร

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







ขั้นตอนที่ 1: ติดตั้งโมดูล

ขั้นแรก ให้ติดตั้งเฟรมเวิร์ก LangChain เนื่องจากมีการขึ้นต่อกันที่หลากหลายเพื่อสร้างโมเดลภาษา:



pip ติดตั้ง langchain



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





pip ติดตั้ง chromadb

Tiktoken เป็นโทเค็นที่ใช้ในการสร้างเอกสารขนาดใหญ่ชิ้นเล็กๆ เพื่อให้สามารถจัดการได้อย่างง่ายดาย:



pip ติดตั้ง tiktoken

OpenAI เป็นโมดูลที่สามารถใช้ในการสร้าง chains และ LLM โดยใช้เมธอด OpenAI():

pip ติดตั้ง openai

ขั้นตอนที่ 2: ตั้งค่าสภาพแวดล้อมและอัปโหลดข้อมูล

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

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

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

อัปโหลดเอกสารโดยใช้ไลบรารีไฟล์เพื่อสร้างเชนในกรอบงาน LangChain:

จาก Google. และคณะ นำเข้า ไฟล์

อัปโหลดแล้ว = ไฟล์. ที่อัพโหลด ( )

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

เมื่ออัปโหลดเอกสารสำเร็จแล้ว เพียงนำเข้าไลบรารีที่จำเป็นจากโมดูล Langchain:

จาก แลงเชน การฝัง . เปิดใจ นำเข้า OpenAIEmbeddings

จาก แลงเชน การฝัง . เชื่อมโยงกัน นำเข้า CohereEmbeddings

จาก แลงเชน text_splitter นำเข้า CharacterTextSplitter

จาก แลงเชน ร้านเวกเตอร์ . elastic_vector_search นำเข้า ElasticVectorSearch

จาก แลงเชน ร้านเวกเตอร์ นำเข้า โครมา

จาก แลงเชน หมอสโตร์ . เอกสาร นำเข้า เอกสาร

ขั้นตอนที่ 4: การสร้างหน่วยความจำโดยใช้ฐานข้อมูล Chroma

ตอนนี้ ให้เริ่มสร้างพื้นที่เวกเตอร์เพื่อจัดเก็บการฝังและโทเค็นของเอกสารที่อัปโหลดก่อนหน้านี้:

กับ เปิด ( 'state_of_the_union.txt' ) เช่น ฉ:
state_of_the_union = ฉ. อ่าน ( )
text_splitter = CharacterTextSplitter ( ชิ้น_ขนาด = 1,000 , ชิ้น_ทับซ้อนกัน = 0 )
ข้อความ = text_splitter split_text ( state_of_the_union )

การฝัง = OpenAIEmbeddings ( )

กำหนดค่าฐานข้อมูล Chroma เพื่อจัดเก็บข้อความและการฝังจากเอกสาร:

ค้นหาเอกสาร = โครมา จาก_ข้อความ (

ข้อความ , การฝัง , ข้อมูลเมตา = [ { 'แหล่งที่มา' : ฉัน } สำหรับ ฉัน ใน พิสัย ( เท่านั้น ( ข้อความ ) ) ]

)

ทดสอบหน่วยความจำโดยถามคำสั่งในตัวแปรแบบสอบถาม จากนั้นดำเนินการเมธอดคล้าย ๆ กัน_ค้นหา ():

แบบสอบถาม = “นาโต้ก่อตั้งขึ้นเมื่อใด”

เอกสาร = ค้นหาเอกสาร ความคล้ายคลึงกัน_ค้นหา ( แบบสอบถาม )

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

ขั้นตอนนี้อธิบายกระบวนการกำหนดค่าเทมเพลตสำหรับพร้อมท์โดยการนำเข้าไลบรารีต่อไปนี้:

จาก แลงเชน ห่วงโซ่ . คำถาม_คำตอบ นำเข้า load_qa_chain

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

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

จาก แลงเชน หน่วยความจำ นำเข้า หน่วยความจำบัฟเฟอร์การสนทนา

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

แม่แบบ = '''คุณเป็นนางแบบที่กำลังสนทนากับมนุษย์
เมื่อพิจารณาส่วนที่แยกมาจากเอกสารขนาดยาวและคำถาม ให้สร้างคำตอบสุดท้าย

{บริบท}

{ประวัติ}
มนุษย์: {อินพุต}
แชทบอท:'''


พร้อมท์ = พรอมต์เทมเพลต (
input_variables = [ 'ประวัติ' , 'ป้อนข้อมูล' , 'บริบท' ] , แม่แบบ = แม่แบบ
)
หน่วยความจำ = หน่วยความจำบัฟเฟอร์การสนทนา ( หน่วยความจำ_คีย์ = 'ประวัติ' , input_key = 'ป้อนข้อมูล' )
โซ่ = load_qa_chain (
OpenAI ( อุณหภูมิ = 0 ) , chain_type = 'สิ่งของ' , หน่วยความจำ = หน่วยความจำ , พร้อมท์ = พร้อมท์
)

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

นี่คือเวลาที่จะทดสอบโมเดลโดยการถามคำถามโดยใช้ตัวแปรคิวรี จากนั้นดำเนินการเมธอด chain() ด้วยพารามิเตอร์:

แบบสอบถาม = “นาโต้ก่อตั้งขึ้นเมื่อใด”

โซ่ ( { 'อินพุต_เอกสาร' : เอกสาร , 'ป้อนข้อมูล' : สอบถาม } , return_only_outputs = จริง )

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

พิมพ์ ( โซ่. หน่วยความจำ . กันชน )

นั่นคือทั้งหมดที่เกี่ยวกับการเพิ่มหน่วยความจำให้กับ chain ที่มีอินพุตหลายตัวใน LangChain

บทสรุป

หากต้องการเพิ่มหน่วยความจำให้กับ chain ด้วยอินพุตหลายตัวใน LangChain เพียงติดตั้งโมดูลและ vector store เพื่อจัดเก็บข้อความและการฝัง หลังจากนั้น ให้อัปโหลดข้อมูล/เอกสารจากระบบภายในเครื่อง จากนั้นนำเข้าไลบรารีที่จำเป็นสำหรับการจัดเก็บข้อมูลเพื่อสร้างหน่วยความจำสำหรับ LLM กำหนดค่าเทมเพลตพรอมต์เพื่อจัดเก็บข้อความล่าสุดในหน่วยความจำบัฟเฟอร์ จากนั้นจึงส่งข้อความไปยังห่วงโซ่ คู่มือนี้ได้อธิบายอย่างละเอียดเกี่ยวกับกระบวนการเพิ่มหน่วยความจำให้กับ chain ที่มีอินพุตหลายตัวใน LangChain