DEV Community

Cover image for วิธีหยุดดูแลเฝ้า AI Agent
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

วิธีหยุดดูแลเฝ้า AI Agent

สรุปสั้นๆ (TL;DR)

คุณจะหยุดการเฝ้าระวัง AI agent ได้ด้วยการสร้างสามสิ่งนี้: ราวกั้น (guardrails) (ข้อจำกัดที่ป้องกันความล้มเหลวร้ายแรง), การตรวจสอบ (observability) (บันทึกและเมตริกที่บอกคุณว่าเกิดอะไรขึ้น), และจุดตรวจสอบ (checkpoints) (การหยุดชั่วคราวอัตโนมัติที่มนุษย์ตรวจสอบการตัดสินใจ) ตั้งค่าสิ่งเหล่านี้เพียงครั้งเดียว แล้ว agent ของคุณก็สามารถทำงานได้อย่างอิสระนานหลายชั่วโมง แทนที่จะเป็นเพียงไม่กี่นาที เครื่องมืออย่าง Apidog ช่วยให้คุณกำหนดสัญญา API ที่ agent ไม่สามารถละเมิดได้ ซึ่งจะเปลี่ยนเลเยอร์ API ของคุณให้เป็นตาข่ายนิรภัย

ทดลองใช้ Apidog วันนี้

บทนำ

เมื่อสัปดาห์ที่แล้ว ฉันได้เห็นนักพัฒนาคนหนึ่งใช้เวลา 4 ชั่วโมงในการดูแล AI agent ที่ควรจะช่วยประหยัดเวลาให้เขา ทุกๆ ไม่กี่นาที เขาก็จะขัดจังหวะ, แก้ไขข้อผิดพลาด, และเริ่มใหม่ ท้ายที่สุด เขากลับทำงานด้วยตนเองมากกว่าที่ควรจะเป็น ถ้าเขาเขียนโค้ดเองตั้งแต่แรก

นี่คือปัญหาการเฝ้าระวัง และเป็นเหตุผลอันดับ 1 ที่ทำให้ AI agent ไม่สามารถทำตามที่สัญญาไว้ได้ เครื่องมือต่างๆ ทำงานได้ดี โมเดลมีความสามารถ แต่ทีมส่วนใหญ่ไม่เคยผ่านพ้นระยะการดูแลอย่างต่อเนื่องไปได้เลย

นี่คือสิ่งที่เกิดขึ้น: การตั้งค่า AI agent ส่วนใหญ่ปฏิบัติต่อ LLM เหมือนนักพัฒนาจูเนียร์ที่ต้องการการดูแลในทุกงาน แต่ LLM ไม่ใช่นักพัฒนาจูเนียร์ พวกเขาเป็นเหมือนเด็กฝึกงานที่รวดเร็วมาก ซึ่งบางครั้งก็หลอนและจะทำสิ่งที่ผิดอย่างมั่นใจ หากคุณไม่กำหนดขอบเขต

💡 หากคุณกำลังสร้าง API หรือทำงานกับ AI agent ที่เรียกใช้ API, Apidog จะช่วยคุณกำหนดขอบเขตเหล่านั้น ด้วยการระบุ schema ของ request/response ที่แม่นยำ คุณจะสร้างสัญญาที่ agent ไม่สามารถละเมิดโดยไม่ตั้งใจได้ เหมือนกับการมอบแผนที่ให้ agent ของคุณ แทนที่จะปล่อยให้พวกเขาสัญจรไปมา

กำหนดสัญญา API ที่ AI agent ของคุณสามารถปฏิบัติตามได้

เมื่อจบคำแนะนำนี้ คุณจะได้รับสิ่งเหล่านี้:

  • แบบจำลองทางความคิดสำหรับการทำความเข้าใจความเป็นอิสระของ agent
  • รูปแบบที่เป็นรูปธรรมสำหรับราวกั้น, การตรวจสอบ, และจุดตรวจสอบ
  • ตัวอย่างโค้ดที่คุณสามารถคัดลอกไปใช้ในโปรเจกต์ของคุณได้เลยวันนี้
  • รายการตรวจสอบสำหรับการประเมินว่า agent พร้อมที่จะทำงานโดยไม่มีการดูแลหรือไม่

