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>

AINâng cao45 phút

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ủ đề

llmai-agentsreacttool-callingagentic-loopparsing

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]:
        pass
  • parse_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 Answer và Action, ưu tiên Final 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 trong tools, raise ValueError(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.