시간 제한 및 회로 차단기
엄격한 시간 제한으로 LLM과 도구 호출을 제한하고, 문제가 있는 의존성에 계속 요청을 보내지 않도록 회로 차단기를 사용해보세요.
시간 제한 및 회로 차단기은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 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%를 더하십시오. p99가 4초인데 시간 제한을 3초로 설정하면 계속해서 잘못된 실패가 발생합니다.
에이전트 전체 시간 제한
기한을 설정하여 전체 에이전트 실행을 감싸십시오:
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(빠른 실패) -> HALF_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)상태 확인
사용자가 문제를 발견하기 전에 각 도구를 주기적으로 ping하여 문제를 감지하십시오:
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.'서킷 브레이커를 사용하는 이유
간헐적으로 실패하는 외부 서비스에 서킷 브레이커를 사용하는 이유는 무엇입니까?
요약
모든 호출에 시간 제한을 설정하십시오. 도구별 서킷 브레이커를 사용하십시오. 동시성을 위해 벌크헤드를 사용하십시오. 상태를 확인하십시오. 우아한 대체 메시지를 제공하십시오.
자주 묻는 질문
“시간 제한 및 회로 차단기” 강의는 무료인가요?
네 — “시간 제한 및 회로 차단기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
“시간 제한 및 회로 차단기”에서 뭘 배우나요?
엄격한 시간 제한으로 LLM과 도구 호출을 제한하고, 문제가 있는 의존성에 계속 요청을 보내지 않도록 회로 차단기를 사용해보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Agents을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“시간 제한 및 회로 차단기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 멱등 도구 및 부작용
- 지수 백오프를 적용한 재시도
- 시간 제한 및 회로 차단기
- 도구 출력 검증(Pydantic)