ทำไม agent จึงต้องการการดูแลอย่างต่อเนื่อง

AI agent ล้มเหลวในลักษณะที่คาดเดาได้ การทำความเข้าใจรูปแบบความล้มเหลวเหล่านี้คือขั้นตอนแรกในการแก้ไข

รูปแบบความล้มเหลวที่ 1: ขอบเขตงานขยาย (Scope creep)

คุณขอให้ agent “เพิ่มการยืนยันตัวตนให้กับ API endpoint” มันก็เพิ่มการยืนยันตัวตน จากนั้นก็เพิ่มการจำกัดอัตรา (rate limiting) จากนั้นก็ปรับโครงสร้าง schema ของฐานข้อมูล จากนั้นก็ลบไฟล์ที่มันคิดว่า “ไม่ได้ใช้” ซึ่งกลับกลายเป็นไฟล์สำคัญ

agent ทำงานต่อไปเพราะไม่มีใครสั่งให้หยุด LLM ไม่มีสัญชาตญาณของการ “เสร็จสิ้น” พวกเขาจะทำการเปลี่ยนแปลงต่อไปจนกว่าจะถึงขีดจำกัดของโทเค็น หรือคุณขัดจังหวะ

รูปแบบความล้มเหลวที่ 2: การสร้าง abstraction ที่ผิด

agent ที่ได้รับมอบหมายให้ “ปรับปรุงการจัดการข้อผิดพลาด” อาจเพิ่มบล็อก try-catch เข้าไปทุกที่ แต่ละจุดใช้งานจริงอาจไม่สอดคล้องกับแนวทางที่ดี โค้ดอ่านยาก, การบันทึกไม่สอดคล้องกัน, และกรณีข้อผิดพลาดที่แท้จริงไม่ได้รับการจัดการ

agent เข้าใจคำขอตามตัวอักษร แต่พลาดเจตนา หากไม่มีตัวอย่างการจัดการข้อผิดพลาดที่ดี มันก็จะเลือกการตีความที่ชัดเจนที่สุด (และแย่ที่สุด) โดยปริยาย

รูปแบบความล้มเหลวที่ 3: ความล้มเหลวแบบต่อเนื่อง (Cascading failures)

agent ทำผิดพลาดเล็กน้อยในขั้นตอนที่ 1 เมื่อถึงขั้นตอนที่ 10 ความผิดพลาดนั้นก็แพร่กระจายไปยังการตัดสินใจถัดไปทุกขั้น สิ่งที่เริ่มต้นจากการพิมพ์ผิดในชื่อฟังก์ชันก็กลายเป็น API ที่เสีย, การทดสอบที่ผิดพลาด, และนักพัฒนาที่สับสนพยายามหาว่าเกิดอะไรขึ้น

รูปแบบความล้มเหลวที่ 4: การใช้ทรัพยากรจนหมด (Resource exhaustion)

หากไม่มีการดูแล agent บางตัวจะวนซ้ำตลอดไป พวกเขาจะพยายามเรียกใช้ API ที่ล้มเหลวซ้ำๆ โดยไม่มีกำหนด, สร้าง sub-agent ใหม่โดยไม่จำกัด, หรือสร้างโค้ดต่อไปจนกว่าจะถึงขีดจำกัดค่าใช้จ่ายของคุณ

กรอบการทำงานของความเป็นอิสระ: ราวกั้น, การตรวจสอบ, จุดตรวจสอบ

คุณสามารถแก้ปัญหาเหล่านี้ได้ด้วยสามชั้น คิดว่ามันเป็นพีระมิด: ราวกั้นที่ฐาน (ป้องกันความล้มเหลว), การตรวจสอบตรงกลาง (ตรวจจับความล้มเหลว), และจุดตรวจสอบที่ยอด (กู้คืนจากความล้มเหลว)

