0Pricing
AI Agents · บทเรียน

หมดเวลาและตัวตัดวงจร

กำหนดเวลาสูงสุดที่เข้มงวดให้การเรียกใช้ LLM และเครื่องมือ และใช้ตัวตัดวงจรเพื่อหยุดการเรียกใช้บริการที่มีปัญหาซ้ำ ๆ

หมดเวลาและตัวตัดวงจร เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

จำกัดการเรียกใช้บริการภายนอกทุกครั้ง

การเรียกใช้เครือข่ายทุกครั้งต้องมีการกำหนดหมดเวลา หากไม่มี การเชื่อมต่อที่ค้างอาจทำให้เอเจนต์ทั้งหมดหยุดชะงัก

HTTP Timeouts

import requests
response = requests.get(url, timeout=(3, 10))   # 3s connect, 10s read

LLM Timeouts

from openai import OpenAI
client = OpenAI(timeout=30.0)

# Or per call:
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    timeout=30.0
)

เลือกการกำหนดหมดเวลาที่เหมาะสม

วัดเวลาแฝง p99 จากการใช้งานจริงแล้วบวกเพิ่ม 25% การตั้งเวลาหมดเป็น 3 วินาทีเมื่อ p99 อยู่ที่ 4 วินาทีจะทำให้เกิดความล้มเหลวที่ไม่เป็นจริงอยู่ตลอด

การกำหนดหมดเวลารวมของเอเจนต์

ครอบการทำงานของเอเจนต์ทั้งหมดด้วยกำหนดเส้นตาย:

import asyncio

async def run_agent_with_deadline(query, deadline_s=60):
    try:
        return await asyncio.wait_for(run_agent(query), timeout=deadline_s)
    except asyncio.TimeoutError:
        return 'Sorry, this is taking too long. Please try again.'

ตัวตัดวงจรคืออะไร

รูปแบบการทำงาน: เมื่อบริการปลายทางเริ่มล้มเหลว ให้ "เปิด" วงจรและหยุดเรียกใช้บริการนั้นชั่วคราว จากนั้นกู้คืนโดยอัตโนมัติหลังผ่านช่วงพัก

สถานะ: CLOSED (ทำงานตามปกติ) -> OPEN (ล้มเหลวอย่างรวดเร็ว) -> กึ่งเปิด (ทดลองเรียก) -> CLOSED (กู้คืนแล้ว)

Implementing with pybreaker

# pip install pybreaker
import pybreaker

breaker = pybreaker.CircuitBreaker(fail_max=5, reset_timeout=60)

@breaker
def fragile_call():
    return requests.get(url, timeout=5).json()

หลังจากล้มเหลว 5 ครั้ง

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

ส่งคืนทางเลือกสำรองที่เหมาะสม

เมื่อตัวตัดวงจรเปิดอยู่ ให้ส่งคืนทางเลือกสำรองอย่างเหมาะสมแทนการทำให้เอเจนต์หยุดทำงาน:

try:
    result = fragile_call()
except pybreaker.CircuitBreakerError:
    result = {'error': 'service-unavailable', 'fallback': 'cached or stale data'}

ตัวตัดวงจรแยกตามเครื่องมือ

การพึ่งพาภายนอกแต่ละรายการควรมีตัวตัดวงจรของตัวเอง บริการที่มีปัญหารายการหนึ่งไม่ควรส่งผลต่อการเรียกใช้บริการที่ยังทำงานได้:

การแบ่งส่วนทรัพยากร

จำกัดจำนวนการเรียกใช้พร้อมกันของเครื่องมือแต่ละรายการด้วยเซมาฟอร์ เพื่อป้องกันไม่ให้การพึ่งพารายการหนึ่งที่ทำงานช้ากินทรัพยากรผู้ปฏิบัติงานทั้งหมด:

from asyncio import Semaphore
search_sem = Semaphore(10)

async def search(query):
    async with search_sem:
        return await tavily_search(query)

การตรวจสอบสถานะ

ส่งสัญญาณไปยังเครื่องมือแต่ละรายการเป็นระยะ เพื่อตรวจพบปัญหาก่อนที่ผู้ใช้จะพบ:

async def health_check():
    for tool in [tavily, openai, vector_db]:
        try:
            await tool.ping()
        except Exception as e:
            alert(f'{tool.name} unhealthy: {e}')

แสดงสถานะให้ผู้ใช้ทราบ

เมื่อเครื่องมือสำคัญใช้งานไม่ได้ ให้แจ้งผู้ใช้:

if tavily_breaker.current_state == 'open':
    return 'Web search is temporarily unavailable.'

เหตุใดจึงต้องใช้ตัวตัดวงจร

เหตุใดจึงควรใช้ตัวตัดวงจรกับบริการภายนอกที่ไม่เสถียร

สรุป

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

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

บทเรียน “หมดเวลาและตัวตัดวงจร” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “หมดเวลาและตัวตัดวงจร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “หมดเวลาและตัวตัดวงจร”

กำหนดเวลาสูงสุดที่เข้มงวดให้การเรียกใช้ LLM และเครื่องมือ และใช้ตัวตัดวงจรเพื่อหยุดการเรียกใช้บริการที่มีปัญหาซ้ำ ๆ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “หมดเวลาและตัวตัดวงจร” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เครื่องมือแบบทำซ้ำได้อย่างปลอดภัยและผลข้างเคียง
  2. การลองใหม่ด้วยการหน่วงแบบทวีคูณ
  3. หมดเวลาและตัวตัดวงจร
  4. การตรวจสอบผลลัพธ์เครื่องมือ (Pydantic)
← กลับไปที่ AI Agents