dspy errors
dspy errors
LM 호출 실패와 어댑터 파싱 실패를 구조화된 예외 클래스로 다루는 방법을 설명하는 페이지예요. DSPy는 오류를 문자열로 흩뿌리지 않고, 어디서 왜 실패했는지 알 수 있는 예외 타입을 제공해요.
출처: 문서
본문
DSPy는 LM 실패와 어댑터 파싱 실패를 위한 구조화된 예외 클래스들을 제공해요. LM 오류는 dspy.LMError를 상속하고, dspy.LMError는 다시 dspy.DSPyError를 상속하며, 가능할 때 model, provider, status, request_id, retry_after 같은 메타데이터를 담아요.
dspy.LMError로 어떤 LM 호출 실패든 잡을 수도 있고, 세부 처리가 필요하면 구체적인 하위 클래스를 잡아도 돼요.
try:
result = program(question="...")
except dspy.ContextWindowExceededError as e:
print(f"Prompt was too long for {e.model}")
except dspy.LMRateLimitError as e:
print(f"Rate limited; retry after {e.retry_after} seconds")
except dspy.LMError as e:
print(f"LM failed with code={e.code}, provider={e.provider}, request_id={e.request_id}")
dspy.is_retryable_lm_error(error)로 일반적으로 재시도해도 안전한 LM 실패(rate limit, timeout, 서버 오류, 전송 오류)를 판별할 수 있어요. 내장 dspy.LM은 provider 재시도를 LiteLLM에 위임하지만, 재시도가 모두 소진된 후에는 호출자가 이 헬퍼를 쓸 수 있어요. 재시도 가능성은 참고용이에요. provider 정책과 retry_after를 존중하세요.
try:
result = program(question="...")
except dspy.LMError as e:
if dspy.is_retryable_lm_error(e):
# Schedule another attempt later.
raise
raise
API 레퍼런스
::: dspy.utils.exceptions
handler: python
options:
members:
- DSPyError
- LMError
- LMTransportError
- LMConfigurationError
- LMNotConfiguredError
- LMUnsupportedFeatureError
- LMProviderError
- LMUnexpectedError
- LMAuthError
- LMBillingError
- LMRateLimitError
- LMInvalidRequestError
- ContextWindowExceededError
- LMUnsupportedModelError
- LMTimeoutError
- LMServerError
- is_retryable_lm_error
- AdapterParseError
show_source: true
show_root_heading: false
heading_level: 3
docstring_style: google
show_root_full_path: true
show_object_full_path: false