จะใช้การถามตัวเองด้วยห่วงโซ่การค้นหาได้อย่างไร

Ca Chi Kar Tham Taw Xeng Dwy Hwng So Kar Khnha Di Xyangri



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

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

โพสต์นี้จะสาธิตสิ่งต่อไปนี้:







วิธีการใช้การถามตัวเองด้วยห่วงโซ่การค้นหา



บทสรุป



จะใช้การถามตัวเองด้วยห่วงโซ่การค้นหาได้อย่างไร

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()