Back to Explore
Giải mã AI Agents: ReAct Loop là gì và cách thức hoạt động trong thực tế?

Giải mã AI Agents: ReAct Loop là gì và cách thức hoạt động trong thực tế?

Khám phá cơ chế ReAct Loop (Reason + Act) - chìa khóa giúp AI Agents giải quyết các tác vụ phức tạp đòi hỏi sự suy luận và tương tác với công cụ bên ngoài theo từng bước, thay vì chỉ phản hồi văn bản đơn thuần.

Website
Upvote this postSign in to upvote this article.

Giới thiệu về AI Agents và ReAct Loop

Trong bài viết trước, chúng ta đã tìm hiểu về Tool Calling (Gọi công cụ). Đây là cơ chế cho phép các mô hình AI quyết định hàm nào cần sử dụng và với tham số nào, thay vì chỉ tạo ra văn bản thuần túy. Tuy nhiên, một phiên bản nâng cao hơn không dừng lại ở một vòng lặp "AI quyết định - Code thực thi - Trả kết quả". Đó chính là ReAct Loop (Reason + Act).

ReAct Loop cho phép mô hình sử dụng kết quả của một lần gọi công cụ để quyết định xem có cần gọi tiếp công cụ khác hay không. Đây là kỹ thuật cốt lõi giúp các AI Agent xử lý các tác vụ phức tạp mà không thể giải quyết trong một lần gọi duy nhất.

AI Agents Explained

ReAct Loop là gì?

ReAct Loop là một chuỗi gồm ba bước lặp đi lặp lại:

  1. Reason (Suy luận): Mô hình suy luận về những gì nó đã biết và những thông tin còn thiếu để giải quyết truy vấn của người dùng.
  2. Act (Hành động): Mô hình gọi một công cụ phù hợp để lấy thông tin còn thiếu.
  3. Observe (Quan sát): Sau khi công cụ thực thi, kết quả được đưa lại vào ngữ cảnh (context) của mô hình. Mô hình sẽ quan sát kết quả này và quay lại bước suy luận.

Vòng lặp này tiếp tục cho đến khi mô hình đánh giá rằng thông tin đã đủ để trả lời người dùng, lúc đó nó sẽ dừng việc gọi công cụ và đưa ra câu trả lời cuối cùng.

Thực hành: Xây dựng ReAct Loop với Python

Giả sử chúng ta có một bài toán: "Tôi cá với bạn tôi 100 EUR rằng hôm nay trời sẽ mưa ở Athens. Nếu tôi thắng, số tiền đó đổi ra USD là bao nhiêu?". Ở đây, việc có cần gọi hàm convert_currency hay không phụ thuộc hoàn toàn vào kết quả của get_current_weather.

1. Thiết lập công cụ

Chúng ta sử dụng Open-Meteo cho thời tiết và Frankfurter cho chuyển đổi tiền tệ:

import requests
import json
from openai import OpenAI

client = OpenAI(api_key="your_api_key")

def get_current_weather(city: str, unit: str = "celsius") -> dict:
    geo = requests.get("https://geocoding-api.open-meteo.com/v1/search", params={"name": city, "count": 1}).json()
    lat = geo["results"][0]["latitude"]
    lon = geo["results"][0]["longitude"]
    weather = requests.get("https://api.open-meteo.com/v1/forecast", params={"latitude": lat, "longitude": lon, "current": "temperature_2m,precipitation", "temperature_unit": unit}).json()
    return {"city": city, "temperature": weather["current"]["temperature_2m"], "precipitation_mm": weather["current"]["precipitation"], "unit": unit}

def convert_currency(amount: float, from_currency: str, to_currency: str) -> dict:
    response = requests.get(f"https://api.frankfurter.dev/v2/rate/{from_currency}/{to_currency}").json()
    rate = response["rate"]
    return {"amount": amount, "from_currency": from_currency, "to_currency": to_currency, "converted_amount": round(amount * rate, 2), "rate": rate}

2. Vòng lặp suy luận

Thay vì thực hiện một lần, chúng ta bao bọc toàn bộ quá trình trong một vòng lặp for:

messages = [{"role": "user", "content": "Tôi cá 100 EUR trời mưa ở Athens. Nếu thắng, số tiền đó là bao nhiêu USD?"}]
max_iterations = 5

for i in range(max_iterations):
    response = client.chat.completions.create(model="gpt-4o-mini", messages=messages, tools=tools)
    message = response.choices[0].message
    messages.append(message)

    if not message.tool_calls:
        print(message.content)
        break

    for tool_call in message.tool_calls:
        function_name = tool_call.function.name
        function_args = json.loads(tool_call.function.arguments)
        function_response = available_functions[function_name](**function_args)
        
        messages.append({
            "role": "tool",
            "tool_call_id": tool_call.id,
            "content": json.dumps(function_response)
        })

Khi nào nên dùng ReAct Loop thay vì Parallel Tool Calling?

  • Sử dụng ReAct Loop khi: Số lượng lệnh gọi công cụ hoặc tham số của chúng chỉ có thể xác định sau khi có kết quả của lệnh gọi trước đó (phụ thuộc dữ liệu).
  • Sử dụng Parallel Tool Calling khi: Tất cả các công cụ cần thiết đã rõ ràng ngay từ đầu và không phụ thuộc vào nhau. Cách này giúp giảm độ trễ và tiết kiệm chi phí gọi API.

ReAct Loop chính là "trái tim" của các hệ thống AI Agent hiện đại, cho phép chúng thích nghi và giải quyết các vấn đề phức tạp một cách tự chủ.

Discussion (0)

You need to log in to post comments. Log In

No comments yet. Start the discussion!

Do you like this post?

Upvote to push this post higher on the community feed

Details

Posted by: @admin
Categories: AI Tools
Date posted: 8 tháng 7, 2026