langchain_core.runnables.retry.RunnableRetry¶
- class langchain_core.runnables.retry.RunnableRetry[source]¶
- Bases: - RunnableBindingBase[- Input,- Output]- Retry a Runnable if it fails. - A RunnableRetry helps can be used to add retry logic to any object that subclasses the base Runnable. - Such retries are especially useful for network calls that may fail due to transient errors. - The RunnableRetry is implemented as a RunnableBinding. The easiest way to use it is through the .with_retry() method on all Runnables. - Example: - Here’s an example that uses a RunnableLambda to raise an exception - import time def foo(input) -> None: '''Fake function that raises an exception.''' raise ValueError("Invoking foo failed. At time {time.time()}") runnable = RunnableLambda(foo) runnable_with_retries = runnable.with_retry( retry_exception_types=(ValueError,), # Retry only on ValueError wait_exponential_jitter=True, # Add jitter to the exponential backoff max_attempt_number=2, # Try twice ) # The method invocation above is equivalent to the longer form below: runnable_with_retries = RunnableRetry( bound=runnable, retry_exception_types=(ValueError,), max_attempt_number=2, wait_exponential_jitter=True ) - This logic can be used to retry any Runnable, including a chain of Runnables, but in general it’s best practice to keep the scope of the retry as small as possible. For example, if you have a chain of Runnables, you should only retry the Runnable that is likely to fail, not the entire chain. - Example - from langchain_core.chat_models import ChatOpenAI from langchain_core.prompts import PromptTemplate template = PromptTemplate.from_template("tell me a joke about {topic}.") model = ChatOpenAI(temperature=0.5) # Good chain = template | model.with_retry() # Bad chain = template | model retryable_chain = chain.with_retry() - Create a RunnableBinding from a runnable and kwargs. - Parameters
- bound – The underlying runnable that this runnable delegates calls to. 
- kwargs – optional kwargs to pass to the underlying runnable, when running the underlying runnable (e.g., via invoke, batch, transform, or stream or async variants) 
- config – config_factories: 
- config_factories – optional list of config factories to apply to the 
- custom_input_type – Specify to override the input type of the underlying runnable with a custom type. 
- custom_output_type – Specify to override the output type of the underlying runnable with a custom type. 
- **other_kwargs – Unpacked into the base class. 
 
 - param bound: Runnable[Input, Output] [Required]¶
- The underlying runnable that this runnable delegates to. 
 - param config: RunnableConfig [Optional]¶
- The config to bind to the underlying runnable. 
 - param config_factories: List[Callable[[RunnableConfig], RunnableConfig]] [Optional]¶
- The config factories to bind to the underlying runnable. 
 - param custom_input_type: Optional[Any] = None¶
- Override the input type of the underlying runnable with a custom type. - The type can be a pydantic model, or a type annotation (e.g., List[str]). 
 - param custom_output_type: Optional[Any] = None¶
- Override the output type of the underlying runnable with a custom type. - The type can be a pydantic model, or a type annotation (e.g., List[str]). 
 - param kwargs: Mapping[str, Any] [Optional]¶
- kwargs to pass to the underlying runnable when running. - For example, when the runnable binding is invoked the underlying runnable will be invoked with the same input but with these additional kwargs. 
 - param max_attempt_number: int = 3¶
- The maximum number of attempts to retry the runnable. 
 - param retry_exception_types: Tuple[Type[BaseException], ...] = (<class 'Exception'>,)¶
- The exception types to retry on. By default all exceptions are retried. - In general you should only retry on exceptions that are likely to be transient, such as network errors. - Good exceptions to retry are all server errors (5xx) and selected client errors (4xx) such as 429 Too Many Requests. 
 - param wait_exponential_jitter: bool = True¶
- Whether to add jitter to the exponential backoff. 
 - async abatch(inputs: List[Input], config: Optional[Union[RunnableConfig, List[RunnableConfig]]] = None, *, return_exceptions: bool = False, **kwargs: Any) List[Output][source]¶
- Default implementation runs ainvoke in parallel using asyncio.gather. - The default implementation of batch works well for IO bound runnables. - Subclasses should override this method if they can batch more efficiently; e.g., if the underlying runnable uses an API which supports a batch mode. 
 - async ainvoke(input: Input, config: Optional[RunnableConfig] = None, **kwargs: Any) Output[source]¶
- Default implementation of ainvoke, calls invoke from a thread. - The default implementation allows usage of async code even if the runnable did not implement a native async version of invoke. - Subclasses should override this method if they can run asynchronously. 
 - async astream(input: Input, config: Optional[RunnableConfig] = None, **kwargs: Optional[Any]) AsyncIterator[Output]¶
- Default implementation of astream, which calls ainvoke. Subclasses should override this method if they support streaming output. 
 - async astream_log(input: Any, config: Optional[RunnableConfig] = None, *, diff: bool = True, with_streamed_output_list: bool = True, include_names: Optional[Sequence[str]] = None, include_types: Optional[Sequence[str]] = None, include_tags: Optional[Sequence[str]] = None, exclude_names: Optional[Sequence[str]] = None, exclude_types: Optional[Sequence[str]] = None, exclude_tags: Optional[Sequence[str]] = None, **kwargs: Optional[Any]) Union[AsyncIterator[RunLogPatch], AsyncIterator[RunLog]]¶
- Stream all output from a runnable, as reported to the callback system. This includes all inner runs of LLMs, Retrievers, Tools, etc. - Output is streamed as Log objects, which include a list of jsonpatch ops that describe how the state of the run has changed in each step, and the final state of the run. - The jsonpatch ops can be applied in order to construct state. - Parameters
- input – The input to the runnable. 
- config – The config to use for the runnable. 
- diff – Whether to yield diffs between each step, or the current state. 
- with_streamed_output_list – Whether to yield the streamed_output list. 
- include_names – Only include logs with these names. 
- include_types – Only include logs with these types. 
- include_tags – Only include logs with these tags. 
- exclude_names – Exclude logs with these names. 
- exclude_types – Exclude logs with these types. 
- exclude_tags – Exclude logs with these tags. 
 
 
 - async atransform(input: AsyncIterator[Input], config: Optional[RunnableConfig] = None, **kwargs: Any) AsyncIterator[Output]¶
- Default implementation of atransform, which buffers input and calls astream. Subclasses should override this method if they can start producing output while input is still being generated. 
 - batch(inputs: List[Input], config: Optional[Union[RunnableConfig, List[RunnableConfig]]] = None, *, return_exceptions: bool = False, **kwargs: Any) List[Output][source]¶
- Default implementation runs invoke in parallel using a thread pool executor. - The default implementation of batch works well for IO bound runnables. - Subclasses should override this method if they can batch more efficiently; e.g., if the underlying runnable uses an API which supports a batch mode. 
 - bind(**kwargs: Any) Runnable[Input, Output]¶
- Bind arguments to a Runnable, returning a new Runnable. 
 - config_schema(*, include: Optional[Sequence[str]] = None) Type[BaseModel]¶
- The type of config this runnable accepts specified as a pydantic model. - To mark a field as configurable, see the configurable_fields and configurable_alternatives methods. - Parameters
- include – A list of fields to include in the config schema. 
- Returns
- A pydantic model that can be used to validate config. 
 
 - configurable_alternatives(which: ConfigurableField, *, default_key: str = 'default', prefix_keys: bool = False, **kwargs: Union[Runnable[Input, Output], Callable[[], Runnable[Input, Output]]]) RunnableSerializable[Input, Output]¶
 - configurable_fields(**kwargs: Union[ConfigurableField, ConfigurableFieldSingleOption, ConfigurableFieldMultiOption]) RunnableSerializable[Input, Output]¶
 - classmethod construct(_fields_set: Optional[SetStr] = None, **values: Any) Model¶
- Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed. Behaves as if Config.extra = ‘allow’ was set since it adds all passed values 
 - copy(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, update: Optional[DictStrAny] = None, deep: bool = False) Model¶
- Duplicate a model, optionally choose which fields to include, exclude and change. - Parameters
- include – fields to include in new model 
- exclude – fields to exclude from new model, as with values this takes precedence over include 
- update – values to change/add in the new model. Note: the data is not validated before creating the new model: you should trust this data 
- deep – set to True to make a deep copy of the model 
 
- Returns
- new model instance 
 
 - dict(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False) DictStrAny¶
- Generate a dictionary representation of the model, optionally specifying which fields to include or exclude. 
 - classmethod from_orm(obj: Any) Model¶
 - get_input_schema(config: Optional[RunnableConfig] = None) Type[BaseModel]¶
- Get a pydantic model that can be used to validate input to the runnable. - Runnables that leverage the configurable_fields and configurable_alternatives methods will have a dynamic input schema that depends on which configuration the runnable is invoked with. - This method allows to get an input schema for a specific configuration. - Parameters
- config – A config to use when generating the schema. 
- Returns
- A pydantic model that can be used to validate input. 
 
 - get_output_schema(config: Optional[RunnableConfig] = None) Type[BaseModel]¶
- Get a pydantic model that can be used to validate output to the runnable. - Runnables that leverage the configurable_fields and configurable_alternatives methods will have a dynamic output schema that depends on which configuration the runnable is invoked with. - This method allows to get an output schema for a specific configuration. - Parameters
- config – A config to use when generating the schema. 
- Returns
- A pydantic model that can be used to validate output. 
 
 - invoke(input: Input, config: Optional[RunnableConfig] = None, **kwargs: Any) Output[source]¶
- Transform a single input into an output. Override to implement. - Parameters
- input – The input to the runnable. 
- config – A config to use when invoking the runnable. The config supports standard keys like ‘tags’, ‘metadata’ for tracing purposes, ‘max_concurrency’ for controlling how much work to do in parallel, and other keys. Please refer to the RunnableConfig for more details. 
 
- Returns
- The output of the runnable. 
 
 - classmethod is_lc_serializable() bool¶
- Is this class serializable? 
 - json(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, encoder: Optional[Callable[[Any], Any]] = None, models_as_dict: bool = True, **dumps_kwargs: Any) unicode¶
- Generate a JSON representation of the model, include and exclude arguments as per dict(). - encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps(). 
 - classmethod lc_id() List[str]¶
- A unique identifier for this class for serialization purposes. - The unique identifier is a list of strings that describes the path to the object. 
 - map() Runnable[List[Input], List[Output]]¶
- Return a new Runnable that maps a list of inputs to a list of outputs, by calling invoke() with each input. 
 - classmethod parse_file(path: Union[str, Path], *, content_type: unicode = None, encoding: unicode = 'utf8', proto: Protocol = None, allow_pickle: bool = False) Model¶
 - classmethod parse_obj(obj: Any) Model¶
 - classmethod parse_raw(b: Union[str, bytes], *, content_type: unicode = None, encoding: unicode = 'utf8', proto: Protocol = None, allow_pickle: bool = False) Model¶
 - classmethod schema(by_alias: bool = True, ref_template: unicode = '#/definitions/{model}') DictStrAny¶
 - classmethod schema_json(*, by_alias: bool = True, ref_template: unicode = '#/definitions/{model}', **dumps_kwargs: Any) unicode¶
 - stream(input: Input, config: Optional[RunnableConfig] = None, **kwargs: Optional[Any]) Iterator[Output]¶
- Default implementation of stream, which calls invoke. Subclasses should override this method if they support streaming output. 
 - to_json() Union[SerializedConstructor, SerializedNotImplemented]¶
 - to_json_not_implemented() SerializedNotImplemented¶
 - transform(input: Iterator[Input], config: Optional[RunnableConfig] = None, **kwargs: Any) Iterator[Output]¶
- Default implementation of transform, which buffers input and then calls stream. Subclasses should override this method if they can start producing output while input is still being generated. 
 - classmethod update_forward_refs(**localns: Any) None¶
- Try to update ForwardRefs on fields based on this Model, globalns and localns. 
 - classmethod validate(value: Any) Model¶
 - with_config(config: Optional[RunnableConfig] = None, **kwargs: Any) Runnable[Input, Output]¶
- Bind config to a Runnable, returning a new Runnable. 
 - with_fallbacks(fallbacks: Sequence[Runnable[Input, Output]], *, exceptions_to_handle: Tuple[Type[BaseException], ...] = (<class 'Exception'>,)) RunnableWithFallbacksT[Input, Output]¶
- Add fallbacks to a runnable, returning a new Runnable. - Parameters
- fallbacks – A sequence of runnables to try if the original runnable fails. 
- exceptions_to_handle – A tuple of exception types to handle. 
 
- Returns
- A new Runnable that will try the original runnable, and then each fallback in order, upon failures. 
 
 - with_listeners(*, on_start: Optional[Listener] = None, on_end: Optional[Listener] = None, on_error: Optional[Listener] = None) Runnable[Input, Output]¶
- Bind lifecycle listeners to a Runnable, returning a new Runnable. - on_start: Called before the runnable starts running, with the Run object. on_end: Called after the runnable finishes running, with the Run object. on_error: Called if the runnable throws an error, with the Run object. - The Run object contains information about the run, including its id, type, input, output, error, start_time, end_time, and any tags or metadata added to the run. 
 - with_retry(*, retry_if_exception_type: ~typing.Tuple[~typing.Type[BaseException], ...] = (<class 'Exception'>,), wait_exponential_jitter: bool = True, stop_after_attempt: int = 3) Runnable[Input, Output]¶
- Create a new Runnable that retries the original runnable on exceptions. - Parameters
- retry_if_exception_type – A tuple of exception types to retry on 
- wait_exponential_jitter – Whether to add jitter to the wait time between retries 
- stop_after_attempt – The maximum number of attempts to make before giving up 
 
- Returns
- A new Runnable that retries the original runnable on exceptions. 
 
 - with_types(*, input_type: Optional[Type[Input]] = None, output_type: Optional[Type[Output]] = None) Runnable[Input, Output]¶
- Bind input and output types to a Runnable, returning a new Runnable. 
 - property InputType: Type[langchain_core.runnables.utils.Input]¶
- The type of input this runnable accepts specified as a type annotation. 
 - property OutputType: Type[langchain_core.runnables.utils.Output]¶
- The type of output this runnable produces specified as a type annotation. 
 - property config_specs: List[langchain_core.runnables.utils.ConfigurableFieldSpec]¶
- List configurable fields for this runnable. 
 - property input_schema: Type[pydantic.main.BaseModel]¶
- The type of input this runnable accepts specified as a pydantic model. 
 - property lc_attributes: Dict¶
- List of attribute names that should be included in the serialized kwargs. - These attributes must be accepted by the constructor. 
 - property lc_secrets: Dict[str, str]¶
- A map of constructor argument names to secret ids. - For example,
- {“openai_api_key”: “OPENAI_API_KEY”} 
 
 - property output_schema: Type[pydantic.main.BaseModel]¶
- The type of output this runnable produces specified as a pydantic model.