เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

สร้างฟังก์ชันสำหรับส่งคืนการตอบสนองของ 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": [____.____(____["____"])]}
แก้ไขและรันโค้ด