Tổ chức đầu ra chatbot với bộ nhớ

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

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

Streaming đầu ra từ nhiều công cụ

    Luồng đồ thị đầy đủ.

 

  • In đầu ra với nhiều công cụ
      - Agent: [Tool 1: answer]
      - Agent: [Tool 2: answer]
    
  • In truy vấn người dùng và bật bộ nhớ
      - User: [Query]
      - Agent: [Tool 1: answer]
    
      - User: [Follow-up query]
      - Agent: [Tool 1: follow-up answer]
    
Thiết kế Hệ thống Agentic với LangChain

Streaming đầu ra từ nhiều công cụ

from langchain_core.messages import AIMessage, HumanMessage


config = {"configurable": {"thread_id": "1"}}
# Tạo thông điệp đầu vào với truy vấn của người dùng def multi_tool_output(query):
inputs = {"messages": [HumanMessage(content=query)]}
# Stream thông điệp và metadata từ ứng dụng chatbot for msg, metadata in app.stream(inputs, config, stream_mode="messages"):
# Kiểm tra nội dung và đảm bảo không phải từ người dùng if msg.content and not isinstance(msg, HumanMessage): print(msg.content, end="", flush=True)
print("\n")
Thiết kế Hệ thống Agentic với LangChain

Kiểm thử với nhiều công cụ

Kiểm tra gán công cụ động
multi_tool_output("Is `Stella won no wallets` a palindrome?")

multi_tool_output("What happened on April 12th, 1955?")
Cụm hoặc từ 'Stella won no wallets' là một palindrome.

Đúng, cụm "Stella won no wallets" là một palindrome.
Ngày 12 tháng 4 năm 1955 đáng chú ý vì nhiều lý do, đặc biệt trong bối cảnh khoa học và công nghệ. Vào ngày này, vắc-xin bại liệt đầu tiên do Dr. Jonas Salk phát triển đã được công bố rộng rãi. Đây là bước đột phá lớn trong cuộc chiến chống bệnh bại liệt, căn bệnh từng gây sợ hãi và bùng phát rộng rãi, đặc biệt ở trẻ em. Thông báo này đánh dấu bước ngoặt của y tế công cộng và dẫn tới chiến dịch tiêm chủng trên diện rộng, góp phần gần như xóa sổ bệnh bại liệt...
Thiết kế Hệ thống Agentic với LangChain

Câu hỏi nối tiếp với nhiều công cụ

# Luôn in truy vấn người dùng trước trong mỗi lượt tương tác
def user_agent_multiturn(queries):
    for query in queries:
        print(f"User: {query}")


# Stream qua các thông điệp tương ứng với truy vấn, loại trừ metadata print("Agent: " + "".join(msg.content for msg, metadata in app.stream( {"messages": [HumanMessage(content=query)]}, config, stream_mode="messages")
# Lọc bỏ thông điệp từ người dùng để in thông điệp của agent if msg.content and not isinstance(msg, HumanMessage)) + "\n")
queries = ["What happened on the 12 April 1961?", "What about 10 December 1948?", "Is `Mr. Owl ate my metal worm?` a palindrome?", "What about 'palladium stadium?'"] user_agent_multiturn(queries)
Thiết kế Hệ thống Agentic với LangChain

Đầu ra hội thoại đầy đủ

  • Sự kiện lịch sử
User: What happened on the 12 April 1961?
Agent: Ngày 12 tháng 4 năm 1961, Yuri Gagarin, phi hành gia Liên Xô, trở thành người đầu tiên bay 
vào không gian trên tàu Vostok 1...

User: What about 22 November 1963?
Agent: December 10, 1948... đánh dấu Tuyên ngôn Quốc tế Nhân quyền (UDHR).
  • Kiểm tra palindrome
User: Is `Mr. Owl ate my metal worm?` a palindrome?
Agent: Cụm hoặc từ 'Mr. Owl ate my metal worm?' là một palindrome...

User: What about 'palladium stadium'?
Agent: Không, cụm `palladium stadium` không phải là palindrome...
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...