โครงร่างด่วน
โพสต์นี้จะสาธิตสิ่งต่อไปนี้:
วิธีการใช้การถามตัวเองด้วยห่วงโซ่การค้นหา
- การติดตั้งกรอบงาน
- สภาพแวดล้อมของอาคาร
- การนำเข้าไลบรารี
- การสร้างโมเดลภาษา
- การใช้ภาษานิพจน์ LangChain
- การกำหนดค่า Agent Executor
- เรียกใช้ตัวแทน
- การใช้ตัวแทนถามตัวเอง
จะใช้การถามตัวเองด้วยห่วงโซ่การค้นหาได้อย่างไร
Self-Ask เป็นกระบวนการปรับปรุงกระบวนการ chaining เนื่องจากเข้าใจคำสั่งอย่างถี่ถ้วน กลุ่มโซ่เข้าใจคำถามโดยแยกข้อมูลเกี่ยวกับคำศัพท์ที่สำคัญทั้งหมดออกจากชุดข้อมูล เมื่อโมเดลได้รับการฝึกฝนและเข้าใจคำถามแล้ว โมเดลจะสร้างการตอบสนองต่อคำถามที่ผู้ใช้ถาม
หากต้องการเรียนรู้กระบวนการปรับใช้การถามตัวเองกับเชนการค้นหาใน LangChain เพียงทำตามคำแนะนำต่อไปนี้:
ขั้นตอนที่ 1: การติดตั้งกรอบงาน
ก่อนอื่น ให้เริ่มกระบวนการโดยการติดตั้งกระบวนการ LangChain โดยใช้โค้ดต่อไปนี้ และรับการขึ้นต่อกันทั้งหมดสำหรับกระบวนการ:
pip ติดตั้ง langchain
หลังจากติดตั้ง LangChain แล้ว ให้ติดตั้ง “ ผลการค้นหาของ Google ” เพื่อรับผลการค้นหาจาก Google โดยใช้สภาพแวดล้อม OpenAI:
pip ติดตั้ง openai google-search-results
ขั้นตอนที่ 2: การสร้างสภาพแวดล้อม
เมื่อติดตั้งโมดูลและเฟรมเวิร์กแล้ว ให้ตั้งค่าสภาพแวดล้อมสำหรับ OpenAI และ SerpAPi ใช้ API โดยใช้รหัสต่อไปนี้ นำเข้าไลบรารีระบบปฏิบัติการและ getpass ที่สามารถใช้เพื่อป้อนคีย์ API จากบัญชีที่เกี่ยวข้อง:
นำเข้า คุณนำเข้า รับผ่าน
คุณ . ประมาณ [ 'OPENAI_API_KEY' ] = รับผ่าน . รับผ่าน ( 'คีย์ OpenAI API:' )
คุณ . ประมาณ [ 'SERPAPI_API_KEY' ] = รับผ่าน . รับผ่าน ( 'คีย์ Serpapi API:' )
ขั้นตอนที่ 3: การนำเข้าไลบรารี
หลังจากตั้งค่าสภาพแวดล้อม เพียงนำเข้าไลบรารีที่จำเป็นจากการพึ่งพาของ LangChain เช่น ยูทิลิตี้ เอเจนต์ llm และอื่นๆ:
จาก แลงเชน llms นำเข้า OpenAIจาก แลงเชน สาธารณูปโภค นำเข้า SerpAPIWrapper
จาก แลงเชน ตัวแทน . output_parsers นำเข้า SelfAskOutputParser
จาก แลงเชน ตัวแทน . format_scratchpad นำเข้า format_log_to_str
จาก แลงเชน นำเข้า ฮับ
จาก แลงเชน ตัวแทน นำเข้า เตรียมใช้งาน_ตัวแทน , เครื่องมือ
จาก แลงเชน ตัวแทน นำเข้า ประเภทตัวแทน
ขั้นตอนที่ 4: การสร้างโมเดลภาษา
จำเป็นต้องมีไลบรารีข้างต้นตลอดกระบวนการ เนื่องจาก OpenAI() ใช้เพื่อกำหนดค่าโมเดลภาษา ใช้เมธอด SerpAPIWrapper() เพื่อกำหนดค่าตัวแปรการค้นหาและตั้งค่าเครื่องมือที่จำเป็นสำหรับเอเจนต์เพื่อดำเนินงานทั้งหมด:
llm = OpenAI ( อุณหภูมิ = 0 )ค้นหา = SerpAPIWrapper ( )
เครื่องมือ = [
เครื่องมือ (
ชื่อ = “คำตอบระดับกลาง” ,
ฟังก์ชั่น = ค้นหา. วิ่ง ,
คำอธิบาย = 'มีประโยชน์เมื่อคุณต้องการถามด้วยการค้นหา' ,
)
]
ขั้นตอนที่ 5: การใช้ภาษานิพจน์ LangChain
เริ่มต้นใช้งานการกำหนดค่าเอเจนต์โดยใช้ LangChain Expression Language (LCE) โดยการโหลดโมเดลในตัวแปรพร้อมต์:
พร้อมท์ = ฮับ ดึง ( 'hwchase17/ถามตัวเองด้วยการค้นหา' )กำหนดตัวแปรอื่นที่สามารถดำเนินการเพื่อหยุดการสร้างข้อความและควบคุมความยาวของการตอบกลับ:
llm_with_stop = llm. ผูก ( หยุด = [ ' \n คำตอบระดับกลาง:' ] )ตอนนี้ กำหนดค่าเอเจนต์โดยใช้ Lambda ซึ่งเป็นแพลตฟอร์มไร้เซิร์ฟเวอร์ที่ขับเคลื่อนด้วยเหตุการณ์เพื่อสร้างคำตอบสำหรับคำถาม นอกจากนี้ ให้กำหนดค่าขั้นตอนที่จำเป็นในการฝึกและทดสอบโมเดลเพื่อให้ได้ผลลัพธ์ที่ดีที่สุดโดยใช้ส่วนประกอบที่กำหนดค่าไว้ก่อนหน้านี้:
ตัวแทน = {'ป้อนข้อมูล' : : แลมบ์ดา x: x [ 'ป้อนข้อมูล' ] ,
'agent_scratchpad' : : แลมบ์ดา x: format_log_to_str (
x [ 'ขั้นกลาง_ขั้นตอน' ] ,
การสังเกต_คำนำหน้า = ' \n คำตอบระดับกลาง: ' ,
llm_prefix = '' ,
) ,
} | พรอมต์ | llm_with_stop | SelfAskOutputParser ( )
ขั้นตอนที่ 6: การกำหนดค่า Agent Executor
ก่อนที่จะทดสอบวิธีการ เพียงนำเข้าไลบรารี AgentExecutor จาก LangChain เพื่อทำให้ตัวแทนตอบสนอง:
จาก แลงเชน ตัวแทน นำเข้า AgentExecutorกำหนดตัวแปร agent_executor โดยการเรียกเมธอด AgentExecutor() และใช้คอมโพเนนต์เป็นอาร์กิวเมนต์:
agent_executor = AgentExecutor ( ตัวแทน = ตัวแทน , เครื่องมือ = เครื่องมือ , รายละเอียด = จริง )ขั้นตอนที่ 7: เรียกใช้ตัวแทน
เมื่อกำหนดค่าตัวดำเนินการตัวแทนแล้ว เพียงทดสอบโดยระบุคำถาม/พร้อมท์ในตัวแปรอินพุต:
agent_executor วิงวอน ( { 'ป้อนข้อมูล' : : “ใครคือแชมป์ยูเอสโอเพ่นชาย” } )การดำเนินการโค้ดข้างต้นได้ตอบกลับด้วยชื่อของ US Open Champion ในผลลัพธ์เช่น Dominic Thiem:
ขั้นตอนที่ 8: การใช้ตัวแทนถามตัวเอง
หลังจากได้รับการตอบกลับจากตัวแทน ให้ใช้ SELF_ASK_WITH_SEARCH เอเจนต์ที่มีการสืบค้นในเมธอด run():
self_ask_with_search = เตรียมใช้งาน_ตัวแทน (เครื่องมือ , llm , ตัวแทน = ประเภทตัวแทน SELF_ASK_WITH_SEARCH , รายละเอียด = จริง
)
self_ask_with_search วิ่ง (
“บ้านเกิดของ โดมินิก ธีม แชมป์โลก US Open คืออะไร”
)
ภาพหน้าจอต่อไปนี้แสดงว่าตัวแทนถามตัวเองจะดึงข้อมูลเกี่ยวกับคำศัพท์ที่สำคัญแต่ละคำจากชุดข้อมูล เมื่อรวบรวมข้อมูลทั้งหมดเกี่ยวกับคำถามและเข้าใจคำถามแล้ว มันก็สร้างคำตอบขึ้นมา คำถามที่ตัวแทนถามตัวเองคือ:
- โดมินิค ธีมคือใคร?
- บ้านเกิดของ Dominic Thiem คืออะไร?
หลังจากได้คำตอบสำหรับคำถามเหล่านี้แล้ว ตัวแทนก็ได้สร้างคำตอบให้กับคำถามเดิมที่ว่า “ วีเนอร์ นอยสตัดท์, ออสเตรีย ”:
นั่นคือทั้งหมดที่เกี่ยวกับกระบวนการปรับใช้การถามตัวเองด้วยห่วงโซ่การค้นหาโดยใช้กรอบงาน LangChain
บทสรุป
หากต้องการใช้การถามตัวเองด้วยการค้นหาใน LangChain เพียงติดตั้งโมดูลที่จำเป็น เช่น google-search-results เพื่อรับผลลัพธ์จากตัวแทน หลังจากนั้น ให้ตั้งค่าสภาพแวดล้อมโดยใช้คีย์ API จากบัญชี OpenAI และ SerpAPi เพื่อเริ่มต้นกระบวนการ กำหนดค่าเอเจนต์และสร้างโมเดลด้วยโมเดลถามตัวเองเพื่อทดสอบโดยใช้เมธอด AgentExecutor()