โครงร่างด่วน
โพสต์นี้จะสาธิตสิ่งต่อไปนี้:
ตัวแทนในการประมวลผลภาษาธรรมชาติ (NLP) คืออะไร
เริ่มต้นใช้งานตัวแทนใน LangChain
- การติดตั้งกรอบงาน
- กำหนดค่าโมเดลการแชท
- ตัวแทนก่อสร้าง
- การเรียกตัวแทน
- กำหนดค่าเครื่องมือตัวแทน
- การทดสอบตัวแทน
Agent ในการประมวลผลภาษาธรรมชาติ (NLP) คืออะไร
เอเจนต์เป็นองค์ประกอบที่สำคัญของแอปพลิเคชันภาษาธรรมชาติ และพวกเขาใช้การทำความเข้าใจภาษาธรรมชาติ (NLU) เพื่อทำความเข้าใจคำถาม เจ้าหน้าที่เหล่านี้เป็นโปรแกรมที่ทำหน้าที่เหมือนเทมเพลตการสนทนาสำหรับการโต้ตอบกับมนุษย์โดยใช้ลำดับของงาน ตัวแทนใช้เครื่องมือหลายอย่างที่ตัวแทนสามารถเรียกใช้เพื่อดำเนินการหลายอย่างหรือระบุงานต่อไปที่จะดำเนินการ
เริ่มต้นใช้งานตัวแทนใน LangChain
เริ่มกระบวนการสร้างตัวแทนเพื่อสนทนากับมนุษย์โดยแยกเอาต์พุตโดยใช้ตัวแทนใน LangChain หากต้องการเรียนรู้กระบวนการเริ่มต้นใช้งานตัวแทนใน LangChain เพียงทำตามขั้นตอนด้านล่าง:
ขั้นตอนที่ 1: การติดตั้งกรอบงาน
ขั้นแรก เริ่มต้นด้วยกระบวนการติดตั้งเฟรมเวิร์ก LangChain โดยใช้คำสั่ง “ ปิ๊ป ” เพื่อรับการพึ่งพาที่จำเป็นสำหรับการใช้ตัวแทน:
pip ติดตั้ง langchain
ติดตั้งโมดูล OpenAI สำหรับการสร้าง LLM และใช้เพื่อกำหนดค่าเอเจนต์ใน LangChain:
pip ติดตั้ง openai
ตั้งค่าสภาพแวดล้อม สำหรับโมดูล OpenAI โดยใช้คีย์ API จากบัญชีโดยเรียกใช้โค้ดต่อไปนี้:
นำเข้า คุณนำเข้า รับผ่าน
คุณ . ประมาณ [ 'OPENAI_API_KEY' ] = รับผ่าน . รับผ่าน ( 'คีย์ OpenAI API:' )
ขั้นตอนที่ 2: กำหนดค่าโมเดลการแชท
นำเข้าโมดูล ChatOpenAI จาก LangChain เพื่อสร้าง LLM โดยใช้ฟังก์ชัน:
จาก แลงเชน chat_models นำเข้า ChatOpenAIllm = ChatOpenAI ( อุณหภูมิ = 0 )
นำเข้าเครื่องมือสำหรับตัวแทนเพื่อกำหนดค่างานหรือการดำเนินการที่ตัวแทนจำเป็นต้องดำเนินการ รหัสต่อไปนี้ใช้ get_word_length() วิธีการรับความยาวของคำที่ผู้ใช้ให้ไว้:
จาก แลงเชน ตัวแทน นำเข้า เครื่องมือ@ เครื่องมือ
แน่นอน get_word_length ( คำ: STR ) - - > ภายใน : :
'''รับความยาวของคำ'''
กลับ เท่านั้น ( คำ )
เครื่องมือ = [ get_word_length ]
กำหนดค่าเทมเพลตหรือโครงสร้างสำหรับโมเดลการแชทเพื่อสร้างอินเทอร์เฟซสำหรับการแชท:
จาก แลงเชน แจ้ง นำเข้า เทมเพลต ChatPrompt , ข้อความตัวยึดตำแหน่งพร้อมท์ = เทมเพลต ChatPrompt จาก_ข้อความ ( [
( 'ระบบ' , 'ผู้ช่วยของคุณน่าทึ่งมาก แต่ต้องปรับปรุงในการคำนวณความยาว' ) ,
( 'ผู้ใช้' , '{ป้อนข้อมูล}' ) ,
ข้อความตัวยึดตำแหน่ง ( ตัวแปร_ชื่อ = 'agent_scratchpad' ) ,
] )
ขั้นตอนที่ 3: สร้างตัวแทน
นำเข้าไลบรารีเครื่องมือสำหรับการสร้าง LLM ด้วยเครื่องมือที่ใช้ฟังก์ชัน OpenAI จากโมดูล LangChain:
จาก แลงเชน เครื่องมือ . แสดงผล นำเข้า format_tool_to_openai_functionllm_with_tools = llm. ผูก (
ฟังก์ชั่น = [ format_tool_to_openai_function ( ที ) สำหรับ ที ใน เครื่องมือ ]
)
กำหนดค่าเอเจนต์โดยใช้เอเจนต์ฟังก์ชัน OpenAI เพื่อใช้ตัวแยกวิเคราะห์เอาต์พุตเพื่อตั้งค่าลำดับการดำเนินการ/งาน:
จาก แลงเชน ตัวแทน . format_scratchpad นำเข้า format_to_openai_functionsจาก แลงเชน ตัวแทน . output_parsers นำเข้า OpenAIFunctionsAgentOutputParser
ตัวแทน = {
'ป้อนข้อมูล' : : แลมบ์ดา x: x [ 'ป้อนข้อมูล' ] ,
'agent_scratchpad' : : แลมบ์ดา x: format_to_openai_functions ( x [ 'ขั้นกลาง_ขั้นตอน' ] )
} | พรอมต์ | llm_with_tools | OpenAIFunctionsAgentOutputParser ( )
ขั้นตอนที่ 4: การเรียกใช้ตัวแทน
ขั้นตอนต่อไปใช้ฟังก์ชัน invive() เพื่อเรียกเอเจนต์โดยใช้อาร์กิวเมนต์อินพุตและintermediate_steps:
ตัวแทน. วิงวอน ( {'ป้อนข้อมูล' : : “คำว่าดีมีกี่ตัวอักษร” ,
'ขั้นกลาง_ขั้นตอน' : : [ ]
} )
ขั้นตอนที่ 5: กำหนดค่าเครื่องมือตัวแทน
หลังจากนั้น เพียงอิมพอร์ตไลบรารี AgentFinish เพื่อกำหนดค่า Intermediate_steps โดยการผสานรวมขั้นตอนทั้งหมดในลำดับเพื่อทำกิจกรรมให้เสร็จสมบูรณ์:
จาก แลงเชน สคีมา . ตัวแทน นำเข้า ตัวแทนเสร็จสิ้นระดับกลาง_ขั้นตอน = [ ]
ในขณะที่ จริง : :
เอาท์พุท = ตัวแทน. วิงวอน ( {
'ป้อนข้อมูล' : : 'จดหมายดีๆ' ,
'ขั้นกลาง_ขั้นตอน' : ระดับกลาง_ขั้นตอน
} )
ถ้า คือตัวอย่าง ( เอาท์พุท , ตัวแทนเสร็จสิ้น ) : :
สุดท้าย_ผลลัพธ์ = เอาท์พุท return_values [ 'เอาท์พุท' ]
หยุดพัก
อื่น : :
พิมพ์ ( เอาท์พุท เครื่องมือ , เอาท์พุท เครื่องมือ_อินพุต )
เครื่องมือ = {
'get_word_length' : get_word_length
} [ เอาท์พุท เครื่องมือ ]
การสังเกต = เครื่องมือ. วิ่ง ( เอาท์พุท เครื่องมือ_อินพุต )
ระดับกลาง_ขั้นตอน ผนวก ( ( เอาท์พุท , การสังเกต ) )
พิมพ์ ( สุดท้าย_ผลลัพธ์ )
ขั้นตอนที่ 6: การทดสอบตัวแทน
ตอนนี้ รันเอเจนต์โดยการเรียกเมธอด AgentExecutor() หลังจากอิมพอร์ตไลบรารีจาก LangChain:
จาก แลงเชน ตัวแทน นำเข้า AgentExecutoragent_executor = AgentExecutor ( ตัวแทน = ตัวแทน , เครื่องมือ = เครื่องมือ , รายละเอียด = จริง )
ในตอนท้าย ให้เรียกใช้ agent_executor ด้วยอาร์กิวเมนต์อินพุตเพื่อป้อนแบบสอบถามสำหรับตัวแทน:
agent_executor วิงวอน ( { 'ป้อนข้อมูล' : : “คำว่าดีมีกี่ตัวอักษร” } )ตัวแทนได้แสดงคำตอบสำหรับคำถามที่ให้ไว้ในอาร์กิวเมนต์อินพุตหลังจากเสร็จสิ้นห่วงโซ่:
ทั้งหมดนี้เป็นเรื่องเกี่ยวกับการเริ่มต้นใช้งานตัวแทนในกรอบงานของ LangChain
บทสรุป
หากต้องการเริ่มต้นใช้งานตัวแทนใน LangChain เพียงติดตั้งโมดูลที่จำเป็นในการตั้งค่าสภาพแวดล้อมโดยใช้คีย์ OpenAI API หลังจากนั้น กำหนดค่าโมเดลการแชทโดยการตั้งค่าเทมเพลตพร้อมท์สำหรับการสร้างตัวแทนโดยมีลำดับขั้นตอนกลาง เมื่อกำหนดค่าเอเจนต์แล้ว เพียงสร้างเครื่องมือโดยการระบุงานหลังจากมอบสตริงอินพุตให้กับผู้ใช้แล้ว บล็อกนี้ได้สาธิตกระบวนการใช้ตัวแทนใน LangChain