หมดเวลาและตัวตัดวงจร
กำหนดเวลาสูงสุดที่เข้มงวดให้การเรียกใช้ 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 readLLM 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เครื่องมือแบบทำซ้ำได้อย่างปลอดภัยและผลข้างเคียง
- การลองใหม่ด้วยการหน่วงแบบทวีคูณ
- หมดเวลาและตัวตัดวงจร
- การตรวจสอบผลลัพธ์เครื่องมือ (Pydantic)