ai-052Đọc toàn bộ đề miễn phí
Phân Tích & Điều Phối Vòng Lặp Agent ReAct (Reasoning + Acting)
Thought: <nội dung suy luận>
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: python-regex-parsing.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu kiến trúc Agent ReAct (Yao et al., 2022): Kết hợp Suy luận (Reasoning trace) và Hành động (Action) để tương tác với môi trường bên ngoài.
- Tại mỗi bước giải quyết vấn đề, LLM sinh ra văn bản theo 1 trong 2 cấu trúc:
- Trường hợp gọi công cụ (Action step):
Thought: <nội dung suy luận>
Action: <tên công cụ>
Action Input: <tham số đầu vào>- Trường hợp đã có câu trả lời cuối cùng (Final Answer step):
Thought: <nội dung suy luận>
Final Answer: <câu trả lời hoàn chỉnh cho người dùng>- Bộ phân tích phải bóc tách chính xác các trường dữ liệu, xử lý khoảng trắng dư thừa, và kích hoạt hàm tương ứng trong bảng công cụ (Tool Registry).
Yêu cầu
Xây dựng lớp ReActAgentParser:
class ReActAgentParser:
def parse_step(self, llm_output: str) -> dict:
pass
def execute_step(self, llm_output: str, tools: dict[str, callable]) -> tuple[dict, str]:
passparse_step(llm_output):- Trả về từ điển có cấu trúc:
{
"thought": str, # Nội dung sau 'Thought:' (nếu không có, để rỗng '')
"action": str | None, # Tên tool sau 'Action:'
"action_input": str | None, # Tham số sau 'Action Input:'
"final_answer": str | None, # Câu trả lời sau 'Final Answer:'
"is_final": bool # True nếu có Final Answer, False nếu là Action
}- Nếu xuất hiện cả
Final AnswervàAction, ưu tiênFinal Answer(is_final = True). execute_step(llm_output, tools):- Gọi
parse_step(llm_output)để phân tích. - Nếu
is_final == True: Trả về tuple(step_info, step_info["final_answer"]). - Nếu
is_final == False: - Tìm tool tương ứng trong từ điển
tools. Nếu tool không tồn tại trongtools, raiseValueError(f"Tool '{action}' not found"). - Thực thi hàm
obs = tools[action](action_input). - Chuẩn hóa chuỗi quan sát
f"Observation: {obs}". - Trả về tuple
(step_info, f"Observation: {obs}").
Input
- Lớp
ReActAgentParser(): Khởi tạo đối tượng với các tham số, trọng số hoặc cấu hình tương ứng.
Output
- Các phương thức của
ReActAgentParser: Trả về kết quả tính toán hoặc cập nhật trạng thái nội bộ của đối tượng.
Ràng buộc
- Thời gian chạy tối đa: 2000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
parser = ReActAgentParser()
llm_output = 'Thought: I need to calculate the average price.\nAction: calculator\nAction Input: (100 + 200) / 2\n'
tools = {'calculator': lambda expr: str(eval(expr))}
step_info, obs = parser.execute_step(llm_output, tools)Output
({
'thought': 'I need to calculate the average price.',
'action': 'calculator',
'action_input': '(100 + 200) / 2',
'final_answer': None,
'is_final': False
}, 'Observation: 150.0')Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
parser = ReActAgentParser()
llm_output = 'Thought: I now have enough information to answer the user.\nFinal Answer: AI Empire Academy provides advanced deterministic AI engineering courses.\n'
step_info, result = parser.execute_step(llm_output, tools={})Output
({
'thought': 'I now have enough information to answer the user.',
'action': None,
'action_input': None,
'final_answer': 'AI Empire Academy provides advanced deterministic AI engineering courses.',
'is_final': True
}, 'AI Empire Academy provides advanced deterministic AI engineering courses.')Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
