Home / Function/ create_base_retry_decorator() — langchain Function Reference

create_base_retry_decorator() — langchain Function Reference

Architecture documentation for the create_base_retry_decorator() function in llms.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  eca3f969_601a_ea54_6966_ed46d1d6b461["create_base_retry_decorator()"]
  a4692bf1_369d_4673_b1eb_6b9a8cbb9994["llms.py"]
  eca3f969_601a_ea54_6966_ed46d1d6b461 -->|defined in| a4692bf1_369d_4673_b1eb_6b9a8cbb9994
  b2f4f0d8_9586_a5f0_0e59_fb3a00a9c3ca["_log_error_once()"]
  eca3f969_601a_ea54_6966_ed46d1d6b461 -->|calls| b2f4f0d8_9586_a5f0_0e59_fb3a00a9c3ca
  style eca3f969_601a_ea54_6966_ed46d1d6b461 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/langchain_core/language_models/llms.py lines 73–128

def create_base_retry_decorator(
    error_types: list[type[BaseException]],
    max_retries: int = 1,
    run_manager: AsyncCallbackManagerForLLMRun | CallbackManagerForLLMRun | None = None,
) -> Callable[[Any], Any]:
    """Create a retry decorator for a given LLM and provided a list of error types.

    Args:
        error_types: List of error types to retry on.
        max_retries: Number of retries.
        run_manager: Callback manager for the run.

    Returns:
        A retry decorator.

    Raises:
        ValueError: If the cache is not set and cache is True.
    """
    logging_ = before_sleep_log(logger, logging.WARNING)

    def _before_sleep(retry_state: RetryCallState) -> None:
        logging_(retry_state)
        if run_manager:
            if isinstance(run_manager, AsyncCallbackManagerForLLMRun):
                coro = run_manager.on_retry(retry_state)
                try:
                    try:
                        loop = asyncio.get_event_loop()
                    except RuntimeError:
                        asyncio.run(coro)
                    else:
                        if loop.is_running():
                            task = loop.create_task(coro)
                            _background_tasks.add(task)
                            task.add_done_callback(_background_tasks.discard)
                        else:
                            asyncio.run(coro)
                except Exception as e:
                    _log_error_once(f"Error in on_retry: {e}")
            else:
                run_manager.on_retry(retry_state)

    min_seconds = 4
    max_seconds = 10
    # Wait 2^x * 1 second between each retry starting with
    # 4 seconds, then up to 10 seconds, then 10 seconds afterwards
    retry_instance: retry_base = retry_if_exception_type(error_types[0])
    for error in error_types[1:]:
        retry_instance |= retry_if_exception_type(error)
    return retry(
        reraise=True,
        stop=stop_after_attempt(max_retries),
        wait=wait_exponential(multiplier=1, min=min_seconds, max=max_seconds),
        retry=retry_instance,
        before_sleep=_before_sleep,
    )

Domain

Subdomains

Frequently Asked Questions

What does create_base_retry_decorator() do?
create_base_retry_decorator() is a function in the langchain codebase, defined in libs/core/langchain_core/language_models/llms.py.
Where is create_base_retry_decorator() defined?
create_base_retry_decorator() is defined in libs/core/langchain_core/language_models/llms.py at line 73.
What does create_base_retry_decorator() call?
create_base_retry_decorator() calls 1 function(s): _log_error_once.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free