ชั้นที่ 1: ราวกั้น (การป้องกัน)

ข้อจำกัดที่เข้มงวดผ่านโค้ด:

# Don't: Trust the agent to follow instructions
agent.run("Only modify files in the src/ directory")

# Do: Enforce constraints in code
import os
from pathlib import Path

ALLOWED_DIRECTORIES = {"src", "tests", "docs"}

def validate_file_path(path: str) -> bool:
    """Agent cannot write outside allowed directories."""
    abs_path = Path(path).resolve()
    return any(
        str(abs_path).startswith(str(Path(d).resolve()))
        for d in ALLOWED_DIRECTORIES
    )

# Use in your agent's file operations
def agent_write_file(path: str, content: str):
    if not validate_file_path(path):
        raise ValueError(f"Cannot write to {path}: outside allowed directories")
    with open(path, 'w') as f:
        f.write(content)
Enter fullscreen mode Exit fullscreen mode

ข้อจำกัดของ API schema:

เมื่อ agent ของคุณเรียกใช้ API ให้ใช้ schema เพื่อป้องกันคำขอที่ผิดรูปแบบ นี่คือสิ่งที่ Apidog โดดเด่น กำหนดสัญญา API ของคุณเพียงครั้งเดียว และ agent ของคุณก็จะไม่สามารถส่งข้อมูลในรูปแบบที่ผิดได้

// apidog-schema.ts
export const CreateUserSchema = {
  type: 'object',
  required: ['email', 'name'],
  properties: {
    email: { type: 'string', format: 'email' },
    name: { type: 'string', minLength: 1, maxLength: 100 },
    role: { type: 'string', enum: ['user', 'admin', 'guest'] }
  },
  additionalProperties: false
}

// Agent must validate before calling API
function validateRequest(schema: object, data: unknown): void {
  const valid = ajv.validate(schema, data)
  if (!valid) {
    throw new Error(`Invalid request: ${JSON.stringify(ajv.errors)}`)
  }
}
Enter fullscreen mode Exit fullscreen mode

ข้อจำกัดงบประมาณ:

import time
from dataclasses import dataclass

@dataclass
class AgentBudget:
    max_steps: int = 50
    max_tokens: int = 100000
    max_time_seconds: int = 600  # 10 minutes
    max_api_calls: int = 100

class BudgetEnforcer:
    def __init__(self, budget: AgentBudget):
        self.budget = budget
        self.start_time = time.time()
        self.steps = 0
        self.tokens_used = 0
        self.api_calls = 0

    def check(self) -> bool:
        """Returns False if budget exceeded."""
        elapsed = time.time() - self.start_time

        if self.steps >= self.budget.max_steps:
            raise RuntimeError(f"Step limit reached: {self.steps}")
        if self.tokens_used >= self.budget.max_tokens:
            raise RuntimeError(f"Token limit reached: {self.tokens_used}")
        if elapsed >= self.budget.max_time_seconds:
            raise RuntimeError(f"Time limit reached: {elapsed:.0f}s")
        if self.api_calls >= self.budget.max_api_calls:
            raise RuntimeError(f"API call limit reached: {self.api_calls}")

        return True

    def record_step(self, tokens: int, api_calls: int = 0):
        self.steps += 1
        self.tokens_used += tokens
        self.api_calls += api_calls
        self.check()
Enter fullscreen mode Exit fullscreen mode

ชั้นที่ 2: การตรวจสอบ (การตรวจจับ)

การบันทึกแบบมีโครงสร้าง (Structured logging):

import json
from datetime import datetime
from typing import Any

