สร้างฟังก์ชันสำหรับส่งคืนการตอบสนองของ LLM
ตอนนี้แชทบอตมีเครื่องมือพร้อมใช้งานมากมายแล้ว แต่ก็ยังมีประโยชน์ที่จะเรียกใช้ LLM โดยตรงในกรณีที่คำถามไม่เกี่ยวข้องกับเครื่องมือใดเลย ในแบบฝึกหัดนี้จะได้กำหนดฟังก์ชันที่ตรวจสอบข้อความล่าสุดในการสนทนาว่ามี tool calls หรือไม่ หากไม่มี แชทบอตจะใช้ LLM เพื่อตอบคำถามโดยตรง โมดูลต่อไปนี้ถูก import มาให้แล้วเพื่อรองรับทั้งข้อความจากผู้ใช้และการตอบสนองของแชทบอต
from langchain_core.messages import AIMessage, HumanMessage
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การออกแบบระบบ Agentic ด้วย LangChain
คำแนะนำการฝึกหัด
- เข้าถึงข้อความล่าสุดจาก
stateโดยใช้"messages" - เขียน conditional statement เพื่อตรวจสอบว่า
last_messageเป็นAIMessageและมีtool_callsอยู่ด้วยหรือไม่ - หากเงื่อนไขเป็นจริง ให้คืนค่า
"response"แรกจากtool_callsที่ดึงมาจากlast_messageในฟิลด์contentของAIMessage - หากเงื่อนไขไม่เป็นจริง ให้เรียก
.invoke()บนmodel_with_toolsเพื่อสร้างการตอบสนอง โดยส่งประวัติการสนทนาทั้งหมดจากstate["messages"]
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Extract the last message from the history
def call_model(state: MessagesState):
____ = ____["____"][____]
# If the last message has tool calls, return the tool's response
if isinstance(____, ____) and ____.____:
# Return only the messages from the tool call
return {"messages": [____(content=____.____[0]["____"])]}
# Otherwise, proceed with a regular LLM response
return {"messages": [____.____(____["____"])]}