Định nghĩa node và edge để gọi hàm linh hoạt

Thiết kế Hệ thống Agentic với LangChain

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Xây dựng quy trình đa công cụ

   

  • Nhiều công cụ có sẵn

    • Palindrome
    • Sự kiện lịch sử
    • Wikipedia

Quy trình chatbot hoàn chỉnh

Thiết kế Hệ thống Agentic với LangChain

Định nghĩa hàm cho quy trình làm việc

   

  • Tạo hàm dừng

Các node chatbot và công cụ trong quy trình chatbot.

Thiết kế Hệ thống Agentic với LangChain

Định nghĩa hàm cho quy trình làm việc

   

  • Tạo hàm dừng

    • Kiểm tra lệnh gọi công cụ

Nổi bật các luật của hàm dừng.

Thiết kế Hệ thống Agentic với LangChain

Định nghĩa hàm cho quy trình làm việc

   

  • Tạo hàm dừng

    • Kiểm tra lệnh gọi công cụ
    • Kết thúc hội thoại nếu không có

Nổi bật các luật END trong quy trình

Thiết kế Hệ thống Agentic với LangChain

Định nghĩa hàm cho quy trình làm việc

   

  • Tạo hàm dừng

    • Kiểm tra lệnh gọi công cụ
    • Kết thúc hội thoại nếu không có    
  • Tạo bộ gọi công cụ động

    • Trả về phản hồi từ công cụ nếu có lệnh gọi

Nổi bật các luật call_model.

Thiết kế Hệ thống Agentic với LangChain

Định nghĩa hàm cho quy trình làm việc

   

  • Tạo hàm dừng

    • Kiểm tra lệnh gọi công cụ
    • Kết thúc hội thoại nếu không có    
  • Tạo bộ gọi công cụ động

    • Trả về phản hồi từ công cụ nếu có lệnh gọi
    • Gọi LLM với chỉ node chatbot nếu không có lệnh gọi công cụ

Nổi bật các luật call_model.

Thiết kế Hệ thống Agentic với LangChain

Định nghĩa hàm cho quy trình làm việc

   

  • Tạo hàm dừng

    • Kiểm tra lệnh gọi công cụ
    • Kết thúc hội thoại nếu không có    
  • Tạo bộ gọi công cụ động

    • Trả về phản hồi từ công cụ nếu có lệnh gọi
    • Gọi LLM với chỉ node chatbot nếu không có lệnh gọi công cụ
  • Biên dịch full graph

Nổi bật các luật call_model.

Thiết kế Hệ thống Agentic với LangChain

Tạo hàm điều kiện dừng

from langgraph.graph import MessagesState, START, END


# Dùng MessagesState để định nghĩa trạng thái của hàm dừng def should_continue(state: MessagesState):
# Lấy tin nhắn cuối từ trạng thái last_message = state["messages"][-1]
# Kiểm tra tin nhắn cuối có chứa lệnh gọi công cụ không if last_message.tool_calls: return "tools"
# Kết thúc hội thoại nếu không có lệnh gọi công cụ return END
Thiết kế Hệ thống Agentic với LangChain

Tạo bộ gọi công cụ động

# Trích xuất tin nhắn cuối từ lịch sử
def call_model(state: MessagesState):

last_message = state["messages"][-1]
# Nếu tin nhắn cuối có lệnh gọi công cụ, trả về phản hồi của công cụ if isinstance(last_message, AIMessage) and last_message.tool_calls:
# Trả về các tin nhắn từ lệnh gọi công cụ return {"messages": [AIMessage(content=last_message.tool_calls[0]["response"])]}
# Ngược lại, tiếp tục với phản hồi LLM thông thường return {"messages": [model_with_tools.invoke(state["messages"])]}
Thiết kế Hệ thống Agentic với LangChain

Tạo graph

workflow = StateGraph(MessagesState)












Thiết kế Hệ thống Agentic với LangChain

Tạo graph

workflow = StateGraph(MessagesState)


# Thêm node cho chatbot và công cụ workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)

Các node Chatbot và công cụ.

Thiết kế Hệ thống Agentic với LangChain

Tạo graph

workflow = StateGraph(MessagesState)


# Thêm node cho chatbot và công cụ workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Nối node START với chatbot workflow.add_edge(START, "chatbot")

Thêm node START vào chatbot.

Thiết kế Hệ thống Agentic với LangChain

Tạo graph

workflow = StateGraph(MessagesState)


# Thêm node cho chatbot và công cụ workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Nối node START với chatbot workflow.add_edge(START, "chatbot")
# Xác định điều kiện, rồi lặp về chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])

Graph với các điều kiện đã thêm.

Thiết kế Hệ thống Agentic với LangChain

Tạo graph

workflow = StateGraph(MessagesState)


# Thêm node cho chatbot và công cụ workflow.add_node("chatbot", call_model) workflow.add_node("tools", tool_node)
# Nối node START với chatbot workflow.add_edge(START, "chatbot")
# Xác định điều kiện, rồi lặp về chatbot workflow.add_conditional_edges("chatbot", should_continue, ["tools", END])
workflow.add_edge("tools", "chatbot")

Quy trình full graph.

Thiết kế Hệ thống Agentic với LangChain

Thêm bộ nhớ

# Thiết lập bộ nhớ và biên dịch quy trình
memory = MemorySaver()

app = workflow.compile( checkpointer=memory)
display(Image(app.get_graph() .draw_mermaid_png()))

Quy trình full graph.

Thiết kế Hệ thống Agentic với LangChain

Cùng luyện tập nào!

Thiết kế Hệ thống Agentic với LangChain

Preparing Video For Download...