class AgentLogger:
    def __init__(self, log_file: str = "agent_trace.jsonl"):
        self.log_file = log_file
        self.entries = []

    def log(self, event: str, data: dict[str, Any] | None = None):
        entry = {
            "timestamp": datetime.utcnow().isoformat(),
            "event": event,
            "data": data or {}
        }
        self.entries.append(entry)

        # Append to file immediately (don't lose logs on crash)
        with open(self.log_file, 'a') as f:
            f.write(json.dumps(entry) + '\n')

    def log_decision(self, decision: str, reasoning: str, confidence: float):
        """Log when agent makes a significant decision."""
        self.log("decision", {
            "decision": decision,
            "reasoning": reasoning,
            "confidence": confidence
        })

    def log_action(self, action: str, params: dict, result: str):
        """Log agent actions and their outcomes."""
        self.log("action", {
            "action": action,
            "params": params,
            "result": result[:200]  # Truncate long results
        })

    def log_error(self, error: str, context: dict):
        """Log errors with full context."""
        self.log("error", {
            "error": error,
            "context": context
        })

# Usage in agent
logger = AgentLogger()
logger.log_decision(
    decision="Add rate limiting to API",
    reasoning="Current endpoint has no protection against abuse",
    confidence=0.85
)
logger.log_action(
    action="write_file",
    params={"path": "src/middleware/rate-limit.ts"},
    result="Successfully wrote 45 lines"
)
Enter fullscreen mode Exit fullscreen mode

แดชบอร์ดเมตริก:

from collections import Counter
from dataclasses import dataclass, field

@dataclass
class AgentMetrics:
    actions_taken: Counter = field(default_factory=Counter)
    files_modified: list[str] = field(default_factory=list)
    api_calls: dict[str, int] = field(default_factory=dict)
    errors: list[str] = field(default_factory=list)
    decisions_by_confidence: dict[str, int] = field(default_factory=lambda: {
        "high (>0.9)": 0,
        "medium (0.7-0.9)": 0,
        "low (<0.7)": 0
    })

    def record_action(self, action: str):
        self.actions_taken[action] += 1

    def record_file_modification(self, path: str):
        if path not in self.files_modified:
            self.files_modified.append(path)

    def record_api_call(self, endpoint: str):
        self.api_calls[endpoint] = self.api_calls.get(endpoint, 0) + 1

    def record_error(self, error: str):
        self.errors.append(error)

    def record_decision(self, confidence: float):
        if confidence > 0.9:
            self.decisions_by_confidence["high (>0.9)"] += 1
        elif confidence >= 0.7:
            self.decisions_by_confidence["medium (0.7-0.9)"] += 1
        else:
            self.decisions_by_confidence["low (<0.7)"] += 1

    def summary(self) -> str:
        return f"""
Agent Metrics Summary
=====================
Actions: {dict(self.actions_taken)}
Files modified: {len(self.files_modified)}
API calls: {self.api_calls}
Errors: {len(self.errors)}
Decisions by confidence: {self.decisions_by_confidence}
"""
Enter fullscreen mode Exit fullscreen mode

ชั้นที่ 3: จุดตรวจสอบ (การกู้คืน)

จุดตรวจสอบอัตโนมัติ:

from enum import Enum
from typing import Callable
from dataclasses import dataclass

class CheckpointTrigger(Enum):
    BEFORE_FILE_WRITE = "before_file_write"
    BEFORE_API_CALL = "before_api_call"
    BEFORE_GIT_COMMIT = "before_git_commit"
    BEFORE_DELETE = "before_delete"
    AFTER_N_STEPS = "after_n_steps"

@dataclass
class Checkpoint:
    trigger: CheckpointTrigger
    description: str
    data: dict
    requires_approval: bool = True

class CheckpointManager:
    def __init__(self, auto_approve: set[CheckpointTrigger] | None = None):
        self.auto_approve = auto_approve or set()
        self.pending: list[Checkpoint] = []

    def create_checkpoint(
        self, 
        trigger: CheckpointTrigger, 
        description: str, 
        data: dict
    ) -> bool:
        """Returns True if approved, False if rejected."""

        # Auto-approve certain triggers
        if trigger in self.auto_approve:
            return True

        checkpoint = Checkpoint(
            trigger=trigger,
            description=description,
            data=data
        )
        self.pending.append(checkpoint)

        # In a real system, this would notify the human and wait
        # For now, we return False to pause execution
        return False

    def approve(self, checkpoint_id: int) -> None:
        """Human approves a pending checkpoint."""
        if 0 <= checkpoint_id < len(self.pending):
            self.pending.pop(checkpoint_id)

    def reject(self, checkpoint_id: int) -> None:
        """Human rejects a pending checkpoint."""
        raise RuntimeError(f"Checkpoint rejected: {self.pending[checkpoint_id]}")

