Khi xây dựng AI Agent phức tạp, một trong những quyết định kiến trúc quan trọng nhất là: Tách biệt hay kết hợp Planning (lập kế hoạch) và Execution (thực thi)? Bài viết này sẽ phân tích sâu hai pattern phổ biến nhất — ReAct (Reasoning + Acting)Plan Mode — kèm theo code thực tế và so sánh chi tiết các giải pháp API.

Bảng so sánh tổng quan

Tiêu chí HolySheep AI API chính thức (OpenAI/Anthropic) Các dịch vụ relay khác
Tỷ giá ¥1 = $1 (tiết kiệm 85%+) Tính theo USD Tính theo USD + phí dịch vụ
Thanh toán WeChat, Alipay, Visa/Mastercard Chỉ thẻ quốc tế Đa dạng nhưng phức tạp
Độ trễ trung bình <50ms 100-300ms 80-200ms
Tín dụng miễn phí ✅ Có khi đăng ký ❌ Không ⚠️ Tùy nhà cung cấp
GPT-4.1 $8/MTok $60/MTok $45-55/MTok
Claude Sonnet 4.5 $15/MTok $18/MTok $15-17/MTok
DeepSeek V3.2 $0.42/MTok Không hỗ trợ $0.45-0.55/MTok

ReAct vs Plan Mode: Khái niệm cốt lõi

ReAct (Reasoning + Acting)

ReAct là pattern mà Agent kết hợp liền mạch giữa suy luận và hành động trong một chuỗi loop. Mỗi bước agent đều suy nghĩ, rồi hành động ngay lập tức dựa trên suy luận đó.

Plan Mode (Separation of Concerns)

Plan Mode tách biệt hoàn toàn hai giai đoạn:

Code mẫu: ReAct Pattern với HolySheep

import requests
import json
from typing import List, Dict, Any

class ReActAgent:
    """ReAct Pattern - Kết hợp Reasoning và Acting trong một loop"""
    
    def __init__(self, api_key: str):
        self.base_url = "https://api.holysheep.ai/v1"
        self.headers = {
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        }
        self.max_iterations = 10
    
    def think(self, system_prompt: str, context: str, tools: List[str]) -> Dict:
        """Suy luận và quyết định hành động tiếp theo"""
        
        thinking_prompt = f"""{system_prompt}

Hiện tại context:
{context}

Công cụ khả dụng:
{json.dumps(tools, indent=2, ensure_ascii=False)}

Hãy:
1. Suy luận về bước tiếp theo cần thực hiện
2. Chọn công cụ phù hợp (hoặc kết thúc nếu đã hoàn thành)
3. Trả lời theo format:
   - thought: suy luận của bạn
   - action: tên công cụ (hoặc "FINISH")
   - action_input: tham số cho công cụ (hoặc null)"""
        
        response = requests.post(
            f"{self.base_url}/chat/completions",
            headers=self.headers,
            json={
                "model": "gpt-4.1",
                "messages": [{"role": "user", "content": thinking_prompt}],
                "temperature": 0.3,
                "max_tokens": 500
            }
        )
        return response.json()
    
    def execute(self, tool_name: str, tool_input: Dict) -> Any:
        """Thực thi hành động được chỉ định"""
        
        # Mô phỏng tool execution
        if tool_name == "web_search":
            return self._web_search(tool_input["query"])
        elif tool_name == "calculator":
            return self._calculate(tool_input["expression"])
        elif tool_name == "file_reader":
            return self._read_file(tool_input["path"])
        return None
    
    def run(self, task: str, system_prompt: str, tools: List[str]) -> str:
        """Chạy ReAct loop cho