เริ่มต้นกับตัวแทนใน LangChain หรือไม่?

Reim Tn Kab Tawthaen Ni Langchain Hrux Mi



LangChain เป็นเฟรมเวิร์กในการแก้ปัญหาการประมวลผลภาษาธรรมชาติเพื่อสร้างแอปพลิเคชันหรือซอฟต์แวร์ที่สามารถโต้ตอบและสนทนากับมนุษย์ได้ แชทบอทหรือโมเดลภาษาขนาดใหญ่ (LLM) ได้รับการออกแบบมาเพื่อสร้างสภาพแวดล้อมที่สามารถทำหน้าที่เป็นอินเทอร์เฟซสำหรับการแชท/การสนทนา การสนทนาเหล่านี้ดำเนินการในภาษามนุษย์ที่เรียกว่าภาษาธรรมชาติ เช่น ภาษาอังกฤษ ฯลฯ ระหว่างมนุษย์กับโมเดล AI

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

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







ตัวแทนในการประมวลผลภาษาธรรมชาติ (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 นำเข้า ChatOpenAI

llm = ChatOpenAI ( อุณหภูมิ = 0 )

นำเข้าเครื่องมือสำหรับตัวแทนเพื่อกำหนดค่างานหรือการดำเนินการที่ตัวแทนจำเป็นต้องดำเนินการ รหัสต่อไปนี้ใช้ get_word_length() วิธีการรับความยาวของคำที่ผู้ใช้ให้ไว้:

จาก แลงเชน ตัวแทน นำเข้า เครื่องมือ

@ เครื่องมือ

แน่นอน get_word_length ( คำ: STR ) - - > ภายใน : :

'''รับความยาวของคำ'''

กลับ เท่านั้น ( คำ )

เครื่องมือ = [ get_word_length ]

กำหนดค่าเทมเพลตหรือโครงสร้างสำหรับโมเดลการแชทเพื่อสร้างอินเทอร์เฟซสำหรับการแชท:

จาก แลงเชน แจ้ง นำเข้า เทมเพลต ChatPrompt , ข้อความตัวยึดตำแหน่ง

พร้อมท์ = เทมเพลต ChatPrompt จาก_ข้อความ ( [

( 'ระบบ' , 'ผู้ช่วยของคุณน่าทึ่งมาก แต่ต้องปรับปรุงในการคำนวณความยาว' ) ,

( 'ผู้ใช้' , '{ป้อนข้อมูล}' ) ,

ข้อความตัวยึดตำแหน่ง ( ตัวแปร_ชื่อ = 'agent_scratchpad' ) ,

] )

ขั้นตอนที่ 3: สร้างตัวแทน

นำเข้าไลบรารีเครื่องมือสำหรับการสร้าง LLM ด้วยเครื่องมือที่ใช้ฟังก์ชัน OpenAI จากโมดูล LangChain:

จาก แลงเชน เครื่องมือ . แสดงผล นำเข้า format_tool_to_openai_function

llm_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:

จาก แลงเชน ตัวแทน นำเข้า AgentExecutor

agent_executor = AgentExecutor ( ตัวแทน = ตัวแทน , เครื่องมือ = เครื่องมือ , รายละเอียด = จริง )

ในตอนท้าย ให้เรียกใช้ agent_executor ด้วยอาร์กิวเมนต์อินพุตเพื่อป้อนแบบสอบถามสำหรับตัวแทน:

agent_executor วิงวอน ( { 'ป้อนข้อมูล' : : “คำว่าดีมีกี่ตัวอักษร” } )

ตัวแทนได้แสดงคำตอบสำหรับคำถามที่ให้ไว้ในอาร์กิวเมนต์อินพุตหลังจากเสร็จสิ้นห่วงโซ่:

ทั้งหมดนี้เป็นเรื่องเกี่ยวกับการเริ่มต้นใช้งานตัวแทนในกรอบงานของ LangChain

บทสรุป

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