# Usage in agent
checkpoints = CheckpointManager(
    auto_approve={CheckpointTrigger.BEFORE_FILE_WRITE}  # Trust file writes
)

# Before destructive action
if not checkpoints.create_checkpoint(
    trigger=CheckpointTrigger.BEFORE_DELETE,
    description="About to delete src/legacy/ directory",
    data={"path": "src/legacy/", "files": ["old_handler.ts", "deprecated.ts"]}
):
    # Wait for human approval
    agent.pause("Waiting for approval to delete files")
Enter fullscreen mode Exit fullscreen mode

การสร้าง autonomous agent ด้วย Apidog

เมื่อ AI agent ของคุณโต้ตอบกับ API ความเสี่ยงที่ใหญ่ที่สุดคือคำขอที่ผิดรูปแบบซึ่งทำให้เกิดความล้มเหลวที่ต่อเนื่อง Apidog ช่วยด้วยการให้คุณกำหนด API schema ที่แม่นยำซึ่ง agent ของคุณต้องปฏิบัติตาม

การตั้งค่าสัญญา API:

  1. นำเข้าหรือกำหนด OpenAPI spec ของคุณใน Apidog
  2. สร้างโค้ดไคลเอ็นต์พร้อมการตรวจสอบในตัว
  3. ให้ไคลเอ็นต์ที่ได้รับการตรวจสอบแล้วแก่ agent ของคุณ แทนที่จะเป็น HTTP ดิบ
// Instead of letting agent call APIs directly
const response = await fetch('/api/users', {
  method: 'POST',
  body: JSON.stringify(data)  // No validation
})

// Give agent a validated client
import { UsersApi } from './generated/apidog-client'

const usersApi = new UsersApi()
// Agent can only send valid requests - schema enforced
const response = await usersApi.createUser({
  email: 'user@example.com',
  name: 'Test User',
  role: 'user'  // Must be valid enum value
})
Enter fullscreen mode Exit fullscreen mode

สิ่งนี้จะเปลี่ยนเลเยอร์ API ของคุณให้เป็นราวกั้น agent ไม่สามารถส่งข้อมูลที่ไม่ถูกต้องได้ เนื่องจากไคลเอ็นต์ปฏิเสธก่อนที่คำขอจะถูกส่งออกไป

สร้าง API client ที่ผ่านการตรวจสอบสำหรับ AI agent ของคุณ

รูปแบบที่พิสูจน์แล้วและข้อผิดพลาดที่พบบ่อย

รูปแบบที่ 1: การอนุมัติแบบแซนด์วิช (The approval sandwich)

สำหรับการดำเนินการที่มีความเสี่ยงสูง ให้ขอการอนุมัติทั้งก่อนและหลัง

def risky_operation(agent, operation):
    # Pre-approval
    if not agent.checkpoint(f"About to: {operation.description}"):
        return "Cancelled by user"

    # Do the operation
    result = operation.execute()

    # Post-approval (verify the result)
    if not agent.checkpoint(f"Verify result of: {operation.description}"):
        operation.rollback()
        return "Rolled back by user"

    return result
Enter fullscreen mode Exit fullscreen mode

รูปแบบที่ 2: เกณฑ์ความเชื่อมั่น (Confidence thresholds)

อย่าปล่อยให้ agent ดำเนินการตามการตัดสินใจที่มีความเชื่อมั่นต่ำ

MIN_CONFIDENCE = 0.75

def agent_decide(options: list[dict]) -> dict:
    best = max(options, key=lambda x: x.get('confidence', 0))

    if best['confidence'] < MIN_CONFIDENCE:
        # Escalate to human
        return {
            'action': 'escalate',
            'reason': f"Best option has confidence {best['confidence']:.2f} < {MIN_CONFIDENCE}",
            'options': options
        }

    return best
