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

더 알아보기 (Learn more)