ReAct (reason & act) là một kỹ thuật đột phá giúp LLM giải quyết các tác vụ phức tạp bằng cách kết hợp lý luận ngôn ngữ tự nhiên với các công cụ bên ngoài (tìm kiếm, trình thông dịch code...). Phương pháp này cho phép LLM thực hiện các hành động cụ thể như tương tác với API để thu thập thông tin - bước đầu tiên hướng tới mô hình agent.
ReAct mô phỏng cách con người xử lý vấn đề: vừa lý luận bằng ngôn ngữ vừa hành động để thu thập thông tin. Kỹ thuật này thể hiện hiệu quả vượt trội so với các phương pháp prompt engineering khác trong nhiều lĩnh vực.
Cách hoạt động: ReAct kết hợp chu trình suy nghĩ-hành động (thought-action loop). LLM đầu tiên phân tích vấn đề và lập kế hoạch hành động. Sau đó thực thi các hành động này, quan sát kết quả, cập nhật lý luận và điều chỉnh kế hoạch lặp lại cho đến khi đạt được giải pháp.
Để chạy ví dụ này, bạn cần:
Tạo API key miễn phí từ SerpAPI
Thiết lập biến môi trường SERPAPI_API_KEY
Snippet 1: Tạo ReAct Agent bằng LangChain và VertexAI
from langchain.agents import load_tools, initialize_agent, AgentType
from langchain.llms import VertexAI
prompt = "Các thành viên ban nhạc Metallica có tổng cộng bao nhiêu người con?"
llm = VertexAI(temperature=0.1)
tools = load_tools(["serpapi"], llm=llm)
agent = initialize_agent(tools, llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True)
agent.run(prompt)
Snippet 2: Kết quả thực thi
> Bắt đầu chu trình AgentExecutor...
Metallica có 4 thành viên.
Hành động: Tìm kiếm
Đầu vào: James Hetfield có bao nhiêu con?
Quan sát: 3 con
Suy nghĩ: 1/4 thành viên có 3 con
Hành động: Tìm kiếm
Đầu vào: Lars Ulrich có bao nhiêu con?
Quan sát: 3 con
Suy nghĩ: 2/4 thành viên có tổng 6 con
Hành động: Tìm kiếm
Đầu vào: Kirk Hammett có bao nhiêu con?
Quan sát: 2 con trai (2006 & 2008)
Suy nghĩ: 3/4 thành viên có tổng 8 con
Hành động: Tìm kiếm
Đầu vào: Robert Trujillo có bao nhiêu con?
Quan sát: 2 con
Suy nghĩ: 4/4 thành viên có tổng 10 con
Đáp án cuối: 10
Giải thích quy trình:
Agent xác định Metallica có 4 thành viên
Thực hiện tìm kiếm Google cho từng thành viên
Tổng hợp kết quả theo từng bước
Đưa ra tổng số con cuối cùng là 10
Lưu ý triển khai:
Cần xử lý việc gửi lại các prompt/response trước đó
Thiết lập ví dụ mẫu và hướng dẫn phù hợp cho model
Tham khảo notebook chi tiết trên GitHub GoogleCloudPlatform để hiểu rõ hơn về input/output của LLM