Enter fullscreen mode Exit fullscreen mode

รูปแบบที่ 3: การดำเนินการที่ Idempotent

ออกแบบการกระทำของ agent ให้สามารถทำซ้ำได้โดยไม่มีผลข้างเคียง

import hashlib
import os

def idempotent_write(path: str, content: str) -> bool:
    """Only write if content changed."""
    content_hash = hashlib.sha256(content.encode()).hexdigest()

    existing_hash = None
    if os.path.exists(path):
        with open(path, 'r') as f:
            existing_hash = hashlib.sha256(f.read().encode()).hexdigest()

    if content_hash == existing_hash:
        logger.log_action("write_file", {"path": path}, "Skipped - no changes")
        return False

    with open(path, 'w') as f:
        f.write(content)
    logger.log_action("write_file", {"path": path}, f"Wrote {len(content)} bytes")
    return True
Enter fullscreen mode Exit fullscreen mode

ข้อผิดพลาดที่ควรหลีกเลี่ยง

  • การเชื่อถือพรอมต์ว่าเป็นข้อจำกัด: การระบุว่า “ห้ามลบไฟล์” ในพรอมต์ไม่ใช่ข้อจำกัด สิทธิ์ของไฟล์คือข้อจำกัด
  • ไม่มีแผนการย้อนกลับ: ใช้ git หรือการสำรองข้อมูลสำหรับทุกการเปลี่ยนแปลง
  • การละเลยคะแนนความเชื่อมั่น: LLM ส่วนใหญ่ให้คะแนนความเชื่อมั่น ความเชื่อมั่นต่ำ = หยุดและถามมนุษย์
  • การเฝ้าระวังมากเกินไป: หากคุณกำลังเฝ้าดูทุกขั้นตอน คุณยังไม่ได้สร้างระบบอัตโนมัติ
  • การระบุความสำเร็จที่ไม่ชัดเจน: Agent ต้องรู้ว่าเมื่อใดที่งานเสร็จสิ้น

ทางเลือกและการเปรียบเทียบ

แนวทาง ความเป็นอิสระ ความเสี่ยง เหมาะที่สุดสำหรับ
การเขียนโค้ดด้วยตนเอง ไม่มี ต่ำ งานที่ซับซ้อนและสำคัญ
การเขียนโปรแกรมคู่กับ AI ต่ำ ต่ำ การเรียนรู้, การสำรวจ
Agent ที่ได้รับการดูแล ปานกลาง ปานกลาง งานประจำ
Autonomous agent พร้อมราวกั้น สูง ควบคุมได้ การดำเนินการจำนวนมาก, การโยกย้าย
Autonomous agent เต็มรูปแบบ สูงมาก สูง เวิร์กโฟลว์ที่เชื่อถือได้และผ่านการทดสอบมาอย่างดี

ทีมส่วนใหญ่ควรตั้งเป้าไปที่ “autonomous พร้อมราวกั้น” เป็นจุดที่ลงตัวที่สุด ซึ่งคุณจะประหยัดเวลาได้ถึง 80% โดยมีความเสี่ยงเพียง 10%


กรณีการใช้งานจริง

การโยกย้าย codebase: ทีมหนึ่งใช้ autonomous agent เพื่อโยกย้าย 200 API endpoint จาก REST ไปยัง GraphQL ราวกั้นป้องกันการเปลี่ยนแปลง schema จุดตรวจสอบต้องได้รับการอนุมัติก่อนที่จะลบ endpoint เก่า การโยกย้ายใช้เวลา 3 วันแทนที่จะเป็น 3 สัปดาห์ โดยไม่มีเหตุการณ์ที่ไม่คาดคิดในการผลิตเลย

การสร้างเอกสาร: Agent สร้างเอกสาร API จากโค้ดโดยอัตโนมัติ ราวกั้นช่วยให้แน่ใจว่ามันจะอ่านจากไดเรกทอรีที่เฉพาะเจาะจงเท่านั้น จุดตรวจสอบจะหยุดชั่วคราวก่อนเผยแพร่ ทีมงานตรวจสอบสัปดาห์ละครั้งแทนการเขียนเอกสารด้วยตนเอง

การครอบคลุมการทดสอบ (Test coverage): Agent วิเคราะห์โค้ดและเขียนการทดสอบที่ขาดหายไป ข้อจำกัดงบประมาณป้องกันการสร้างการทดสอบที่ควบคุมไม่ได้ เกณฑ์ความเชื่อมั่นจะระบุการทดสอบที่ไม่แน่นอนสำหรับการตรวจสอบของมนุษย์ Test coverage เพิ่มขึ้นจาก 60% เป็น 85% ในหนึ่งเดือน

สรุป

สิ่งที่คุณได้เรียนรู้:

  • AI agent ล้มเหลวในลักษณะที่คาดเดาได้: ขอบเขตงานขยาย, การสร้าง abstraction ที่ผิด, ความล้มเหลวแบบต่อเนื่อง, การใช้ทรัพยากรจนหมด
  • สามชั้นช่วยแก้ปัญหาได้ส่วนใหญ่: ราวกั้น (การป้องกัน), การตรวจสอบ (การตรวจจับ), จุดตรวจสอบ (การกู้คืน)
  • ราวกั้นคือโค้ด ไม่ใช่พรอมต์ บังคับใช้ข้อจำกัดด้วยการเขียนโปรแกรม
  • การตรวจสอบหมายถึงบันทึกและเมตริกแบบมีโครงสร้าง ไม่ใช่การเฝ้าดูทุกขั้นตอน
  • จุดตรวจสอบช่วยให้มนุษย์ตรวจสอบการตัดสินใจได้โดยไม่ต้องดูแลอย่างต่อเนื่อง
  • API schema จาก Apidog เปลี่ยนเลเยอร์ API ของคุณให้เป็นราวกั้น

ขั้นตอนต่อไปของคุณ:

  1. ระบุงานที่ทำซ้ำๆ โดยใช้ AI ที่สุดของคุณ
  2. กำหนดราวกั้น: สิ่งที่ agent ต้องไม่ทำคืออะไร?
  3. เพิ่มการบันทึกแบบมีโครงสร้างเพื่อดูว่าเกิดอะไรขึ้น
  4. สร้างจุดตรวจสอบสำหรับการดำเนินการที่มีความเสี่ยงสูง
  5. ปล่อยให้มันทำงาน 30 นาที แล้วตรวจสอบบันทึก

เป้าหมายไม่ใช่เพื่อนำมนุษย์ออกจากวงจร แต่เป็นการวางมนุษย์ไว้ในตำแหน่งที่ถูกต้องในวงจร: การตัดสินใจในระดับสูง แทนที่จะแก้ไขข้อผิดพลาดในระดับต่ำ

สร้างราวกั้น API สำหรับ AI agent ของคุณ - ฟรี

คำถามที่พบบ่อย (FAQ)

AI agent กับ AI assistant แตกต่างกันอย่างไร? assistant จะตอบสนองต่อคำขอของคุณและรอคำสั่งถัดไป agent จะรับเป้าหมายและวางแผนพร้อมดำเนินการตามขั้นตอนเพื่อให้บรรลุเป้าหมายนั้นอย่างอิสระ assistant ต้องการคุณในทุกวงจร ส่วน agent จะทำงานต่อไปจนกว่าจะถึงจุดตรวจสอบหรือเสร็จสิ้น

ฉันจะรู้ได้อย่างไรว่า agent ของฉันพร้อมที่จะทำงานอย่างอิสระ? เรียกใช้ในโหมดดูแลเป็นเวลา 10 รอบ ติดตามทุกครั้งที่คุณต้องเข้าแทรกแซง หากการเข้าแทรกแซงลดลงเหลือต่ำกว่า 2 ครั้งต่อรอบ และทั้งหมดเป็นเพียงเรื่องเล็กน้อย (การชี้แจง ไม่ใช่การแก้ไข) ก็ถือว่าพร้อมแล้ว หากมีการเข้าแทรกแซงบ่อยครั้งหรือต้องย้อนกลับการทำงาน ให้เพิ่มราวกั้นให้มากขึ้น

ความเสี่ยงที่ใหญ่ที่สุดของ autonomous agent คืออะไร? ความล้มเหลวแบบต่อเนื่องที่ agent ไม่รู้จัก ความผิดพลาดเล็กๆ ในช่วงแรกจะกลายเป็นปัญหาใหญ่ในภายหลัง และ agent จะทำงานต่อไปเพราะแต่ละขั้นตอนดูสมเหตุสมผลเมื่อพิจารณาแยกกัน จุดตรวจสอบจะหยุดยั้งความล้มเหลวเหล่านี้โดยการบังคับให้มีการยืนยัน

ฉันสามารถใช้รูปแบบเหล่านี้กับ LLM ใดก็ได้หรือไม่? ได้ รูปแบบเหล่านี้ (ราวกั้น, การตรวจสอบ, จุดตรวจสอบ) เป็นแบบที่ไม่ขึ้นกับโมเดล พวกมันใช้งานได้กับ Claude, GPT-4, Gemini หรือโมเดลอื่นๆ รายละเอียดการใช้งานเฉพาะอาจแตกต่างกันไป แต่แนวคิดสามารถนำไปปรับใช้ได้

การตรวจสอบทำให้ agent ทำงานช้าลงแค่ไหน? น้อยมากจนละเลยได้ การเขียนลงไฟล์บันทึกใช้เวลาเพียงไมโครวินาที ความช้าที่เกิดขึ้นมาจากการที่จุดตรวจสอบรอการป้อนข้อมูลจากมนุษย์ สำหรับการทำงานที่เป็นอิสระอย่างแท้จริง คุณจะสร้างจุดตรวจสอบเฉพาะในช่วงเวลาที่มีความเสี่ยงสูงเท่านั้น ไม่ใช่ทุกขั้นตอน

จะทำอย่างไรหาก agent ตัดสินใจในสิ่งที่ฉันไม่เห็นด้วย? นั่นคือสิ่งที่จุดตรวจสอบมีไว้เพื่อ เมื่อคุณเห็นการตัดสินใจที่คุณไม่เห็นด้วย ให้ปฏิเสธจุดตรวจสอบ agent จะย้อนกลับหรือลองใช้วิธีอื่น ที่ดีกว่าคือ: รวมการตั้งค่าของคุณไว้ในคำแนะนำของ agent เพื่อให้มันเรียนรู้สไตล์ของคุณเมื่อเวลาผ่านไป

ฉันควรเริ่มต้นด้วย agent ที่ได้รับการดูแล หรือ autonomous agent ดี? ควรเริ่มต้นด้วยการดูแลเสมอ เรียกใช้ agent พร้อมจุดตรวจสอบในทุกการดำเนินการที่สำคัญจนกว่าคุณจะเชื่อถือมัน ค่อยๆ ลบจุดตรวจสอบสำหรับการดำเนินการที่มีความเสี่ยงต่ำ สิ่งนี้จะสร้างความเชื่อมั่นอย่างค่อยเป็นค่อยไป แทนที่จะเสี่ยงต่อความล้มเหลวร้ายแรงในการทำงานอิสระครั้งแรกของคุณ

Apidog ช่วย AI agent อย่างไรโดยเฉพาะ? Apidog สร้าง API client ที่ผ่านการตรวจสอบแล้วจาก schema ของคุณ เมื่อ agent ใช้ client เหล่านี้ คำขอที่ผิดรูปแบบจะถูกปฏิเสธก่อนที่จะส่งไปถึงแบ็กเอนด์ของคุณ สิ่งนี้ช่วยป้องกันความล้มเหลวหลายประเภทที่ agent ส่งข้อมูลในรูปแบบที่ผิดหรือค่าที่ไม่ถูกต้อง

Top comments (0)