gen_ai_hub.proxy.langchain.amazon
index
/home/jenkins/agent/workspace/ation_generative-ai-hub-sdk_main/gen_ai_hub/proxy/langchain/amazon.py

 
Modules
       
logging

 
Classes
       
pydantic.main.BaseModel(builtins.object)
AICoreBedrockBaseModel
BedrockEmbeddings(AICoreBedrockBaseModel, langchain_community.embeddings.bedrock.BedrockEmbeddings)
ChatBedrock(AICoreBedrockBaseModel, langchain_aws.chat_models.bedrock.ChatBedrock)
ChatBedrockConverse(AICoreBedrockBaseModel, langchain_aws.chat_models.bedrock_converse.ChatBedrockConverse)

 
class AICoreBedrockBaseModel(pydantic.main.BaseModel)
    AICoreBedrockBaseModel(*args, model_id: str = '', deployment_id: str = '', model_name: str = '', config_id: str = '', config_name: str = '', proxy_client: Optional[gen_ai_hub.proxy.core.base.BaseProxyClient] = None, **kwargs) -> None
 
AICoreBedrockBaseModel provides all adjustments
to boto3 based LangChain classes to enable communication
with SAP AI Core.
 
 
Method resolution order:
AICoreBedrockBaseModel
pydantic.main.BaseModel
builtins.object

Methods defined here:
__init__(self, *args, model_id: str = '', deployment_id: str = '', model_name: str = '', config_id: str = '', config_name: str = '', proxy_client: Optional[gen_ai_hub.proxy.core.base.BaseProxyClient] = None, **kwargs)
Initializes the AICoreBedrockBaseModel with AICore specific parameters. 
    Extends the constructor of the base class with aicore specific parameters
 
:param model_id: the model identifier, defaults to ""
:type model_id: str, optional
:param deployment_id: the deployment identifier, defaults to ""
:type deployment_id: str, optional
:param model_name: the model name, defaults to ""
:type model_name: str, optional
:param config_id: the configuration identifier, defaults to ""
:type config_id: str, optional
:param config_name: the configuration name, defaults to ""
:type config_name: str, optional
:param proxy_client: the proxy client to use, defaults to None
:type proxy_client: Optional[BaseProxyClient], optional

Class methods defined here:
get_corresponding_model_id(model_name) from pydantic._internal._model_construction.ModelMetaclass
Gets the corresponding model ID for a given model name.
 
:param model_name: the model name
:type model_name: str
:raises ValueError: if the model name is not supported
:return: the corresponding model ID
:rtype: str
validate_environment(values: Dict) -> Dict from pydantic._internal._model_construction.ModelMetaclass
Validates and sets up the environment for the model.
 
:param values: the input values
:type values: Dict
:return: the validated values
:rtype: Dict

Data descriptors defined here:
__weakref__
list of weak references to the object (if defined)

Data and other attributes defined here:
__abstractmethods__ = frozenset()
__class_vars__ = set()
__private_attributes__ = {}
__pydantic_complete__ = True
__pydantic_computed_fields__ = {}
__pydantic_core_schema__ = {'cls': <class 'gen_ai_hub.proxy.langchain.amazon.AICoreBedrockBaseModel'>, 'config': {'extra_fields_behavior': 'allow', 'title': 'AICoreBedrockBaseModel'}, 'custom_init': True, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_sche....proxy.langchain.amazon.AICoreBedrockBaseModel'>>]}, 'ref': 'gen_ai_hub.proxy.langchain.amazon.AICoreBedrockBaseModel:139913196726208', 'root_model': False, 'schema': {'function': {'function': <bound method AICoreBedrockBaseModel.validate_en....proxy.langchain.amazon.AICoreBedrockBaseModel'>>, 'type': 'no-info'}, 'schema': {'computed_fields': [], 'fields': {}, 'model_name': 'AICoreBedrockBaseModel', 'type': 'model-fields'}, 'type': 'function-before'}, 'type': 'model'}
__pydantic_custom_init__ = True
__pydantic_decorators__ = DecoratorInfos(validators={}, field_validators={...coratorInfo(mode='before'))}, computed_fields={})
__pydantic_fields__ = {}
__pydantic_generic_metadata__ = {'args': (), 'origin': None, 'parameters': ()}
__pydantic_parent_namespace__ = None
__pydantic_post_init__ = None
__pydantic_serializer__ = SchemaSerializer(serializer=Model( ModelSeri...ICoreBedrockBaseModel", }, ), definitions=[])
__pydantic_setattr_handlers__ = {}
__pydantic_validator__ = SchemaValidator(title="AICoreBedrockBaseModel", ...l", }, ), definitions=[], cache_strings=True)
__signature__ = <Signature (*args, model_id: str = '', deploymen....base.BaseProxyClient] = None, **kwargs) -> None>
model_config = {'extra': 'allow'}

Methods inherited from pydantic.main.BaseModel:
__copy__(self) -> 'Self'
Returns a shallow copy of the model.
__deepcopy__(self, memo: 'dict[int, Any] | None' = None) -> 'Self'
Returns a deep copy of the model.
__delattr__(self, item: 'str') -> 'Any'
Implement delattr(self, name).
__eq__(self, other: 'Any') -> 'bool'
Return self==value.
__getattr__(self, item: 'str') -> 'Any'
__getstate__(self) -> 'dict[Any, Any]'
__iter__(self) -> 'TupleGenerator'
So `dict(model)` works.
__pretty__(self, fmt: 'Callable[[Any], Any]', **kwargs: 'Any') -> 'Generator[Any]'
Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.
__replace__(self, **changes: 'Any') -> 'Self'
# Because we make use of `@dataclass_transform()`, `__replace__` is already synthesized by
# type checkers, so we define the implementation in this `if not TYPE_CHECKING:` block:
__repr__(self) -> 'str'
Return repr(self).
__repr_args__(self) -> '_repr.ReprArgs'
__repr_name__(self) -> 'str'
Name of the instance's class, used in __repr__.
__repr_recursion__(self, object: 'Any') -> 'str'
Returns the string representation of a recursive object.
__repr_str__(self, join_str: 'str') -> 'str'
__rich_repr__(self) -> 'RichReprResult'
Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.
__setattr__(self, name: 'str', value: 'Any') -> 'None'
Implement setattr(self, name, value).
__setstate__(self, state: 'dict[Any, Any]') -> 'None'
__str__(self) -> 'str'
Return str(self).
copy(self, *, include: 'AbstractSetIntStr | MappingIntStrAny | None' = None, exclude: 'AbstractSetIntStr | MappingIntStrAny | None' = None, update: 'Dict[str, Any] | None' = None, deep: 'bool' = False) -> 'Self'
Returns a copy of the model.
 
!!! warning "Deprecated"
    This method is now deprecated; use `model_copy` instead.
 
If you need `include` or `exclude`, use:
 
```python {test="skip" lint="skip"}
data = self.model_dump(include=include, exclude=exclude, round_trip=True)
data = {**data, **(update or {})}
copied = self.model_validate(data)
```
 
Args:
    include: Optional set or mapping specifying which fields to include in the copied model.
    exclude: Optional set or mapping specifying which fields to exclude in the copied model.
    update: Optional dictionary of field-value pairs to override field values in the copied model.
    deep: If True, the values of fields that are Pydantic models will be deep-copied.
 
Returns:
    A copy of the model with included, excluded and updated fields as specified.
dict(self, *, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, by_alias: 'bool' = False, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False) -> 'Dict[str, Any]'
json(self, *, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, by_alias: 'bool' = False, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, encoder: 'Callable[[Any], Any] | None' = PydanticUndefined, models_as_dict: 'bool' = PydanticUndefined, **dumps_kwargs: 'Any') -> 'str'
model_copy(self, *, update: 'Mapping[str, Any] | None' = None, deep: 'bool' = False) -> 'Self'
!!! abstract "Usage Documentation"
    [`model_copy`](../concepts/models.md#model-copy)
 
Returns a copy of the model.
 
!!! note
    The underlying instance's [`__dict__`][object.__dict__] attribute is copied. This
    might have unexpected side effects if you store anything in it, on top of the model
    fields (e.g. the value of [cached properties][functools.cached_property]).
 
Args:
    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.
model_dump(self, *, mode: "Literal['json', 'python'] | str" = 'python', include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, exclude_computed_fields: 'bool' = False, round_trip: 'bool' = False, warnings: "bool | Literal['none', 'warn', 'error']" = True, fallback: 'Callable[[Any], Any] | None' = None, serialize_as_any: 'bool' = False) -> 'dict[str, Any]'
!!! abstract "Usage Documentation"
    [`model_dump`](../concepts/serialization.md#python-mode)
 
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
 
Args:
    mode: The mode in which `to_python` should run.
        If mode is 'json', the output will only contain JSON serializable types.
        If mode is 'python', the output may contain non-JSON-serializable Python objects.
    include: A set of fields to include in the output.
    exclude: A set of fields to exclude from the output.
    context: Additional context to pass to the serializer.
    by_alias: Whether to use the field's alias in the dictionary key if defined.
    exclude_unset: Whether to exclude fields that have not been explicitly set.
    exclude_defaults: Whether to exclude fields that are set to their default value.
    exclude_none: Whether to exclude fields that have a value of `None`.
    exclude_computed_fields: Whether to exclude computed fields.
        While this can be useful for round-tripping, it is usually recommended to use the dedicated
        `round_trip` parameter instead.
    round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
    warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
        "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
    fallback: A function to call when an unknown value is encountered. If not provided,
        a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
    serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
 
Returns:
    A dictionary representation of the model.
model_dump_json(self, *, indent: 'int | None' = None, ensure_ascii: 'bool' = False, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, exclude_computed_fields: 'bool' = False, round_trip: 'bool' = False, warnings: "bool | Literal['none', 'warn', 'error']" = True, fallback: 'Callable[[Any], Any] | None' = None, serialize_as_any: 'bool' = False) -> 'str'
!!! abstract "Usage Documentation"
    [`model_dump_json`](../concepts/serialization.md#json-mode)
 
Generates a JSON representation of the model using Pydantic's `to_json` method.
 
Args:
    indent: Indentation to use in the JSON output. If None is passed, the output will be compact.
    ensure_ascii: If `True`, the output is guaranteed to have all incoming non-ASCII characters escaped.
        If `False` (the default), these characters will be output as-is.
    include: Field(s) to include in the JSON output.
    exclude: Field(s) to exclude from the JSON output.
    context: Additional context to pass to the serializer.
    by_alias: Whether to serialize using field aliases.
    exclude_unset: Whether to exclude fields that have not been explicitly set.
    exclude_defaults: Whether to exclude fields that are set to their default value.
    exclude_none: Whether to exclude fields that have a value of `None`.
    exclude_computed_fields: Whether to exclude computed fields.
        While this can be useful for round-tripping, it is usually recommended to use the dedicated
        `round_trip` parameter instead.
    round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
    warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
        "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
    fallback: A function to call when an unknown value is encountered. If not provided,
        a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
    serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
 
Returns:
    A JSON string representation of the model.
model_post_init(self, context: 'Any', /) -> 'None'
Override this method to perform additional initialization after `__init__` and `model_construct`.
This is useful if you want to do some validation that requires the entire model to be initialized.

Class methods inherited from pydantic.main.BaseModel:
__class_getitem__(typevar_values: 'type[Any] | tuple[type[Any], ...]') -> 'type[BaseModel] | _forward_ref.PydanticRecursiveRef' from pydantic._internal._model_construction.ModelMetaclass
__get_pydantic_core_schema__(source: 'type[BaseModel]', handler: 'GetCoreSchemaHandler', /) -> 'CoreSchema' from pydantic._internal._model_construction.ModelMetaclass
__get_pydantic_json_schema__(core_schema: 'CoreSchema', handler: 'GetJsonSchemaHandler', /) -> 'JsonSchemaValue' from pydantic._internal._model_construction.ModelMetaclass
Hook into generating the model's JSON schema.
 
Args:
    core_schema: A `pydantic-core` CoreSchema.
        You can ignore this argument and call the handler with a new CoreSchema,
        wrap this CoreSchema (`{'type': 'nullable', 'schema': current_schema}`),
        or just call the handler with the original schema.
    handler: Call into Pydantic's internal JSON schema generation.
        This will raise a `pydantic.errors.PydanticInvalidForJsonSchema` if JSON schema
        generation fails.
        Since this gets called by `BaseModel.model_json_schema` you can override the
        `schema_generator` argument to that function to change JSON schema generation globally
        for a type.
 
Returns:
    A JSON schema, as a Python object.
__pydantic_init_subclass__(**kwargs: 'Any') -> 'None' from pydantic._internal._model_construction.ModelMetaclass
This is intended to behave just like `__init_subclass__`, but is called by `ModelMetaclass`
only after basic class initialization is complete. In particular, attributes like `model_fields` will
be present when this is called, but forward annotations are not guaranteed to be resolved yet,
meaning that creating an instance of the class may fail.
 
This is necessary because `__init_subclass__` will always be called by `type.__new__`,
and it would require a prohibitively large refactor to the `ModelMetaclass` to ensure that
`type.__new__` was called in such a manner that the class would already be sufficiently initialized.
 
This will receive the same `kwargs` that would be passed to the standard `__init_subclass__`, namely,
any kwargs passed to the class definition that aren't used internally by Pydantic.
 
Args:
    **kwargs: Any keyword arguments passed to the class definition that aren't used internally
        by Pydantic.
 
Note:
    You may want to override [`__pydantic_on_complete__()`][pydantic.main.BaseModel.__pydantic_on_complete__]
    instead, which is called once the class and its fields are fully initialized and ready for validation.
__pydantic_on_complete__() -> 'None' from pydantic._internal._model_construction.ModelMetaclass
This is called once the class and its fields are fully initialized and ready to be used.
 
This typically happens when the class is created (just before
[`__pydantic_init_subclass__()`][pydantic.main.BaseModel.__pydantic_init_subclass__] is called on the superclass),
except when forward annotations are used that could not immediately be resolved.
In that case, it will be called later, when the model is rebuilt automatically or explicitly using
[`model_rebuild()`][pydantic.main.BaseModel.model_rebuild].
construct(_fields_set: 'set[str] | None' = None, **values: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
from_orm(obj: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
model_construct(_fields_set: 'set[str] | None' = None, **values: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Creates a new instance of the `Model` class with validated data.
 
Creates a new model setting `__dict__` and `__pydantic_fields_set__` from trusted or pre-validated data.
Default values are respected, but no other validation is performed.
 
!!! note
    `model_construct()` generally respects the `model_config.extra` setting on the provided model.
    That is, if `model_config.extra == 'allow'`, then all extra passed values are added to the model instance's `__dict__`
    and `__pydantic_extra__` fields. If `model_config.extra == 'ignore'` (the default), then all extra passed values are ignored.
    Because no validation is performed with a call to `model_construct()`, having `model_config.extra == 'forbid'` does not result in
    an error if extra values are passed, but they will be ignored.
 
Args:
    _fields_set: A set of field names that were originally explicitly set during instantiation. If provided,
        this is directly used for the [`model_fields_set`][pydantic.BaseModel.model_fields_set] attribute.
        Otherwise, the field names from the `values` argument will be used.
    values: Trusted or pre-validated data dictionary.
 
Returns:
    A new instance of the `Model` class with validated data.
model_json_schema(by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}', schema_generator: 'type[GenerateJsonSchema]' = <class 'pydantic.json_schema.GenerateJsonSchema'>, mode: 'JsonSchemaMode' = 'validation', *, union_format: "Literal['any_of', 'primitive_type_array']" = 'any_of') -> 'dict[str, Any]' from pydantic._internal._model_construction.ModelMetaclass
Generates a JSON schema for a model class.
 
Args:
    by_alias: Whether to use attribute aliases or not.
    ref_template: The reference template.
    union_format: The format to use when combining schemas from unions together. Can be one of:
 
        - `'any_of'`: Use the [`anyOf`](https://json-schema.org/understanding-json-schema/reference/combining#anyOf)
        keyword to combine schemas (the default).
        - `'primitive_type_array'`: Use the [`type`](https://json-schema.org/understanding-json-schema/reference/type)
        keyword as an array of strings, containing each type of the combination. If any of the schemas is not a primitive
        type (`string`, `boolean`, `null`, `integer` or `number`) or contains constraints/metadata, falls back to
        `any_of`.
    schema_generator: To override the logic used to generate the JSON schema, as a subclass of
        `GenerateJsonSchema` with your desired modifications
    mode: The mode in which to generate the schema.
 
Returns:
    The JSON schema for the given model class.
model_parametrized_name(params: 'tuple[type[Any], ...]') -> 'str' from pydantic._internal._model_construction.ModelMetaclass
Compute the class name for parametrizations of generic classes.
 
This method can be overridden to achieve a custom naming scheme for generic BaseModels.
 
Args:
    params: Tuple of types of the class. Given a generic class
        `Model` with 2 type variables and a concrete model `Model[str, int]`,
        the value `(str, int)` would be passed to `params`.
 
Returns:
    String representing the new class where `params` are passed to `cls` as type variables.
 
Raises:
    TypeError: Raised when trying to generate concrete names for non-generic models.
model_rebuild(*, force: 'bool' = False, raise_errors: 'bool' = True, _parent_namespace_depth: 'int' = 2, _types_namespace: 'MappingNamespace | None' = None) -> 'bool | None' from pydantic._internal._model_construction.ModelMetaclass
Try to rebuild the pydantic-core schema for the model.
 
This may be necessary when one of the annotations is a ForwardRef which could not be resolved during
the initial attempt to build the schema, and automatic rebuilding fails.
 
Args:
    force: Whether to force the rebuilding of the model schema, defaults to `False`.
    raise_errors: Whether to raise errors, defaults to `True`.
    _parent_namespace_depth: The depth level of the parent namespace, defaults to 2.
    _types_namespace: The types namespace, defaults to `None`.
 
Returns:
    Returns `None` if the schema is already "complete" and rebuilding was not required.
    If rebuilding _was_ required, returns `True` if rebuilding was successful, otherwise `False`.
model_validate(obj: 'Any', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, from_attributes: 'bool | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Validate a pydantic model instance.
 
Args:
    obj: The object to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    from_attributes: Whether to extract data from object attributes.
    context: Additional context to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Raises:
    ValidationError: If the object could not be validated.
 
Returns:
    The validated model instance.
model_validate_json(json_data: 'str | bytes | bytearray', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
!!! abstract "Usage Documentation"
    [JSON Parsing](../concepts/json.md#json-parsing)
 
Validate the given JSON data against the Pydantic model.
 
Args:
    json_data: The JSON data to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    context: Extra variables to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Returns:
    The validated Pydantic model.
 
Raises:
    ValidationError: If `json_data` is not a JSON string or the object could not be validated.
model_validate_strings(obj: 'Any', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Validate the given object with string data against the Pydantic model.
 
Args:
    obj: The object containing string data to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    context: Extra variables to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Returns:
    The validated Pydantic model.
parse_file(path: 'str | Path', *, content_type: 'str | None' = None, encoding: 'str' = 'utf8', proto: 'DeprecatedParseProtocol | None' = None, allow_pickle: 'bool' = False) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
parse_obj(obj: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
parse_raw(b: 'str | bytes', *, content_type: 'str | None' = None, encoding: 'str' = 'utf8', proto: 'DeprecatedParseProtocol | None' = None, allow_pickle: 'bool' = False) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
schema(by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}') -> 'Dict[str, Any]' from pydantic._internal._model_construction.ModelMetaclass
schema_json(*, by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}', **dumps_kwargs: 'Any') -> 'str' from pydantic._internal._model_construction.ModelMetaclass
update_forward_refs(**localns: 'Any') -> 'None' from pydantic._internal._model_construction.ModelMetaclass
validate(value: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass

Readonly properties inherited from pydantic.main.BaseModel:
__fields_set__
model_extra
Get extra fields set during validation.
 
Returns:
    A dictionary of extra fields, or `None` if `config.extra` is not set to `"allow"`.
model_fields_set
Returns the set of fields that have been explicitly set on this model instance.
 
Returns:
    A set of strings representing the fields that have been set,
        i.e. that were not filled from defaults.

Data descriptors inherited from pydantic.main.BaseModel:
__dict__
dictionary for instance variables (if defined)
__pydantic_extra__
__pydantic_fields_set__
__pydantic_private__

Data and other attributes inherited from pydantic.main.BaseModel:
__annotations__ = {}
__hash__ = None
__pydantic_root_model__ = False
model_computed_fields = {}
model_fields = {}

 
class BedrockEmbeddings(AICoreBedrockBaseModel, langchain_community.embeddings.bedrock.BedrockEmbeddings)
    BedrockEmbeddings(*args, client: Any = None, region_name: Optional[str] = None, credentials_profile_name: Optional[str] = None, model_id: str = 'amazon.titan-embed-text-v1', model_kwargs: Optional[Dict] = None, endpoint_url: Optional[str] = None, normalize: bool = False, **kwargs) -&gt; None
 
Drop-in replacement for LangChain BedrockEmbeddings.
 
 
Method resolution order:
BedrockEmbeddings
AICoreBedrockBaseModel
langchain_community.embeddings.bedrock.BedrockEmbeddings
pydantic.main.BaseModel
langchain_core.embeddings.embeddings.Embeddings
abc.ABC
builtins.object

Methods defined here:
__init__(self, *args, **kwargs)
Initializes the AICoreBedrockBaseModel with AICore specific parameters. 
    Extends the constructor of the base class with aicore specific parameters
 
:param model_id: the model identifier, defaults to ""
:type model_id: str, optional
:param deployment_id: the deployment identifier, defaults to ""
:type deployment_id: str, optional
:param model_name: the model name, defaults to ""
:type model_name: str, optional
:param config_id: the configuration identifier, defaults to ""
:type config_id: str, optional
:param config_name: the configuration name, defaults to ""
:type config_name: str, optional
:param proxy_client: the proxy client to use, defaults to None
:type proxy_client: Optional[BaseProxyClient], optional

Data and other attributes defined here:
__abstractmethods__ = frozenset()
__class_vars__ = set()
__private_attributes__ = {}
__pydantic_complete__ = True
__pydantic_computed_fields__ = {}
__pydantic_core_schema__ = {'cls': <class 'gen_ai_hub.proxy.langchain.amazon.BedrockEmbeddings'>, 'config': {'extra_fields_behavior': 'allow', 'title': 'BedrockEmbeddings'}, 'custom_init': True, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_sche...i_hub.proxy.langchain.amazon.BedrockEmbeddings'>>]}, 'ref': 'gen_ai_hub.proxy.langchain.amazon.BedrockEmbeddings:139913196741376', 'root_model': False, 'schema': {'function': {'function': <bound method AICoreBedrockBaseModel.validate_en...i_hub.proxy.langchain.amazon.BedrockEmbeddings'>>, 'type': 'no-info'}, 'schema': {'computed_fields': [], 'fields': {'client': {'metadata': {}, 'schema': {'default': None, 'schema': {...}, 'type': 'default'}, 'type': 'model-field'}, 'credentials_profile_name': {'metadata': {}, 'schema': {'default': None, 'schema': {...}, 'type': 'default'}, 'type': 'model-field'}, 'endpoint_url': {'metadata': {}, 'schema': {'default': None, 'schema': {...}, 'type': 'default'}, 'type': 'model-field'}, 'model_id': {'metadata': {}, 'schema': {'default': 'amazon.titan-embed-text-v1', 'schema': {...}, 'type': 'default'}, 'type': 'model-field'}, 'model_kwargs': {'metadata': {}, 'schema': {'default': None, 'schema': {...}, 'type': 'default'}, 'type': 'model-field'}, 'normalize': {'metadata': {}, 'schema': {'default': False, 'schema': {...}, 'type': 'default'}, 'type': 'model-field'}, 'region_name': {'metadata': {}, 'schema': {'default': None, 'schema': {...}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'BedrockEmbeddings', 'type': 'model-fields'}, 'type': 'function-before'}, 'type': 'model'}
__pydantic_custom_init__ = True
__pydantic_decorators__ = DecoratorInfos(validators={}, field_validators={...coratorInfo(mode='before'))}, computed_fields={})
__pydantic_fields__ = {'client': FieldInfo(annotation=Any, required=False, default=None), 'credentials_profile_name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'endpoint_url': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'model_id': FieldInfo(annotation=str, required=False, default='amazon.titan-embed-text-v1'), 'model_kwargs': FieldInfo(annotation=Union[Dict, NoneType], required=False, default=None), 'normalize': FieldInfo(annotation=bool, required=False, default=False), 'region_name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None)}
__pydantic_generic_metadata__ = {'args': (), 'origin': None, 'parameters': ()}
__pydantic_parent_namespace__ = None
__pydantic_post_init__ = None
__pydantic_serializer__ = SchemaSerializer(serializer=Model( ModelSeri...e: "BedrockEmbeddings", }, ), definitions=[])
__pydantic_setattr_handlers__ = {}
__pydantic_validator__ = SchemaValidator(title="BedrockEmbeddings", valid...s", }, ), definitions=[], cache_strings=True)
__signature__ = <Signature (*args, client: Any = None, region_na...None, normalize: bool = False, **kwargs) -> None>
model_config = {'extra': 'allow', 'protected_namespaces': ()}

Class methods inherited from AICoreBedrockBaseModel:
get_corresponding_model_id(model_name) from pydantic._internal._model_construction.ModelMetaclass
Gets the corresponding model ID for a given model name.
 
:param model_name: the model name
:type model_name: str
:raises ValueError: if the model name is not supported
:return: the corresponding model ID
:rtype: str
validate_environment(values: Dict) -> Dict from pydantic._internal._model_construction.ModelMetaclass
Validates and sets up the environment for the model.
 
:param values: the input values
:type values: Dict
:return: the validated values
:rtype: Dict

Data descriptors inherited from AICoreBedrockBaseModel:
__weakref__
list of weak references to the object (if defined)

Methods inherited from langchain_community.embeddings.bedrock.BedrockEmbeddings:
async aembed_documents(self, texts: List[str]) -> List[List[float]]
Asynchronous compute doc embeddings using a Bedrock model.
 
Args:
    texts: The list of texts to embed
 
Returns:
    List of embeddings, one for each text.
async aembed_query(self, text: str) -> List[float]
Asynchronous compute query embeddings using a Bedrock model.
 
Args:
    text: The text to embed.
 
Returns:
    Embeddings for the text.
embed_documents(self, texts: List[str]) -> List[List[float]]
Compute doc embeddings using a Bedrock model.
 
Args:
    texts: The list of texts to embed
 
Returns:
    List of embeddings, one for each text.
embed_query(self, text: str) -> List[float]
Compute query embeddings using a Bedrock model.
 
Args:
    text: The text to embed.
 
Returns:
    Embeddings for the text.

Data and other attributes inherited from langchain_community.embeddings.bedrock.BedrockEmbeddings:
__annotations__ = {'client': typing.Any, 'credentials_profile_name': typing.Optional[str], 'endpoint_url': typing.Optional[str], 'model_id': <class 'str'>, 'model_kwargs': typing.Optional[typing.Dict], 'normalize': <class 'bool'>, 'region_name': typing.Optional[str]}
__deprecated__ = 'Use langchain_aws.BedrockEmbeddings instead.'

Methods inherited from pydantic.main.BaseModel:
__copy__(self) -> 'Self'
Returns a shallow copy of the model.
__deepcopy__(self, memo: 'dict[int, Any] | None' = None) -> 'Self'
Returns a deep copy of the model.
__delattr__(self, item: 'str') -> 'Any'
Implement delattr(self, name).
__eq__(self, other: 'Any') -> 'bool'
Return self==value.
__getattr__(self, item: 'str') -> 'Any'
__getstate__(self) -> 'dict[Any, Any]'
__iter__(self) -> 'TupleGenerator'
So `dict(model)` works.
__pretty__(self, fmt: 'Callable[[Any], Any]', **kwargs: 'Any') -> 'Generator[Any]'
Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.
__replace__(self, **changes: 'Any') -> 'Self'
# Because we make use of `@dataclass_transform()`, `__replace__` is already synthesized by
# type checkers, so we define the implementation in this `if not TYPE_CHECKING:` block:
__repr__(self) -> 'str'
Return repr(self).
__repr_args__(self) -> '_repr.ReprArgs'
__repr_name__(self) -> 'str'
Name of the instance's class, used in __repr__.
__repr_recursion__(self, object: 'Any') -> 'str'
Returns the string representation of a recursive object.
__repr_str__(self, join_str: 'str') -> 'str'
__rich_repr__(self) -> 'RichReprResult'
Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.
__setattr__(self, name: 'str', value: 'Any') -> 'None'
Implement setattr(self, name, value).
__setstate__(self, state: 'dict[Any, Any]') -> 'None'
__str__(self) -> 'str'
Return str(self).
copy(self, *, include: 'AbstractSetIntStr | MappingIntStrAny | None' = None, exclude: 'AbstractSetIntStr | MappingIntStrAny | None' = None, update: 'Dict[str, Any] | None' = None, deep: 'bool' = False) -> 'Self'
Returns a copy of the model.
 
!!! warning "Deprecated"
    This method is now deprecated; use `model_copy` instead.
 
If you need `include` or `exclude`, use:
 
```python {test="skip" lint="skip"}
data = self.model_dump(include=include, exclude=exclude, round_trip=True)
data = {**data, **(update or {})}
copied = self.model_validate(data)
```
 
Args:
    include: Optional set or mapping specifying which fields to include in the copied model.
    exclude: Optional set or mapping specifying which fields to exclude in the copied model.
    update: Optional dictionary of field-value pairs to override field values in the copied model.
    deep: If True, the values of fields that are Pydantic models will be deep-copied.
 
Returns:
    A copy of the model with included, excluded and updated fields as specified.
dict(self, *, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, by_alias: 'bool' = False, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False) -> 'Dict[str, Any]'
json(self, *, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, by_alias: 'bool' = False, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, encoder: 'Callable[[Any], Any] | None' = PydanticUndefined, models_as_dict: 'bool' = PydanticUndefined, **dumps_kwargs: 'Any') -> 'str'
model_copy(self, *, update: 'Mapping[str, Any] | None' = None, deep: 'bool' = False) -> 'Self'
!!! abstract "Usage Documentation"
    [`model_copy`](../concepts/models.md#model-copy)
 
Returns a copy of the model.
 
!!! note
    The underlying instance's [`__dict__`][object.__dict__] attribute is copied. This
    might have unexpected side effects if you store anything in it, on top of the model
    fields (e.g. the value of [cached properties][functools.cached_property]).
 
Args:
    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.
model_dump(self, *, mode: "Literal['json', 'python'] | str" = 'python', include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, exclude_computed_fields: 'bool' = False, round_trip: 'bool' = False, warnings: "bool | Literal['none', 'warn', 'error']" = True, fallback: 'Callable[[Any], Any] | None' = None, serialize_as_any: 'bool' = False) -> 'dict[str, Any]'
!!! abstract "Usage Documentation"
    [`model_dump`](../concepts/serialization.md#python-mode)
 
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
 
Args:
    mode: The mode in which `to_python` should run.
        If mode is 'json', the output will only contain JSON serializable types.
        If mode is 'python', the output may contain non-JSON-serializable Python objects.
    include: A set of fields to include in the output.
    exclude: A set of fields to exclude from the output.
    context: Additional context to pass to the serializer.
    by_alias: Whether to use the field's alias in the dictionary key if defined.
    exclude_unset: Whether to exclude fields that have not been explicitly set.
    exclude_defaults: Whether to exclude fields that are set to their default value.
    exclude_none: Whether to exclude fields that have a value of `None`.
    exclude_computed_fields: Whether to exclude computed fields.
        While this can be useful for round-tripping, it is usually recommended to use the dedicated
        `round_trip` parameter instead.
    round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
    warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
        "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
    fallback: A function to call when an unknown value is encountered. If not provided,
        a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
    serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
 
Returns:
    A dictionary representation of the model.
model_dump_json(self, *, indent: 'int | None' = None, ensure_ascii: 'bool' = False, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, exclude_computed_fields: 'bool' = False, round_trip: 'bool' = False, warnings: "bool | Literal['none', 'warn', 'error']" = True, fallback: 'Callable[[Any], Any] | None' = None, serialize_as_any: 'bool' = False) -> 'str'
!!! abstract "Usage Documentation"
    [`model_dump_json`](../concepts/serialization.md#json-mode)
 
Generates a JSON representation of the model using Pydantic's `to_json` method.
 
Args:
    indent: Indentation to use in the JSON output. If None is passed, the output will be compact.
    ensure_ascii: If `True`, the output is guaranteed to have all incoming non-ASCII characters escaped.
        If `False` (the default), these characters will be output as-is.
    include: Field(s) to include in the JSON output.
    exclude: Field(s) to exclude from the JSON output.
    context: Additional context to pass to the serializer.
    by_alias: Whether to serialize using field aliases.
    exclude_unset: Whether to exclude fields that have not been explicitly set.
    exclude_defaults: Whether to exclude fields that are set to their default value.
    exclude_none: Whether to exclude fields that have a value of `None`.
    exclude_computed_fields: Whether to exclude computed fields.
        While this can be useful for round-tripping, it is usually recommended to use the dedicated
        `round_trip` parameter instead.
    round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
    warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
        "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
    fallback: A function to call when an unknown value is encountered. If not provided,
        a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
    serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
 
Returns:
    A JSON string representation of the model.
model_post_init(self, context: 'Any', /) -> 'None'
Override this method to perform additional initialization after `__init__` and `model_construct`.
This is useful if you want to do some validation that requires the entire model to be initialized.

Class methods inherited from pydantic.main.BaseModel:
__class_getitem__(typevar_values: 'type[Any] | tuple[type[Any], ...]') -> 'type[BaseModel] | _forward_ref.PydanticRecursiveRef' from pydantic._internal._model_construction.ModelMetaclass
__get_pydantic_core_schema__(source: 'type[BaseModel]', handler: 'GetCoreSchemaHandler', /) -> 'CoreSchema' from pydantic._internal._model_construction.ModelMetaclass
__get_pydantic_json_schema__(core_schema: 'CoreSchema', handler: 'GetJsonSchemaHandler', /) -> 'JsonSchemaValue' from pydantic._internal._model_construction.ModelMetaclass
Hook into generating the model's JSON schema.
 
Args:
    core_schema: A `pydantic-core` CoreSchema.
        You can ignore this argument and call the handler with a new CoreSchema,
        wrap this CoreSchema (`{'type': 'nullable', 'schema': current_schema}`),
        or just call the handler with the original schema.
    handler: Call into Pydantic's internal JSON schema generation.
        This will raise a `pydantic.errors.PydanticInvalidForJsonSchema` if JSON schema
        generation fails.
        Since this gets called by `BaseModel.model_json_schema` you can override the
        `schema_generator` argument to that function to change JSON schema generation globally
        for a type.
 
Returns:
    A JSON schema, as a Python object.
__pydantic_init_subclass__(**kwargs: 'Any') -> 'None' from pydantic._internal._model_construction.ModelMetaclass
This is intended to behave just like `__init_subclass__`, but is called by `ModelMetaclass`
only after basic class initialization is complete. In particular, attributes like `model_fields` will
be present when this is called, but forward annotations are not guaranteed to be resolved yet,
meaning that creating an instance of the class may fail.
 
This is necessary because `__init_subclass__` will always be called by `type.__new__`,
and it would require a prohibitively large refactor to the `ModelMetaclass` to ensure that
`type.__new__` was called in such a manner that the class would already be sufficiently initialized.
 
This will receive the same `kwargs` that would be passed to the standard `__init_subclass__`, namely,
any kwargs passed to the class definition that aren't used internally by Pydantic.
 
Args:
    **kwargs: Any keyword arguments passed to the class definition that aren't used internally
        by Pydantic.
 
Note:
    You may want to override [`__pydantic_on_complete__()`][pydantic.main.BaseModel.__pydantic_on_complete__]
    instead, which is called once the class and its fields are fully initialized and ready for validation.
__pydantic_on_complete__() -> 'None' from pydantic._internal._model_construction.ModelMetaclass
This is called once the class and its fields are fully initialized and ready to be used.
 
This typically happens when the class is created (just before
[`__pydantic_init_subclass__()`][pydantic.main.BaseModel.__pydantic_init_subclass__] is called on the superclass),
except when forward annotations are used that could not immediately be resolved.
In that case, it will be called later, when the model is rebuilt automatically or explicitly using
[`model_rebuild()`][pydantic.main.BaseModel.model_rebuild].
construct(_fields_set: 'set[str] | None' = None, **values: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
from_orm(obj: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
model_construct(_fields_set: 'set[str] | None' = None, **values: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Creates a new instance of the `Model` class with validated data.
 
Creates a new model setting `__dict__` and `__pydantic_fields_set__` from trusted or pre-validated data.
Default values are respected, but no other validation is performed.
 
!!! note
    `model_construct()` generally respects the `model_config.extra` setting on the provided model.
    That is, if `model_config.extra == 'allow'`, then all extra passed values are added to the model instance's `__dict__`
    and `__pydantic_extra__` fields. If `model_config.extra == 'ignore'` (the default), then all extra passed values are ignored.
    Because no validation is performed with a call to `model_construct()`, having `model_config.extra == 'forbid'` does not result in
    an error if extra values are passed, but they will be ignored.
 
Args:
    _fields_set: A set of field names that were originally explicitly set during instantiation. If provided,
        this is directly used for the [`model_fields_set`][pydantic.BaseModel.model_fields_set] attribute.
        Otherwise, the field names from the `values` argument will be used.
    values: Trusted or pre-validated data dictionary.
 
Returns:
    A new instance of the `Model` class with validated data.
model_json_schema(by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}', schema_generator: 'type[GenerateJsonSchema]' = <class 'pydantic.json_schema.GenerateJsonSchema'>, mode: 'JsonSchemaMode' = 'validation', *, union_format: "Literal['any_of', 'primitive_type_array']" = 'any_of') -> 'dict[str, Any]' from pydantic._internal._model_construction.ModelMetaclass
Generates a JSON schema for a model class.
 
Args:
    by_alias: Whether to use attribute aliases or not.
    ref_template: The reference template.
    union_format: The format to use when combining schemas from unions together. Can be one of:
 
        - `'any_of'`: Use the [`anyOf`](https://json-schema.org/understanding-json-schema/reference/combining#anyOf)
        keyword to combine schemas (the default).
        - `'primitive_type_array'`: Use the [`type`](https://json-schema.org/understanding-json-schema/reference/type)
        keyword as an array of strings, containing each type of the combination. If any of the schemas is not a primitive
        type (`string`, `boolean`, `null`, `integer` or `number`) or contains constraints/metadata, falls back to
        `any_of`.
    schema_generator: To override the logic used to generate the JSON schema, as a subclass of
        `GenerateJsonSchema` with your desired modifications
    mode: The mode in which to generate the schema.
 
Returns:
    The JSON schema for the given model class.
model_parametrized_name(params: 'tuple[type[Any], ...]') -> 'str' from pydantic._internal._model_construction.ModelMetaclass
Compute the class name for parametrizations of generic classes.
 
This method can be overridden to achieve a custom naming scheme for generic BaseModels.
 
Args:
    params: Tuple of types of the class. Given a generic class
        `Model` with 2 type variables and a concrete model `Model[str, int]`,
        the value `(str, int)` would be passed to `params`.
 
Returns:
    String representing the new class where `params` are passed to `cls` as type variables.
 
Raises:
    TypeError: Raised when trying to generate concrete names for non-generic models.
model_rebuild(*, force: 'bool' = False, raise_errors: 'bool' = True, _parent_namespace_depth: 'int' = 2, _types_namespace: 'MappingNamespace | None' = None) -> 'bool | None' from pydantic._internal._model_construction.ModelMetaclass
Try to rebuild the pydantic-core schema for the model.
 
This may be necessary when one of the annotations is a ForwardRef which could not be resolved during
the initial attempt to build the schema, and automatic rebuilding fails.
 
Args:
    force: Whether to force the rebuilding of the model schema, defaults to `False`.
    raise_errors: Whether to raise errors, defaults to `True`.
    _parent_namespace_depth: The depth level of the parent namespace, defaults to 2.
    _types_namespace: The types namespace, defaults to `None`.
 
Returns:
    Returns `None` if the schema is already "complete" and rebuilding was not required.
    If rebuilding _was_ required, returns `True` if rebuilding was successful, otherwise `False`.
model_validate(obj: 'Any', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, from_attributes: 'bool | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Validate a pydantic model instance.
 
Args:
    obj: The object to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    from_attributes: Whether to extract data from object attributes.
    context: Additional context to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Raises:
    ValidationError: If the object could not be validated.
 
Returns:
    The validated model instance.
model_validate_json(json_data: 'str | bytes | bytearray', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
!!! abstract "Usage Documentation"
    [JSON Parsing](../concepts/json.md#json-parsing)
 
Validate the given JSON data against the Pydantic model.
 
Args:
    json_data: The JSON data to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    context: Extra variables to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Returns:
    The validated Pydantic model.
 
Raises:
    ValidationError: If `json_data` is not a JSON string or the object could not be validated.
model_validate_strings(obj: 'Any', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Validate the given object with string data against the Pydantic model.
 
Args:
    obj: The object containing string data to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    context: Extra variables to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Returns:
    The validated Pydantic model.
parse_file(path: 'str | Path', *, content_type: 'str | None' = None, encoding: 'str' = 'utf8', proto: 'DeprecatedParseProtocol | None' = None, allow_pickle: 'bool' = False) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
parse_obj(obj: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
parse_raw(b: 'str | bytes', *, content_type: 'str | None' = None, encoding: 'str' = 'utf8', proto: 'DeprecatedParseProtocol | None' = None, allow_pickle: 'bool' = False) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
schema(by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}') -> 'Dict[str, Any]' from pydantic._internal._model_construction.ModelMetaclass
schema_json(*, by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}', **dumps_kwargs: 'Any') -> 'str' from pydantic._internal._model_construction.ModelMetaclass
update_forward_refs(**localns: 'Any') -> 'None' from pydantic._internal._model_construction.ModelMetaclass
validate(value: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass

Readonly properties inherited from pydantic.main.BaseModel:
__fields_set__
model_extra
Get extra fields set during validation.
 
Returns:
    A dictionary of extra fields, or `None` if `config.extra` is not set to `"allow"`.
model_fields_set
Returns the set of fields that have been explicitly set on this model instance.
 
Returns:
    A set of strings representing the fields that have been set,
        i.e. that were not filled from defaults.

Data descriptors inherited from pydantic.main.BaseModel:
__dict__
dictionary for instance variables (if defined)
__pydantic_extra__
__pydantic_fields_set__
__pydantic_private__

Data and other attributes inherited from pydantic.main.BaseModel:
__hash__ = None
__pydantic_root_model__ = False
model_computed_fields = {}
model_fields = {'client': FieldInfo(annotation=Any, required=False, default=None), 'credentials_profile_name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'endpoint_url': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'model_id': FieldInfo(annotation=str, required=False, default='amazon.titan-embed-text-v1'), 'model_kwargs': FieldInfo(annotation=Union[Dict, NoneType], required=False, default=None), 'normalize': FieldInfo(annotation=bool, required=False, default=False), 'region_name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None)}

 
class ChatBedrock(AICoreBedrockBaseModel, langchain_aws.chat_models.bedrock.ChatBedrock)
    ChatBedrock(*args, name: str | None = None, cache: langchain_core.caches.BaseCache | bool | None = None, verbose: bool = &lt;factory&gt;, callbacks: list[langchain_core.callbacks.base.BaseCallbackHandler] | langchain_core.callbacks.base.BaseCallbackManager | None = None, tags: list[str] | None = None, metadata: dict[str, typing.Any] | None = None, custom_get_token_ids: collections.abc.Callable[[str], list[int]] | None = None, client: Any = None, bedrock_client: Any = None, region: Optional[str] = None, credentials_profile_name: Optional[str] = None, aws_access_key_id: Optional[pydantic.types.SecretStr] = &lt;factory&gt;, aws_secret_access_key: Optional[pydantic.types.SecretStr] = &lt;factory&gt;, aws_session_token: Optional[pydantic.types.SecretStr] = &lt;factory&gt;, api_key: Optional[pydantic.types.SecretStr] = &lt;factory&gt;, config: Any = None, provider: Optional[str] = None, model: str, base_model: Optional[str] = None, model_kwargs: Optional[Dict[str, Any]] = None, endpoint_url: Optional[str] = None, streaming: bool = False, provider_stop_sequence_key_name_map: Mapping[str, str] = {'anthropic': 'stop_sequences', 'amazon': 'stopSequences', 'ai21': 'stop_sequences', 'cohere': 'stop_sequences', 'mistral': 'stop_sequences'}, provider_stop_reason_key_map: Mapping[str, str] = {'anthropic': 'stop_reason', 'amazon': 'completionReason', 'ai21': 'finishReason', 'cohere': 'finish_reason', 'mistral': 'stop_reason'}, guardrails: Optional[Mapping[str, Any]] = {'trace': None, 'guardrailIdentifier': None, 'guardrailVersion': None}, temperature: Optional[float] = None, max_tokens: Optional[int] = None, service_tier: Optional[Literal['priority', 'default', 'flex', 'reserved']] = None, rate_limiter: langchain_core.rate_limiters.BaseRateLimiter | None = None, disable_streaming: Union[bool, Literal['tool_calling']] = False, output_version: str | None = &lt;factory&gt;, profile: langchain_core.language_models.model_profile.ModelProfile | None = None, system_prompt_with_tools: str = '', beta_use_converse_api: bool = False, stop: Optional[List[str]] = None, **kwargs) -&gt; None
 
Drop-in replacement for LangChain ChatBedrock.
 
 
Method resolution order:
ChatBedrock
AICoreBedrockBaseModel
langchain_aws.chat_models.bedrock.ChatBedrock
langchain_core.language_models.chat_models.BaseChatModel
langchain_core.language_models.base.BaseLanguageModel[AIMessage]
langchain_aws.llms.bedrock.BedrockBase
langchain_core.language_models.base.BaseLanguageModel
langchain_core.runnables.base.RunnableSerializable[Union[PromptValue, str, Sequence[Union[BaseMessage, list[str], tuple[str, str], str, dict[str, Any]]]], ~LanguageModelOutputVar]
langchain_core.runnables.base.RunnableSerializable
langchain_core.load.serializable.Serializable
pydantic.main.BaseModel
langchain_core.runnables.base.Runnable
abc.ABC
typing.Generic
builtins.object

Methods defined here:
__init__(self, *args, **kwargs)
Initializes the AICoreBedrockBaseModel with AICore specific parameters. 
    Extends the constructor of the base class with aicore specific parameters
 
:param model_id: the model identifier, defaults to ""
:type model_id: str, optional
:param deployment_id: the deployment identifier, defaults to ""
:type deployment_id: str, optional
:param model_name: the model name, defaults to ""
:type model_name: str, optional
:param config_id: the configuration identifier, defaults to ""
:type config_id: str, optional
:param config_name: the configuration name, defaults to ""
:type config_name: str, optional
:param proxy_client: the proxy client to use, defaults to None
:type proxy_client: Optional[BaseProxyClient], optional

Data and other attributes defined here:
__abstractmethods__ = frozenset()
__class_vars__ = set()
__parameters__ = ()
__private_attributes__ = {}
__pydantic_complete__ = True
__pydantic_computed_fields__ = {}
__pydantic_core_schema__ = {'function': {'function': <function ChatBedrock._set_model_profile>, 'type': 'no-info'}, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_sche...'gen_ai_hub.proxy.langchain.amazon.ChatBedrock'>>]}, 'ref': 'gen_ai_hub.proxy.langchain.amazon.ChatBedrock:139913196728224', 'schema': {'cls': <class 'gen_ai_hub.proxy.langchain.amazon.ChatBedrock'>, 'config': {'extra_fields_behavior': 'allow', 'title': 'ChatBedrock', 'validate_by_alias': True, 'validate_by_name': True}, 'custom_init': True, 'root_model': False, 'schema': {'function': {'function': <bound method ChatBedrock.build_extra of <class 'gen_ai_hub.proxy.langchain.amazon.ChatBedrock'>>, 'type': 'no-info'}, 'schema': {'function': {'function': <bound method ChatBedrock.set_beta_use_converse_...'gen_ai_hub.proxy.langchain.amazon.ChatBedrock'>>, 'type': 'no-info'}, 'schema': {'function': {'function': <bound method AICoreBedrockBaseModel.validate_en...'gen_ai_hub.proxy.langchain.amazon.ChatBedrock'>>, 'type': 'no-info'}, 'schema': {'computed_fields': [], 'fields': {...}, 'model_name': 'ChatBedrock', 'type': 'model-fields'}, 'type': 'function-before'}, 'type': 'function-before'}, 'type': 'function-before'}, 'type': 'model'}, 'type': 'function-after'}
__pydantic_custom_init__ = True
__pydantic_decorators__ = DecoratorInfos(validators={}, field_validators={...ecoratorInfo(mode='after'))}, computed_fields={})
__pydantic_fields__ = {'aws_access_key_id': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'aws_secret_access_key': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'aws_session_token': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'base_model_id': FieldInfo(annotation=Union[str, NoneType], requi...fault=None, alias='base_model', alias_priority=2), 'bedrock_api_key': FieldInfo(annotation=Union[SecretStr, NoneType],...cret_from_env, alias='api_key', alias_priority=2), 'bedrock_client': FieldInfo(annotation=Any, required=False, default=None, exclude=True), 'beta_use_converse_api': FieldInfo(annotation=bool, required=False, default=False), 'cache': FieldInfo(annotation=Union[BaseCache, bool, NoneType], required=False, default=None, exclude=True), 'callbacks': FieldInfo(annotation=Union[list[BaseCallbackHand...ype], required=False, default=None, exclude=True), 'client': FieldInfo(annotation=Any, required=False, default=None, exclude=True), ...}
__pydantic_generic_metadata__ = {'args': (), 'origin': None, 'parameters': ()}
__pydantic_parent_namespace__ = None
__pydantic_post_init__ = None
__pydantic_serializer__ = SchemaSerializer(serializer=Model( ModelSeri... name: "ChatBedrock", }, ), definitions=[])
__pydantic_setattr_handlers__ = {}
__pydantic_validator__ = SchemaValidator(title="ChatBedrock", validator=F...se, }, ), definitions=[], cache_strings=True)
__signature__ = <Signature (*args, name: str | None = None, cach...p: Optional[List[str]] = None, **kwargs) -> None>
model_config = {'arbitrary_types_allowed': True, 'extra': 'allow', 'populate_by_name': True, 'protected_namespaces': (), 'validate_by_alias': True, 'validate_by_name': True}

Class methods inherited from AICoreBedrockBaseModel:
get_corresponding_model_id(model_name) from pydantic._internal._model_construction.ModelMetaclass
Gets the corresponding model ID for a given model name.
 
:param model_name: the model name
:type model_name: str
:raises ValueError: if the model name is not supported
:return: the corresponding model ID
:rtype: str
validate_environment(values: Dict) -> Dict from pydantic._internal._model_construction.ModelMetaclass
Validates and sets up the environment for the model.
 
:param values: the input values
:type values: Dict
:return: the validated values
:rtype: Dict

Data descriptors inherited from AICoreBedrockBaseModel:
__weakref__
list of weak references to the object (if defined)

Methods inherited from langchain_aws.chat_models.bedrock.ChatBedrock:
bind_tools(self, tools: Sequence[Union[Dict[str, Any], type[pydantic.main.BaseModel], Callable, langchain_core.tools.base.BaseTool]], *, tool_choice: Union[dict, str, Literal['auto', 'none'], bool, NoneType] = None, strict: Optional[bool] = None, **kwargs: Any) -> langchain_core.runnables.base.Runnable[langchain_core.prompt_values.PromptValue | str | collections.abc.Sequence[langchain_core.messages.base.BaseMessage | list[str] | tuple[str, str] | str | dict[str, typing.Any]], langchain_core.messages.ai.AIMessage]
Bind tool-like objects to this chat model.
 
Assumes model has a tool calling API.
 
Args:
    tools: A list of tool definitions to bind to this chat model.
        Can be  a dictionary, pydantic model, callable, or BaseTool. Pydantic
        models, callables, and BaseTools will be automatically converted to
        their schema dictionary representation.
    tool_choice: Which tool to require the model to call.
        Must be the name of the single provided function or
        "auto" to automatically determine which function to call
        (if any), or a dict of the form:
        {"type": "function", "function": {"name": <<tool_name>>}}.
    strict: If True, enables strict mode for tool definitions.
        Only supported when Converse API passthrough is enabled.
        (beta_use_converse_api=True).
    **kwargs: Any additional parameters to pass to the
        [Runnable][langchain_core.runnables.Runnable] constructor.
get_num_tokens(self, text: str) -> int
Get the number of tokens present in the text.
 
Useful for checking if an input fits in a model's context window.
 
This should be overridden by model-specific implementations to provide accurate
token counts via model-specific tokenizers.
 
Args:
    text: The string input to tokenize.
 
Returns:
    The integer number of tokens in the text.
get_num_tokens_from_messages(self, messages: list[langchain_core.messages.base.BaseMessage], tools: Optional[Sequence] = None) -> int
Get the number of tokens in the messages.
 
Useful for checking if an input fits in a model's context window.
 
This should be overridden by model-specific implementations to provide accurate
token counts via model-specific tokenizers.
 
!!! note
 
    * The base implementation of `get_num_tokens_from_messages` ignores tool
        schemas.
    * The base implementation of `get_num_tokens_from_messages` adds additional
        prefixes to messages in represent user roles, which will add to the
        overall token count. Model-specific implementations may choose to
        handle this differently.
 
Args:
    messages: The message inputs to tokenize.
    tools: If provided, sequence of dict, `BaseModel`, function, or
        `BaseTool` objects to be converted to tool schemas.
 
Returns:
    The sum of the number of tokens across the messages.
get_token_ids(self, text: str) -> List[int]
Return the ordered IDs of the tokens in a text.
 
Args:
    text: The string input to tokenize.
 
Returns:
    A list of IDs corresponding to the tokens in the text, in order they occur
        in the text.
set_system_prompt_with_tools(self, xml_tools_system_prompt: str) -> None
Workaround to bind. Sets the system prompt with tools
with_structured_output(self, schema: Union[Dict[str, Any], type[pydantic.main.BaseModel], Type], *, include_raw: bool = False, strict: Optional[bool] = None, **kwargs: Any) -> langchain_core.runnables.base.Runnable[langchain_core.prompt_values.PromptValue | str | collections.abc.Sequence[langchain_core.messages.base.BaseMessage | list[str] | tuple[str, str] | str | dict[str, typing.Any]], typing.Union[typing.Dict, pydantic.main.BaseModel]]
Model wrapper that returns outputs formatted to match the given schema.
 
Args:
    schema: The output schema as a dict or a Pydantic class. If a Pydantic class
        then the model output will be an object of that class. If a dict then
        the model output will be a dict. With a Pydantic class the returned
        attributes will be validated, whereas with a dict they will not be.
    include_raw:
        If `False` then only the parsed structured output is returned.
 
        If an error occurs during model output parsing it will be raised.
 
        If `True` then both the raw model response (a `BaseMessage`) and the
        parsed model response will be returned.
 
        If an error occurs during output parsing it will be caught and returned
        as well.
 
        The final output is always a `dict` with keys `'raw'`, `'parsed'`, and
        `'parsing_error'`.
    strict: If True, enables strict mode for tool definitions.
        Only supported when Converse API passthrough is enabled
        (beta_use_converse_api=True).
 
Returns:
    A Runnable that takes any ChatModel input. The output type depends on
    include_raw and schema.
 
    If include_raw is True then output is a dict with keys:
        raw: BaseMessage,
        parsed: Optional[_DictOrPydantic],
        parsing_error: Optional[BaseException],
 
    If include_raw is False and schema is a Dict then the runnable outputs a Dict.
    If include_raw is False and schema is a Type[BaseModel] then the runnable
    outputs a BaseModel.
 
Example: Pydantic schema (include_raw=False):
    ```python
    from langchain_aws.chat_models.bedrock import ChatBedrock
    from pydantic import BaseModel
 
    class AnswerWithJustification(BaseModel):
        '''An answer to the user question along with justification for the answer.'''
        answer: str
        justification: str
 
    llm = ChatBedrock(
        model_id="anthropic.claude-3-sonnet-20240229-v1:0",
        model_kwargs={"temperature": 0.001},
    )  # type: ignore[call-arg]
    structured_model = model.with_structured_output(AnswerWithJustification)
 
    structured_model.invoke("What weighs more a pound of bricks or a pound of feathers")
 
    # -> AnswerWithJustification(
    #     answer='They weigh the same',
    #     justification='Both a pound of bricks and a pound of feathers weigh one pound. The weight is the same, but the volume or density of the objects may differ.'
    # )
    ```
 
Example:  Pydantic schema (include_raw=True):
    ```python
    from langchain_aws.chat_models.bedrock import ChatBedrock
    from pydantic import BaseModel
 
    class AnswerWithJustification(BaseModel):
        '''An answer to the user question along with justification for the answer.'''
        answer: str
        justification: str
 
    model = ChatBedrock(
        model_id="anthropic.claude-3-sonnet-20240229-v1:0",
        model_kwargs={"temperature": 0.001},
    )  # type: ignore[call-arg]
    structured_model = model.with_structured_output(AnswerWithJustification, include_raw=True)
 
    structured_model.invoke("What weighs more a pound of bricks or a pound of feathers")
    # -> {
    #     'raw': AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_Ao02pnFYXD6GN1yzc0uXPsvF', 'function': {'arguments': '{"answer":"They weigh the same.","justification":"Both a pound of bricks and a pound of feathers weigh one pound. The weight is the same, but the volume or density of the objects may differ."}', 'name': 'AnswerWithJustification'}, 'type': 'function'}]}),
    #     'parsed': AnswerWithJustification(answer='They weigh the same.', justification='Both a pound of bricks and a pound of feathers weigh one pound. The weight is the same, but the volume or density of the objects may differ.'),
    #     'parsing_error': None
    # }
    ```
 
Example: Dict schema (include_raw=False):
    ```python
    from langchain_aws.chat_models.bedrock import ChatBedrock
 
    schema = {
        "name": "AnswerWithJustification",
        "description": "An answer to the user question along with justification for the answer.",
        "input_schema": {
            "type": "object",
            "properties": {
                "answer": {"type": "string"},
                "justification": {"type": "string"},
            },
            "required": ["answer", "justification"]
        }
    }
    model = ChatBedrock(
        model_id="anthropic.claude-3-sonnet-20240229-v1:0",
        model_kwargs={"temperature": 0.001},
    )  # type: ignore[call-arg]
    structured_model = model.with_structured_output(schema)
 
    structured_model.invoke("What weighs more a pound of bricks or a pound of feathers")
    # -> {
    #     'answer': 'They weigh the same',
    #     'justification': 'Both a pound of bricks and a pound of feathers weigh one pound. The weight is the same, but the volume and density of the two substances differ.'
    # }
    ```

Class methods inherited from langchain_aws.chat_models.bedrock.ChatBedrock:
build_extra(values: dict[str, typing.Any]) -> Any from pydantic._internal._model_construction.ModelMetaclass
Build extra kwargs from additional params that were passed in.
get_lc_namespace() -> List[str] from pydantic._internal._model_construction.ModelMetaclass
Get the namespace of the langchain object.
 
Returns:
    `["langchain", "chat_models", "bedrock"]`
is_lc_serializable() -> bool from pydantic._internal._model_construction.ModelMetaclass
Return whether this model can be serialized by Langchain.
set_beta_use_converse_api(values: Dict) -> Any from pydantic._internal._model_construction.ModelMetaclass

Readonly properties inherited from langchain_aws.chat_models.bedrock.ChatBedrock:
lc_attributes
List of attribute names that should be included in the serialized kwargs.
 
These attributes must be accepted by the constructor.
 
Default is an empty dictionary.

Data and other attributes inherited from langchain_aws.chat_models.bedrock.ChatBedrock:
__annotations__ = {'beta_use_converse_api': <class 'bool'>, 'stop_sequences': typing.Optional[typing.List[str]], 'system_prompt_with_tools': <class 'str'>}

Methods inherited from langchain_core.language_models.chat_models.BaseChatModel:
async agenerate(self, messages: 'list[list[BaseMessage]]', stop: 'list[str] | None' = None, callbacks: 'Callbacks' = None, *, tags: 'list[str] | None' = None, metadata: 'dict[str, Any] | None' = None, run_name: 'str | None' = None, run_id: 'uuid.UUID | None' = None, **kwargs: 'Any') -> 'LLMResult'
Asynchronously pass a sequence of prompts to a model and return generations.
 
This method should make use of batched calls for models that expose a batched
API.
 
Use this method when you want to:
 
1. Take advantage of batched calls,
2. Need more output from the model than just the top generated value,
3. Are building chains that are agnostic to the underlying language model
    type (e.g., pure text completion models vs chat models).
 
Args:
    messages: List of list of messages.
    stop: Stop words to use when generating.
 
        Model output is cut off at the first occurrence of any of these
        substrings.
    callbacks: `Callbacks` to pass through.
 
        Used for executing additional functionality, such as logging or
        streaming, throughout generation.
    tags: The tags to apply.
    metadata: The metadata to apply.
    run_name: The name of the run.
    run_id: The ID of the run.
    **kwargs: Arbitrary additional keyword arguments.
 
        These are usually passed to the model provider API call.
 
Returns:
    An `LLMResult`, which contains a list of candidate `Generations` for each
        input prompt and additional model provider-specific output.
async agenerate_prompt(self, prompts: 'list[PromptValue]', stop: 'list[str] | None' = None, callbacks: 'Callbacks' = None, **kwargs: 'Any') -> 'LLMResult'
Asynchronously pass a sequence of prompts and return model generations.
 
This method should make use of batched calls for models that expose a batched
API.
 
Use this method when you want to:
 
1. Take advantage of batched calls,
2. Need more output from the model than just the top generated value,
3. Are building chains that are agnostic to the underlying language model
    type (e.g., pure text completion models vs chat models).
 
Args:
    prompts: List of `PromptValue` objects.
 
        A `PromptValue` is an object that can be converted to match the format
        of any language model (string for pure text generation models and
        `BaseMessage` objects for chat models).
    stop: Stop words to use when generating.
 
        Model output is cut off at the first occurrence of any of these
        substrings.
    callbacks: `Callbacks` to pass through.
 
        Used for executing additional functionality, such as logging or
        streaming, throughout generation.
    **kwargs: Arbitrary additional keyword arguments.
 
        These are usually passed to the model provider API call.
 
Returns:
    An `LLMResult`, which contains a list of candidate `Generation` objects for
        each input prompt and additional model provider-specific output.
async ainvoke(self, input: 'LanguageModelInput', config: 'RunnableConfig | None' = None, *, stop: 'list[str] | None' = None, **kwargs: 'Any') -> 'AIMessage'
Transform a single input into an output.
 
Args:
    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 `RunnableConfig` for more details.
 
Returns:
    The output of the `Runnable`.
async astream(self, input: 'LanguageModelInput', config: 'RunnableConfig | None' = None, *, stop: 'list[str] | None' = None, **kwargs: 'Any') -> 'AsyncIterator[AIMessageChunk]'
Default implementation of `astream`, which calls `ainvoke`.
 
Subclasses must override this method if they support streaming output.
 
Args:
    input: The input to the `Runnable`.
    config: The config to use for the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    The output of the `Runnable`.
dict(self, **kwargs: 'Any') -> 'dict'
Return a dictionary of the LLM.
generate(self, messages: 'list[list[BaseMessage]]', stop: 'list[str] | None' = None, callbacks: 'Callbacks' = None, *, tags: 'list[str] | None' = None, metadata: 'dict[str, Any] | None' = None, run_name: 'str | None' = None, run_id: 'uuid.UUID | None' = None, **kwargs: 'Any') -> 'LLMResult'
Pass a sequence of prompts to the model and return model generations.
 
This method should make use of batched calls for models that expose a batched
API.
 
Use this method when you want to:
 
1. Take advantage of batched calls,
2. Need more output from the model than just the top generated value,
3. Are building chains that are agnostic to the underlying language model
    type (e.g., pure text completion models vs chat models).
 
Args:
    messages: List of list of messages.
    stop: Stop words to use when generating.
 
        Model output is cut off at the first occurrence of any of these
        substrings.
    callbacks: `Callbacks` to pass through.
 
        Used for executing additional functionality, such as logging or
        streaming, throughout generation.
    tags: The tags to apply.
    metadata: The metadata to apply.
    run_name: The name of the run.
    run_id: The ID of the run.
    **kwargs: Arbitrary additional keyword arguments.
 
        These are usually passed to the model provider API call.
 
Returns:
    An `LLMResult`, which contains a list of candidate `Generations` for each
        input prompt and additional model provider-specific output.
generate_prompt(self, prompts: 'list[PromptValue]', stop: 'list[str] | None' = None, callbacks: 'Callbacks' = None, **kwargs: 'Any') -> 'LLMResult'
Pass a sequence of prompts to the model and return model generations.
 
This method should make use of batched calls for models that expose a batched
API.
 
Use this method when you want to:
 
1. Take advantage of batched calls,
2. Need more output from the model than just the top generated value,
3. Are building chains that are agnostic to the underlying language model
    type (e.g., pure text completion models vs chat models).
 
Args:
    prompts: List of `PromptValue` objects.
 
        A `PromptValue` is an object that can be converted to match the format
        of any language model (string for pure text generation models and
        `BaseMessage` objects for chat models).
    stop: Stop words to use when generating.
 
        Model output is cut off at the first occurrence of any of these
        substrings.
    callbacks: `Callbacks` to pass through.
 
        Used for executing additional functionality, such as logging or
        streaming, throughout generation.
    **kwargs: Arbitrary additional keyword arguments.
 
        These are usually passed to the model provider API call.
 
Returns:
    An `LLMResult`, which contains a list of candidate `Generation` objects for
        each input prompt and additional model provider-specific output.
invoke(self, input: 'LanguageModelInput', config: 'RunnableConfig | None' = None, *, stop: 'list[str] | None' = None, **kwargs: 'Any') -> 'AIMessage'
Transform a single input into an output.
 
Args:
    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 `RunnableConfig` for more details.
 
Returns:
    The output of the `Runnable`.
stream(self, input: 'LanguageModelInput', config: 'RunnableConfig | None' = None, *, stop: 'list[str] | None' = None, **kwargs: 'Any') -> 'Iterator[AIMessageChunk]'
Default implementation of `stream`, which calls `invoke`.
 
Subclasses must override this method if they support streaming output.
 
Args:
    input: The input to the `Runnable`.
    config: The config to use for the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    The output of the `Runnable`.

Readonly properties inherited from langchain_core.language_models.chat_models.BaseChatModel:
OutputType
Get the output type for this `Runnable`.

Readonly properties inherited from langchain_aws.llms.bedrock.BedrockBase:
lc_secrets
A map of constructor argument names to secret ids.
 
For example, `{"openai_api_key": "OPENAI_API_KEY"}`

Class methods inherited from langchain_core.language_models.base.BaseLanguageModel:
set_verbose(verbose: 'bool | None') -> 'bool' from pydantic._internal._model_construction.ModelMetaclass
If verbose is `None`, set it.
 
This allows users to pass in `None` as verbose to access the global setting.
 
Args:
    verbose: The verbosity setting to use.
 
Returns:
    The verbosity setting to use.

Readonly properties inherited from langchain_core.language_models.base.BaseLanguageModel:
InputType
Get the input type for this `Runnable`.

Methods inherited from langchain_core.runnables.base.RunnableSerializable:
configurable_alternatives(self, which: 'ConfigurableField', *, default_key: 'str' = 'default', prefix_keys: 'bool' = False, **kwargs: 'Runnable[Input, Output] | Callable[[], Runnable[Input, Output]]') -> 'RunnableSerializable[Input, Output]'
Configure alternatives for `Runnable` objects that can be set at runtime.
 
Args:
    which: The `ConfigurableField` instance that will be used to select the
        alternative.
    default_key: The default key to use if no alternative is selected.
    prefix_keys: Whether to prefix the keys with the `ConfigurableField` id.
    **kwargs: A dictionary of keys to `Runnable` instances or callables that
        return `Runnable` instances.
 
Returns:
    A new `Runnable` with the alternatives configured.
 
!!! example
 
    ```python
    from langchain_anthropic import ChatAnthropic
    from langchain_core.runnables.utils import ConfigurableField
    from langchain_openai import ChatOpenAI
 
    model = ChatAnthropic(
        model_name="claude-sonnet-4-5-20250929"
    ).configurable_alternatives(
        ConfigurableField(id="llm"),
        default_key="anthropic",
        openai=ChatOpenAI(),
    )
 
    # uses the default model ChatAnthropic
    print(model.invoke("which organization created you?").content)
 
    # uses ChatOpenAI
    print(
        model.with_config(configurable={"llm": "openai"})
        .invoke("which organization created you?")
        .content
    )
    ```
configurable_fields(self, **kwargs: 'AnyConfigurableField') -> 'RunnableSerializable[Input, Output]'
Configure particular `Runnable` fields at runtime.
 
Args:
    **kwargs: A dictionary of `ConfigurableField` instances to configure.
 
Raises:
    ValueError: If a configuration key is not found in the `Runnable`.
 
Returns:
    A new `Runnable` with the fields configured.
 
!!! example
 
    ```python
    from langchain_core.runnables import ConfigurableField
    from langchain_openai import ChatOpenAI
 
    model = ChatOpenAI(max_tokens=20).configurable_fields(
        max_tokens=ConfigurableField(
            id="output_token_number",
            name="Max tokens in the output",
            description="The maximum number of tokens in the output",
        )
    )
 
    # max_tokens = 20
    print(
        "max_tokens_20: ", model.invoke("tell me something about chess").content
    )
 
    # max_tokens = 200
    print(
        "max_tokens_200: ",
        model.with_config(configurable={"output_token_number": 200})
        .invoke("tell me something about chess")
        .content,
    )
    ```
to_json(self) -> 'SerializedConstructor | SerializedNotImplemented'
Serialize the `Runnable` to JSON.
 
Returns:
    A JSON-serializable representation of the `Runnable`.

Data and other attributes inherited from langchain_core.runnables.base.RunnableSerializable:
__orig_bases__ = (<class 'langchain_core.load.serializable.Serializable'>, langchain_core.runnables.base.Runnable[-Input, +Output])

Methods inherited from langchain_core.load.serializable.Serializable:
__repr_args__(self) -> Any
to_json_not_implemented(self) -> langchain_core.load.serializable.SerializedNotImplemented
Serialize a "not implemented" object.
 
Returns:
    `SerializedNotImplemented`.

Class methods inherited from langchain_core.load.serializable.Serializable:
lc_id() -> list[str] from pydantic._internal._model_construction.ModelMetaclass
Return a unique identifier for this class for serialization purposes.
 
The unique identifier is a list of strings that describes the path
to the object.
 
For example, for the class `langchain.llms.openai.OpenAI`, the id is
`["langchain", "llms", "openai", "OpenAI"]`.

Methods inherited from pydantic.main.BaseModel:
__copy__(self) -> 'Self'
Returns a shallow copy of the model.
__deepcopy__(self, memo: 'dict[int, Any] | None' = None) -> 'Self'
Returns a deep copy of the model.
__delattr__(self, item: 'str') -> 'Any'
Implement delattr(self, name).
__eq__(self, other: 'Any') -> 'bool'
Return self==value.
__getattr__(self, item: 'str') -> 'Any'
__getstate__(self) -> 'dict[Any, Any]'
__iter__(self) -> 'TupleGenerator'
So `dict(model)` works.
__pretty__(self, fmt: 'Callable[[Any], Any]', **kwargs: 'Any') -> 'Generator[Any]'
Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.
__replace__(self, **changes: 'Any') -> 'Self'
# Because we make use of `@dataclass_transform()`, `__replace__` is already synthesized by
# type checkers, so we define the implementation in this `if not TYPE_CHECKING:` block:
__repr__(self) -> 'str'
Return repr(self).
__repr_name__(self) -> 'str'
Name of the instance's class, used in __repr__.
__repr_recursion__(self, object: 'Any') -> 'str'
Returns the string representation of a recursive object.
__repr_str__(self, join_str: 'str') -> 'str'
__rich_repr__(self) -> 'RichReprResult'
Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.
__setattr__(self, name: 'str', value: 'Any') -> 'None'
Implement setattr(self, name, value).
__setstate__(self, state: 'dict[Any, Any]') -> 'None'
__str__(self) -> 'str'
Return str(self).
copy(self, *, include: 'AbstractSetIntStr | MappingIntStrAny | None' = None, exclude: 'AbstractSetIntStr | MappingIntStrAny | None' = None, update: 'Dict[str, Any] | None' = None, deep: 'bool' = False) -> 'Self'
Returns a copy of the model.
 
!!! warning "Deprecated"
    This method is now deprecated; use `model_copy` instead.
 
If you need `include` or `exclude`, use:
 
```python {test="skip" lint="skip"}
data = self.model_dump(include=include, exclude=exclude, round_trip=True)
data = {**data, **(update or {})}
copied = self.model_validate(data)
```
 
Args:
    include: Optional set or mapping specifying which fields to include in the copied model.
    exclude: Optional set or mapping specifying which fields to exclude in the copied model.
    update: Optional dictionary of field-value pairs to override field values in the copied model.
    deep: If True, the values of fields that are Pydantic models will be deep-copied.
 
Returns:
    A copy of the model with included, excluded and updated fields as specified.
json(self, *, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, by_alias: 'bool' = False, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, encoder: 'Callable[[Any], Any] | None' = PydanticUndefined, models_as_dict: 'bool' = PydanticUndefined, **dumps_kwargs: 'Any') -> 'str'
model_copy(self, *, update: 'Mapping[str, Any] | None' = None, deep: 'bool' = False) -> 'Self'
!!! abstract "Usage Documentation"
    [`model_copy`](../concepts/models.md#model-copy)
 
Returns a copy of the model.
 
!!! note
    The underlying instance's [`__dict__`][object.__dict__] attribute is copied. This
    might have unexpected side effects if you store anything in it, on top of the model
    fields (e.g. the value of [cached properties][functools.cached_property]).
 
Args:
    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.
model_dump(self, *, mode: "Literal['json', 'python'] | str" = 'python', include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, exclude_computed_fields: 'bool' = False, round_trip: 'bool' = False, warnings: "bool | Literal['none', 'warn', 'error']" = True, fallback: 'Callable[[Any], Any] | None' = None, serialize_as_any: 'bool' = False) -> 'dict[str, Any]'
!!! abstract "Usage Documentation"
    [`model_dump`](../concepts/serialization.md#python-mode)
 
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
 
Args:
    mode: The mode in which `to_python` should run.
        If mode is 'json', the output will only contain JSON serializable types.
        If mode is 'python', the output may contain non-JSON-serializable Python objects.
    include: A set of fields to include in the output.
    exclude: A set of fields to exclude from the output.
    context: Additional context to pass to the serializer.
    by_alias: Whether to use the field's alias in the dictionary key if defined.
    exclude_unset: Whether to exclude fields that have not been explicitly set.
    exclude_defaults: Whether to exclude fields that are set to their default value.
    exclude_none: Whether to exclude fields that have a value of `None`.
    exclude_computed_fields: Whether to exclude computed fields.
        While this can be useful for round-tripping, it is usually recommended to use the dedicated
        `round_trip` parameter instead.
    round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
    warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
        "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
    fallback: A function to call when an unknown value is encountered. If not provided,
        a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
    serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
 
Returns:
    A dictionary representation of the model.
model_dump_json(self, *, indent: 'int | None' = None, ensure_ascii: 'bool' = False, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, exclude_computed_fields: 'bool' = False, round_trip: 'bool' = False, warnings: "bool | Literal['none', 'warn', 'error']" = True, fallback: 'Callable[[Any], Any] | None' = None, serialize_as_any: 'bool' = False) -> 'str'
!!! abstract "Usage Documentation"
    [`model_dump_json`](../concepts/serialization.md#json-mode)
 
Generates a JSON representation of the model using Pydantic's `to_json` method.
 
Args:
    indent: Indentation to use in the JSON output. If None is passed, the output will be compact.
    ensure_ascii: If `True`, the output is guaranteed to have all incoming non-ASCII characters escaped.
        If `False` (the default), these characters will be output as-is.
    include: Field(s) to include in the JSON output.
    exclude: Field(s) to exclude from the JSON output.
    context: Additional context to pass to the serializer.
    by_alias: Whether to serialize using field aliases.
    exclude_unset: Whether to exclude fields that have not been explicitly set.
    exclude_defaults: Whether to exclude fields that are set to their default value.
    exclude_none: Whether to exclude fields that have a value of `None`.
    exclude_computed_fields: Whether to exclude computed fields.
        While this can be useful for round-tripping, it is usually recommended to use the dedicated
        `round_trip` parameter instead.
    round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
    warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
        "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
    fallback: A function to call when an unknown value is encountered. If not provided,
        a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
    serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
 
Returns:
    A JSON string representation of the model.
model_post_init(self, context: 'Any', /) -> 'None'
Override this method to perform additional initialization after `__init__` and `model_construct`.
This is useful if you want to do some validation that requires the entire model to be initialized.

Class methods inherited from pydantic.main.BaseModel:
__class_getitem__(typevar_values: 'type[Any] | tuple[type[Any], ...]') -> 'type[BaseModel] | _forward_ref.PydanticRecursiveRef' from pydantic._internal._model_construction.ModelMetaclass
__get_pydantic_core_schema__(source: 'type[BaseModel]', handler: 'GetCoreSchemaHandler', /) -> 'CoreSchema' from pydantic._internal._model_construction.ModelMetaclass
__get_pydantic_json_schema__(core_schema: 'CoreSchema', handler: 'GetJsonSchemaHandler', /) -> 'JsonSchemaValue' from pydantic._internal._model_construction.ModelMetaclass
Hook into generating the model's JSON schema.
 
Args:
    core_schema: A `pydantic-core` CoreSchema.
        You can ignore this argument and call the handler with a new CoreSchema,
        wrap this CoreSchema (`{'type': 'nullable', 'schema': current_schema}`),
        or just call the handler with the original schema.
    handler: Call into Pydantic's internal JSON schema generation.
        This will raise a `pydantic.errors.PydanticInvalidForJsonSchema` if JSON schema
        generation fails.
        Since this gets called by `BaseModel.model_json_schema` you can override the
        `schema_generator` argument to that function to change JSON schema generation globally
        for a type.
 
Returns:
    A JSON schema, as a Python object.
__pydantic_init_subclass__(**kwargs: 'Any') -> 'None' from pydantic._internal._model_construction.ModelMetaclass
This is intended to behave just like `__init_subclass__`, but is called by `ModelMetaclass`
only after basic class initialization is complete. In particular, attributes like `model_fields` will
be present when this is called, but forward annotations are not guaranteed to be resolved yet,
meaning that creating an instance of the class may fail.
 
This is necessary because `__init_subclass__` will always be called by `type.__new__`,
and it would require a prohibitively large refactor to the `ModelMetaclass` to ensure that
`type.__new__` was called in such a manner that the class would already be sufficiently initialized.
 
This will receive the same `kwargs` that would be passed to the standard `__init_subclass__`, namely,
any kwargs passed to the class definition that aren't used internally by Pydantic.
 
Args:
    **kwargs: Any keyword arguments passed to the class definition that aren't used internally
        by Pydantic.
 
Note:
    You may want to override [`__pydantic_on_complete__()`][pydantic.main.BaseModel.__pydantic_on_complete__]
    instead, which is called once the class and its fields are fully initialized and ready for validation.
__pydantic_on_complete__() -> 'None' from pydantic._internal._model_construction.ModelMetaclass
This is called once the class and its fields are fully initialized and ready to be used.
 
This typically happens when the class is created (just before
[`__pydantic_init_subclass__()`][pydantic.main.BaseModel.__pydantic_init_subclass__] is called on the superclass),
except when forward annotations are used that could not immediately be resolved.
In that case, it will be called later, when the model is rebuilt automatically or explicitly using
[`model_rebuild()`][pydantic.main.BaseModel.model_rebuild].
construct(_fields_set: 'set[str] | None' = None, **values: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
from_orm(obj: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
model_construct(_fields_set: 'set[str] | None' = None, **values: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Creates a new instance of the `Model` class with validated data.
 
Creates a new model setting `__dict__` and `__pydantic_fields_set__` from trusted or pre-validated data.
Default values are respected, but no other validation is performed.
 
!!! note
    `model_construct()` generally respects the `model_config.extra` setting on the provided model.
    That is, if `model_config.extra == 'allow'`, then all extra passed values are added to the model instance's `__dict__`
    and `__pydantic_extra__` fields. If `model_config.extra == 'ignore'` (the default), then all extra passed values are ignored.
    Because no validation is performed with a call to `model_construct()`, having `model_config.extra == 'forbid'` does not result in
    an error if extra values are passed, but they will be ignored.
 
Args:
    _fields_set: A set of field names that were originally explicitly set during instantiation. If provided,
        this is directly used for the [`model_fields_set`][pydantic.BaseModel.model_fields_set] attribute.
        Otherwise, the field names from the `values` argument will be used.
    values: Trusted or pre-validated data dictionary.
 
Returns:
    A new instance of the `Model` class with validated data.
model_json_schema(by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}', schema_generator: 'type[GenerateJsonSchema]' = <class 'pydantic.json_schema.GenerateJsonSchema'>, mode: 'JsonSchemaMode' = 'validation', *, union_format: "Literal['any_of', 'primitive_type_array']" = 'any_of') -> 'dict[str, Any]' from pydantic._internal._model_construction.ModelMetaclass
Generates a JSON schema for a model class.
 
Args:
    by_alias: Whether to use attribute aliases or not.
    ref_template: The reference template.
    union_format: The format to use when combining schemas from unions together. Can be one of:
 
        - `'any_of'`: Use the [`anyOf`](https://json-schema.org/understanding-json-schema/reference/combining#anyOf)
        keyword to combine schemas (the default).
        - `'primitive_type_array'`: Use the [`type`](https://json-schema.org/understanding-json-schema/reference/type)
        keyword as an array of strings, containing each type of the combination. If any of the schemas is not a primitive
        type (`string`, `boolean`, `null`, `integer` or `number`) or contains constraints/metadata, falls back to
        `any_of`.
    schema_generator: To override the logic used to generate the JSON schema, as a subclass of
        `GenerateJsonSchema` with your desired modifications
    mode: The mode in which to generate the schema.
 
Returns:
    The JSON schema for the given model class.
model_parametrized_name(params: 'tuple[type[Any], ...]') -> 'str' from pydantic._internal._model_construction.ModelMetaclass
Compute the class name for parametrizations of generic classes.
 
This method can be overridden to achieve a custom naming scheme for generic BaseModels.
 
Args:
    params: Tuple of types of the class. Given a generic class
        `Model` with 2 type variables and a concrete model `Model[str, int]`,
        the value `(str, int)` would be passed to `params`.
 
Returns:
    String representing the new class where `params` are passed to `cls` as type variables.
 
Raises:
    TypeError: Raised when trying to generate concrete names for non-generic models.
model_rebuild(*, force: 'bool' = False, raise_errors: 'bool' = True, _parent_namespace_depth: 'int' = 2, _types_namespace: 'MappingNamespace | None' = None) -> 'bool | None' from pydantic._internal._model_construction.ModelMetaclass
Try to rebuild the pydantic-core schema for the model.
 
This may be necessary when one of the annotations is a ForwardRef which could not be resolved during
the initial attempt to build the schema, and automatic rebuilding fails.
 
Args:
    force: Whether to force the rebuilding of the model schema, defaults to `False`.
    raise_errors: Whether to raise errors, defaults to `True`.
    _parent_namespace_depth: The depth level of the parent namespace, defaults to 2.
    _types_namespace: The types namespace, defaults to `None`.
 
Returns:
    Returns `None` if the schema is already "complete" and rebuilding was not required.
    If rebuilding _was_ required, returns `True` if rebuilding was successful, otherwise `False`.
model_validate(obj: 'Any', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, from_attributes: 'bool | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Validate a pydantic model instance.
 
Args:
    obj: The object to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    from_attributes: Whether to extract data from object attributes.
    context: Additional context to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Raises:
    ValidationError: If the object could not be validated.
 
Returns:
    The validated model instance.
model_validate_json(json_data: 'str | bytes | bytearray', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
!!! abstract "Usage Documentation"
    [JSON Parsing](../concepts/json.md#json-parsing)
 
Validate the given JSON data against the Pydantic model.
 
Args:
    json_data: The JSON data to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    context: Extra variables to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Returns:
    The validated Pydantic model.
 
Raises:
    ValidationError: If `json_data` is not a JSON string or the object could not be validated.
model_validate_strings(obj: 'Any', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Validate the given object with string data against the Pydantic model.
 
Args:
    obj: The object containing string data to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    context: Extra variables to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Returns:
    The validated Pydantic model.
parse_file(path: 'str | Path', *, content_type: 'str | None' = None, encoding: 'str' = 'utf8', proto: 'DeprecatedParseProtocol | None' = None, allow_pickle: 'bool' = False) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
parse_obj(obj: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
parse_raw(b: 'str | bytes', *, content_type: 'str | None' = None, encoding: 'str' = 'utf8', proto: 'DeprecatedParseProtocol | None' = None, allow_pickle: 'bool' = False) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
schema(by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}') -> 'Dict[str, Any]' from pydantic._internal._model_construction.ModelMetaclass
schema_json(*, by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}', **dumps_kwargs: 'Any') -> 'str' from pydantic._internal._model_construction.ModelMetaclass
update_forward_refs(**localns: 'Any') -> 'None' from pydantic._internal._model_construction.ModelMetaclass
validate(value: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass

Readonly properties inherited from pydantic.main.BaseModel:
__fields_set__
model_extra
Get extra fields set during validation.
 
Returns:
    A dictionary of extra fields, or `None` if `config.extra` is not set to `"allow"`.
model_fields_set
Returns the set of fields that have been explicitly set on this model instance.
 
Returns:
    A set of strings representing the fields that have been set,
        i.e. that were not filled from defaults.

Data descriptors inherited from pydantic.main.BaseModel:
__dict__
dictionary for instance variables (if defined)
__pydantic_extra__
__pydantic_fields_set__
__pydantic_private__

Data and other attributes inherited from pydantic.main.BaseModel:
__hash__ = None
__pydantic_root_model__ = False
model_computed_fields = {}
model_fields = {'aws_access_key_id': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'aws_secret_access_key': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'aws_session_token': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'base_model_id': FieldInfo(annotation=Union[str, NoneType], requi...fault=None, alias='base_model', alias_priority=2), 'bedrock_api_key': FieldInfo(annotation=Union[SecretStr, NoneType],...cret_from_env, alias='api_key', alias_priority=2), 'bedrock_client': FieldInfo(annotation=Any, required=False, default=None, exclude=True), 'beta_use_converse_api': FieldInfo(annotation=bool, required=False, default=False), 'cache': FieldInfo(annotation=Union[BaseCache, bool, NoneType], required=False, default=None, exclude=True), 'callbacks': FieldInfo(annotation=Union[list[BaseCallbackHand...ype], required=False, default=None, exclude=True), 'client': FieldInfo(annotation=Any, required=False, default=None, exclude=True), ...}

Methods inherited from langchain_core.runnables.base.Runnable:
__or__(self, other: 'Runnable[Any, Other] | Callable[[Iterator[Any]], Iterator[Other]] | Callable[[AsyncIterator[Any]], AsyncIterator[Other]] | Callable[[Any], Other] | Mapping[str, Runnable[Any, Other] | Callable[[Any], Other] | Any]') -> 'RunnableSerializable[Input, Other]'
Runnable "or" operator.
 
Compose this `Runnable` with another object to create a
`RunnableSequence`.
 
Args:
    other: Another `Runnable` or a `Runnable`-like object.
 
Returns:
    A new `Runnable`.
__ror__(self, other: 'Runnable[Other, Any] | Callable[[Iterator[Other]], Iterator[Any]] | Callable[[AsyncIterator[Other]], AsyncIterator[Any]] | Callable[[Other], Any] | Mapping[str, Runnable[Other, Any] | Callable[[Other], Any] | Any]') -> 'RunnableSerializable[Other, Output]'
Runnable "reverse-or" operator.
 
Compose this `Runnable` with another object to create a
`RunnableSequence`.
 
Args:
    other: Another `Runnable` or a `Runnable`-like object.
 
Returns:
    A new `Runnable`.
async abatch(self, inputs: 'list[Input]', config: 'RunnableConfig | list[RunnableConfig] | None' = None, *, return_exceptions: 'bool' = False, **kwargs: 'Any | None') -> 'list[Output]'
Default implementation runs `ainvoke` in parallel using `asyncio.gather`.
 
The default implementation of `batch` works well for IO bound runnables.
 
Subclasses must override this method if they can batch more efficiently;
e.g., if the underlying `Runnable` uses an API which supports a batch mode.
 
Args:
    inputs: A list of inputs 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 `RunnableConfig` for more details.
    return_exceptions: Whether to return exceptions instead of raising them.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Returns:
    A list of outputs from the `Runnable`.
async abatch_as_completed(self, inputs: 'Sequence[Input]', config: 'RunnableConfig | Sequence[RunnableConfig] | None' = None, *, return_exceptions: 'bool' = False, **kwargs: 'Any | None') -> 'AsyncIterator[tuple[int, Output | Exception]]'
Run `ainvoke` in parallel on a list of inputs.
 
Yields results as they complete.
 
Args:
    inputs: A list of inputs 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 `RunnableConfig` for more details.
    return_exceptions: Whether to return exceptions instead of raising them.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    A tuple of the index of the input and the output from the `Runnable`.
as_tool(self, args_schema: 'type[BaseModel] | None' = None, *, name: 'str | None' = None, description: 'str | None' = None, arg_types: 'dict[str, type] | None' = None) -> 'BaseTool'
.. beta::
   This API is in beta and may change in the future.
 
Create a `BaseTool` from a `Runnable`.
 
`as_tool` will instantiate a `BaseTool` with a name, description, and
`args_schema` from a `Runnable`. Where possible, schemas are inferred
from `runnable.get_input_schema`.
 
Alternatively (e.g., if the `Runnable` takes a dict as input and the specific
`dict` keys are not typed), the schema can be specified directly with
`args_schema`.
 
You can also pass `arg_types` to just specify the required arguments and their
types.
 
Args:
    args_schema: The schema for the tool.
    name: The name of the tool.
    description: The description of the tool.
    arg_types: A dictionary of argument names to types.
 
Returns:
    A `BaseTool` instance.
 
!!! example "`TypedDict` input"
 
    ```python
    from typing_extensions import TypedDict
    from langchain_core.runnables import RunnableLambda
 
 
    class Args(TypedDict):
        a: int
        b: list[int]
 
 
    def f(x: Args) -> str:
        return str(x["a"] * max(x["b"]))
 
 
    runnable = RunnableLambda(f)
    as_tool = runnable.as_tool()
    as_tool.invoke({"a": 3, "b": [1, 2]})
    ```
 
!!! example "`dict` input, specifying schema via `args_schema`"
 
    ```python
    from typing import Any
    from pydantic import BaseModel, Field
    from langchain_core.runnables import RunnableLambda
 
    def f(x: dict[str, Any]) -> str:
        return str(x["a"] * max(x["b"]))
 
    class FSchema(BaseModel):
        """Apply a function to an integer and list of integers."""
 
        a: int = Field(..., description="Integer")
        b: list[int] = Field(..., description="List of ints")
 
    runnable = RunnableLambda(f)
    as_tool = runnable.as_tool(FSchema)
    as_tool.invoke({"a": 3, "b": [1, 2]})
    ```
 
!!! example "`dict` input, specifying schema via `arg_types`"
 
    ```python
    from typing import Any
    from langchain_core.runnables import RunnableLambda
 
 
    def f(x: dict[str, Any]) -> str:
        return str(x["a"] * max(x["b"]))
 
 
    runnable = RunnableLambda(f)
    as_tool = runnable.as_tool(arg_types={"a": int, "b": list[int]})
    as_tool.invoke({"a": 3, "b": [1, 2]})
    ```
 
!!! example "`str` input"
 
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def f(x: str) -> str:
        return x + "a"
 
 
    def g(x: str) -> str:
        return x + "z"
 
 
    runnable = RunnableLambda(f) | g
    as_tool = runnable.as_tool()
    as_tool.invoke("b")
    ```
assign(self, **kwargs: 'Runnable[dict[str, Any], Any] | Callable[[dict[str, Any]], Any] | Mapping[str, Runnable[dict[str, Any], Any] | Callable[[dict[str, Any]], Any]]') -> 'RunnableSerializable[Any, Any]'
Assigns new fields to the `dict` output of this `Runnable`.
 
```python
from langchain_core.language_models.fake import FakeStreamingListLLM
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import SystemMessagePromptTemplate
from langchain_core.runnables import Runnable
from operator import itemgetter
 
prompt = (
    SystemMessagePromptTemplate.from_template("You are a nice assistant.")
    + "{question}"
)
model = FakeStreamingListLLM(responses=["foo-lish"])
 
chain: Runnable = prompt | model | {"str": StrOutputParser()}
 
chain_with_assign = chain.assign(hello=itemgetter("str") | model)
 
print(chain_with_assign.input_schema.model_json_schema())
# {'title': 'PromptInput', 'type': 'object', 'properties':
{'question': {'title': 'Question', 'type': 'string'}}}
print(chain_with_assign.output_schema.model_json_schema())
# {'title': 'RunnableSequenceOutput', 'type': 'object', 'properties':
{'str': {'title': 'Str',
'type': 'string'}, 'hello': {'title': 'Hello', 'type': 'string'}}}
```
 
Args:
    **kwargs: A mapping of keys to `Runnable` or `Runnable`-like objects
        that will be invoked with the entire output dict of this `Runnable`.
 
Returns:
    A new `Runnable`.
async astream_events(self, input: 'Any', config: 'RunnableConfig | None' = None, *, version: "Literal['v1', 'v2']" = 'v2', include_names: 'Sequence[str] | None' = None, include_types: 'Sequence[str] | None' = None, include_tags: 'Sequence[str] | None' = None, exclude_names: 'Sequence[str] | None' = None, exclude_types: 'Sequence[str] | None' = None, exclude_tags: 'Sequence[str] | None' = None, **kwargs: 'Any') -> 'AsyncIterator[StreamEvent]'
Generate a stream of events.
 
Use to create an iterator over `StreamEvent` that provide real-time information
about the progress of the `Runnable`, including `StreamEvent` from intermediate
results.
 
A `StreamEvent` is a dictionary with the following schema:
 
- `event`: Event names are of the format:
    `on_[runnable_type]_(start|stream|end)`.
- `name`: The name of the `Runnable` that generated the event.
- `run_id`: Randomly generated ID associated with the given execution of the
    `Runnable` that emitted the event. A child `Runnable` that gets invoked as
    part of the execution of a parent `Runnable` is assigned its own unique ID.
- `parent_ids`: The IDs of the parent runnables that generated the event. The
    root `Runnable` will have an empty list. The order of the parent IDs is from
    the root to the immediate parent. Only available for v2 version of the API.
    The v1 version of the API will return an empty list.
- `tags`: The tags of the `Runnable` that generated the event.
- `metadata`: The metadata of the `Runnable` that generated the event.
- `data`: The data associated with the event. The contents of this field
    depend on the type of event. See the table below for more details.
 
Below is a table that illustrates some events that might be emitted by various
chains. Metadata fields have been omitted from the table for brevity.
Chain definitions have been included after the table.
 
!!! note
    This reference table is for the v2 version of the schema.
 
| event                  | name                 | chunk                               | input                                             | output                                              |
| ---------------------- | -------------------- | ----------------------------------- | ------------------------------------------------- | --------------------------------------------------- |
| `on_chat_model_start`  | `'[model name]'`     |                                     | `{"messages": [[SystemMessage, HumanMessage]]}`   |                                                     |
| `on_chat_model_stream` | `'[model name]'`     | `AIMessageChunk(content="hello")`   |                                                   |                                                     |
| `on_chat_model_end`    | `'[model name]'`     |                                     | `{"messages": [[SystemMessage, HumanMessage]]}`   | `AIMessageChunk(content="hello world")`             |
| `on_llm_start`         | `'[model name]'`     |                                     | `{'input': 'hello'}`                              |                                                     |
| `on_llm_stream`        | `'[model name]'`     | `'Hello' `                          |                                                   |                                                     |
| `on_llm_end`           | `'[model name]'`     |                                     | `'Hello human!'`                                  |                                                     |
| `on_chain_start`       | `'format_docs'`      |                                     |                                                   |                                                     |
| `on_chain_stream`      | `'format_docs'`      | `'hello world!, goodbye world!'`    |                                                   |                                                     |
| `on_chain_end`         | `'format_docs'`      |                                     | `[Document(...)]`                                 | `'hello world!, goodbye world!'`                    |
| `on_tool_start`        | `'some_tool'`        |                                     | `{"x": 1, "y": "2"}`                              |                                                     |
| `on_tool_end`          | `'some_tool'`        |                                     |                                                   | `{"x": 1, "y": "2"}`                                |
| `on_retriever_start`   | `'[retriever name]'` |                                     | `{"query": "hello"}`                              |                                                     |
| `on_retriever_end`     | `'[retriever name]'` |                                     | `{"query": "hello"}`                              | `[Document(...), ..]`                               |
| `on_prompt_start`      | `'[template_name]'`  |                                     | `{"question": "hello"}`                           |                                                     |
| `on_prompt_end`        | `'[template_name]'`  |                                     | `{"question": "hello"}`                           | `ChatPromptValue(messages: [SystemMessage, ...])`   |
 
In addition to the standard events, users can also dispatch custom events (see example below).
 
Custom events will be only be surfaced with in the v2 version of the API!
 
A custom event has following format:
 
| Attribute   | Type   | Description                                                                                               |
| ----------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `name`      | `str`  | A user defined name for the event.                                                                        |
| `data`      | `Any`  | The data associated with the event. This can be anything, though we suggest making it JSON serializable.  |
 
Here are declarations associated with the standard events shown above:
 
`format_docs`:
 
```python
def format_docs(docs: list[Document]) -> str:
    '''Format the docs.'''
    return ", ".join([doc.page_content for doc in docs])
 
 
format_docs = RunnableLambda(format_docs)
```
 
`some_tool`:
 
```python
@tool
def some_tool(x: int, y: str) -> dict:
    '''Some_tool.'''
    return {"x": x, "y": y}
```
 
`prompt`:
 
```python
template = ChatPromptTemplate.from_messages(
    [
        ("system", "You are Cat Agent 007"),
        ("human", "{question}"),
    ]
).with_config({"run_name": "my_template", "tags": ["my_template"]})
```
 
!!! example
 
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    async def reverse(s: str) -> str:
        return s[::-1]
 
 
    chain = RunnableLambda(func=reverse)
 
    events = [
        event async for event in chain.astream_events("hello", version="v2")
    ]
 
    # Will produce the following events
    # (run_id, and parent_ids has been omitted for brevity):
    [
        {
            "data": {"input": "hello"},
            "event": "on_chain_start",
            "metadata": {},
            "name": "reverse",
            "tags": [],
        },
        {
            "data": {"chunk": "olleh"},
            "event": "on_chain_stream",
            "metadata": {},
            "name": "reverse",
            "tags": [],
        },
        {
            "data": {"output": "olleh"},
            "event": "on_chain_end",
            "metadata": {},
            "name": "reverse",
            "tags": [],
        },
    ]
    ```
 
```python title="Dispatch custom event"
from langchain_core.callbacks.manager import (
    adispatch_custom_event,
)
from langchain_core.runnables import RunnableLambda, RunnableConfig
import asyncio
 
 
async def slow_thing(some_input: str, config: RunnableConfig) -> str:
    """Do something that takes a long time."""
    await asyncio.sleep(1) # Placeholder for some slow operation
    await adispatch_custom_event(
        "progress_event",
        {"message": "Finished step 1 of 3"},
        config=config # Must be included for python < 3.10
    )
    await asyncio.sleep(1) # Placeholder for some slow operation
    await adispatch_custom_event(
        "progress_event",
        {"message": "Finished step 2 of 3"},
        config=config # Must be included for python < 3.10
    )
    await asyncio.sleep(1) # Placeholder for some slow operation
    return "Done"
 
slow_thing = RunnableLambda(slow_thing)
 
async for event in slow_thing.astream_events("some_input", version="v2"):
    print(event)
```
 
Args:
    input: The input to the `Runnable`.
    config: The config to use for the `Runnable`.
    version: The version of the schema to use, either `'v2'` or `'v1'`.
 
        Users should use `'v2'`.
 
        `'v1'` is for backwards compatibility and will be deprecated
        in `0.4.0`.
 
        No default will be assigned until the API is stabilized.
        custom events will only be surfaced in `'v2'`.
    include_names: Only include events from `Runnable` objects with matching names.
    include_types: Only include events from `Runnable` objects with matching types.
    include_tags: Only include events from `Runnable` objects with matching tags.
    exclude_names: Exclude events from `Runnable` objects with matching names.
    exclude_types: Exclude events from `Runnable` objects with matching types.
    exclude_tags: Exclude events from `Runnable` objects with matching tags.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
        These will be passed to `astream_log` as this implementation
        of `astream_events` is built on top of `astream_log`.
 
Yields:
    An async stream of `StreamEvent`.
 
Raises:
    NotImplementedError: If the version is not `'v1'` or `'v2'`.
async astream_log(self, input: 'Any', config: 'RunnableConfig | None' = None, *, diff: 'bool' = True, with_streamed_output_list: 'bool' = True, include_names: 'Sequence[str] | None' = None, include_types: 'Sequence[str] | None' = None, include_tags: 'Sequence[str] | None' = None, exclude_names: 'Sequence[str] | None' = None, exclude_types: 'Sequence[str] | None' = None, exclude_tags: 'Sequence[str] | None' = None, **kwargs: 'Any') -> '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.
 
Args:
    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.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    A `RunLogPatch` or `RunLog` object.
async atransform(self, input: 'AsyncIterator[Input]', config: 'RunnableConfig | None' = None, **kwargs: 'Any | None') -> 'AsyncIterator[Output]'
Transform inputs to outputs.
 
Default implementation of atransform, which buffers input and calls `astream`.
 
Subclasses must override this method if they can start producing output while
input is still being generated.
 
Args:
    input: An async iterator of inputs to the `Runnable`.
    config: The config to use for the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    The output of the `Runnable`.
batch(self, inputs: 'list[Input]', config: 'RunnableConfig | list[RunnableConfig] | None' = None, *, return_exceptions: 'bool' = False, **kwargs: 'Any | None') -> 'list[Output]'
Default implementation runs invoke in parallel using a thread pool executor.
 
The default implementation of batch works well for IO bound runnables.
 
Subclasses must override this method if they can batch more efficiently;
e.g., if the underlying `Runnable` uses an API which supports a batch mode.
 
Args:
    inputs: A list of inputs 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 `RunnableConfig` for more details.
    return_exceptions: Whether to return exceptions instead of raising them.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Returns:
    A list of outputs from the `Runnable`.
batch_as_completed(self, inputs: 'Sequence[Input]', config: 'RunnableConfig | Sequence[RunnableConfig] | None' = None, *, return_exceptions: 'bool' = False, **kwargs: 'Any | None') -> 'Iterator[tuple[int, Output | Exception]]'
Run `invoke` in parallel on a list of inputs.
 
Yields results as they complete.
 
Args:
    inputs: A list of inputs 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 `RunnableConfig` for more details.
    return_exceptions: Whether to return exceptions instead of raising them.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    Tuples of the index of the input and the output from the `Runnable`.
bind(self, **kwargs: 'Any') -> 'Runnable[Input, Output]'
Bind arguments to a `Runnable`, returning a new `Runnable`.
 
Useful when a `Runnable` in a chain requires an argument that is not
in the output of the previous `Runnable` or included in the user input.
 
Args:
    **kwargs: The arguments to bind to the `Runnable`.
 
Returns:
    A new `Runnable` with the arguments bound.
 
Example:
    ```python
    from langchain_ollama import ChatOllama
    from langchain_core.output_parsers import StrOutputParser
 
    model = ChatOllama(model="llama3.1")
 
    # Without bind
    chain = model | StrOutputParser()
 
    chain.invoke("Repeat quoted words exactly: 'One two three four five.'")
    # Output is 'One two three four five.'
 
    # With bind
    chain = model.bind(stop=["three"]) | StrOutputParser()
 
    chain.invoke("Repeat quoted words exactly: 'One two three four five.'")
    # Output is 'One two'
    ```
config_schema(self, *, include: 'Sequence[str] | None' = 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.
 
Args:
    include: A list of fields to include in the config schema.
 
Returns:
    A Pydantic model that can be used to validate config.
get_config_jsonschema(self, *, include: 'Sequence[str] | None' = None) -> 'dict[str, Any]'
Get a JSON schema that represents the config of the `Runnable`.
 
Args:
    include: A list of fields to include in the config schema.
 
Returns:
    A JSON schema that represents the config of the `Runnable`.
 
!!! version-added "Added in `langchain-core` 0.3.0"
get_graph(self, config: 'RunnableConfig | None' = None) -> 'Graph'
Return a graph representation of this `Runnable`.
get_input_jsonschema(self, config: 'RunnableConfig | None' = None) -> 'dict[str, Any]'
Get a JSON schema that represents the input to the `Runnable`.
 
Args:
    config: A config to use when generating the schema.
 
Returns:
    A JSON schema that represents the input to the `Runnable`.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def add_one(x: int) -> int:
        return x + 1
 
 
    runnable = RunnableLambda(add_one)
 
    print(runnable.get_input_jsonschema())
    ```
 
!!! version-added "Added in `langchain-core` 0.3.0"
get_input_schema(self, config: 'RunnableConfig | None' = None) -> 'type[BaseModel]'
Get a Pydantic model that can be used to validate input to the `Runnable`.
 
`Runnable` objects 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.
 
Args:
    config: A config to use when generating the schema.
 
Returns:
    A Pydantic model that can be used to validate input.
get_name(self, suffix: 'str | None' = None, *, name: 'str | None' = None) -> 'str'
Get the name of the `Runnable`.
 
Args:
    suffix: An optional suffix to append to the name.
    name: An optional name to use instead of the `Runnable`'s name.
 
Returns:
    The name of the `Runnable`.
get_output_jsonschema(self, config: 'RunnableConfig | None' = None) -> 'dict[str, Any]'
Get a JSON schema that represents the output of the `Runnable`.
 
Args:
    config: A config to use when generating the schema.
 
Returns:
    A JSON schema that represents the output of the `Runnable`.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def add_one(x: int) -> int:
        return x + 1
 
 
    runnable = RunnableLambda(add_one)
 
    print(runnable.get_output_jsonschema())
    ```
 
!!! version-added "Added in `langchain-core` 0.3.0"
get_output_schema(self, config: 'RunnableConfig | None' = None) -> 'type[BaseModel]'
Get a Pydantic model that can be used to validate output to the `Runnable`.
 
`Runnable` objects 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.
 
Args:
    config: A config to use when generating the schema.
 
Returns:
    A Pydantic model that can be used to validate output.
get_prompts(self, config: 'RunnableConfig | None' = None) -> 'list[BasePromptTemplate]'
Return a list of prompts used by this `Runnable`.
map(self) -> 'Runnable[list[Input], list[Output]]'
Return a new `Runnable` that maps a list of inputs to a list of outputs.
 
Calls `invoke` with each input.
 
Returns:
    A new `Runnable` that maps a list of inputs to a list of outputs.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def _lambda(x: int) -> int:
        return x + 1
 
 
    runnable = RunnableLambda(_lambda)
    print(runnable.map().invoke([1, 2, 3]))  # [2, 3, 4]
    ```
pick(self, keys: 'str | list[str]') -> 'RunnableSerializable[Any, Any]'
Pick keys from the output `dict` of this `Runnable`.
 
!!! example "Pick a single key"
 
    ```python
    import json
 
    from langchain_core.runnables import RunnableLambda, RunnableMap
 
    as_str = RunnableLambda(str)
    as_json = RunnableLambda(json.loads)
    chain = RunnableMap(str=as_str, json=as_json)
 
    chain.invoke("[1, 2, 3]")
    # -> {"str": "[1, 2, 3]", "json": [1, 2, 3]}
 
    json_only_chain = chain.pick("json")
    json_only_chain.invoke("[1, 2, 3]")
    # -> [1, 2, 3]
    ```
 
!!! example "Pick a list of keys"
 
    ```python
    from typing import Any
 
    import json
 
    from langchain_core.runnables import RunnableLambda, RunnableMap
 
    as_str = RunnableLambda(str)
    as_json = RunnableLambda(json.loads)
 
 
    def as_bytes(x: Any) -> bytes:
        return bytes(x, "utf-8")
 
 
    chain = RunnableMap(
        str=as_str, json=as_json, bytes=RunnableLambda(as_bytes)
    )
 
    chain.invoke("[1, 2, 3]")
    # -> {"str": "[1, 2, 3]", "json": [1, 2, 3], "bytes": b"[1, 2, 3]"}
 
    json_and_bytes_chain = chain.pick(["json", "bytes"])
    json_and_bytes_chain.invoke("[1, 2, 3]")
    # -> {"json": [1, 2, 3], "bytes": b"[1, 2, 3]"}
    ```
 
Args:
    keys: A key or list of keys to pick from the output dict.
 
Returns:
    a new `Runnable`.
pipe(self, *others: 'Runnable[Any, Other] | Callable[[Any], Other]', name: 'str | None' = None) -> 'RunnableSerializable[Input, Other]'
Pipe `Runnable` objects.
 
Compose this `Runnable` with `Runnable`-like objects to make a
`RunnableSequence`.
 
Equivalent to `RunnableSequence(self, *others)` or `self | others[0] | ...`
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def add_one(x: int) -> int:
        return x + 1
 
 
    def mul_two(x: int) -> int:
        return x * 2
 
 
    runnable_1 = RunnableLambda(add_one)
    runnable_2 = RunnableLambda(mul_two)
    sequence = runnable_1.pipe(runnable_2)
    # Or equivalently:
    # sequence = runnable_1 | runnable_2
    # sequence = RunnableSequence(first=runnable_1, last=runnable_2)
    sequence.invoke(1)
    await sequence.ainvoke(1)
    # -> 4
 
    sequence.batch([1, 2, 3])
    await sequence.abatch([1, 2, 3])
    # -> [4, 6, 8]
    ```
 
Args:
    *others: Other `Runnable` or `Runnable`-like objects to compose
    name: An optional name for the resulting `RunnableSequence`.
 
Returns:
    A new `Runnable`.
transform(self, input: 'Iterator[Input]', config: 'RunnableConfig | None' = None, **kwargs: 'Any | None') -> 'Iterator[Output]'
Transform inputs to outputs.
 
Default implementation of transform, which buffers input and calls `astream`.
 
Subclasses must override this method if they can start producing output while
input is still being generated.
 
Args:
    input: An iterator of inputs to the `Runnable`.
    config: The config to use for the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    The output of the `Runnable`.
with_alisteners(self, *, on_start: 'AsyncListener | None' = None, on_end: 'AsyncListener | None' = None, on_error: 'AsyncListener | None' = None) -> 'Runnable[Input, Output]'
Bind async lifecycle listeners to a `Runnable`.
 
Returns a new `Runnable`.
 
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.
 
Args:
    on_start: Called asynchronously before the `Runnable` starts running,
        with the `Run` object.
    on_end: Called asynchronously after the `Runnable` finishes running,
        with the `Run` object.
    on_error: Called asynchronously if the `Runnable` throws an error,
        with the `Run` object.
 
Returns:
    A new `Runnable` with the listeners bound.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda, Runnable
    from datetime import datetime, timezone
    import time
    import asyncio
 
 
    def format_t(timestamp: float) -> str:
        return datetime.fromtimestamp(timestamp, tz=timezone.utc).isoformat()
 
 
    async def test_runnable(time_to_sleep: int):
        print(f"Runnable[{time_to_sleep}s]: starts at {format_t(time.time())}")
        await asyncio.sleep(time_to_sleep)
        print(f"Runnable[{time_to_sleep}s]: ends at {format_t(time.time())}")
 
 
    async def fn_start(run_obj: Runnable):
        print(f"on start callback starts at {format_t(time.time())}")
        await asyncio.sleep(3)
        print(f"on start callback ends at {format_t(time.time())}")
 
 
    async def fn_end(run_obj: Runnable):
        print(f"on end callback starts at {format_t(time.time())}")
        await asyncio.sleep(2)
        print(f"on end callback ends at {format_t(time.time())}")
 
 
    runnable = RunnableLambda(test_runnable).with_alisteners(
        on_start=fn_start, on_end=fn_end
    )
 
 
    async def concurrent_runs():
        await asyncio.gather(runnable.ainvoke(2), runnable.ainvoke(3))
 
 
    asyncio.run(concurrent_runs())
    # Result:
    # on start callback starts at 2025-03-01T07:05:22.875378+00:00
    # on start callback starts at 2025-03-01T07:05:22.875495+00:00
    # on start callback ends at 2025-03-01T07:05:25.878862+00:00
    # on start callback ends at 2025-03-01T07:05:25.878947+00:00
    # Runnable[2s]: starts at 2025-03-01T07:05:25.879392+00:00
    # Runnable[3s]: starts at 2025-03-01T07:05:25.879804+00:00
    # Runnable[2s]: ends at 2025-03-01T07:05:27.881998+00:00
    # on end callback starts at 2025-03-01T07:05:27.882360+00:00
    # Runnable[3s]: ends at 2025-03-01T07:05:28.881737+00:00
    # on end callback starts at 2025-03-01T07:05:28.882428+00:00
    # on end callback ends at 2025-03-01T07:05:29.883893+00:00
    # on end callback ends at 2025-03-01T07:05:30.884831+00:00
    ```
with_config(self, config: 'RunnableConfig | None' = None, **kwargs: 'Any') -> 'Runnable[Input, Output]'
Bind config to a `Runnable`, returning a new `Runnable`.
 
Args:
    config: The config to bind to the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Returns:
    A new `Runnable` with the config bound.
with_fallbacks(self, fallbacks: 'Sequence[Runnable[Input, Output]]', *, exceptions_to_handle: 'tuple[type[BaseException], ...]' = (<class 'Exception'>,), exception_key: 'str | None' = None) -> 'RunnableWithFallbacksT[Input, Output]'
Add fallbacks to a `Runnable`, returning a new `Runnable`.
 
The new `Runnable` will try the original `Runnable`, and then each fallback
in order, upon failures.
 
Args:
    fallbacks: A sequence of runnables to try if the original `Runnable`
        fails.
    exceptions_to_handle: A tuple of exception types to handle.
    exception_key: If `string` is specified then handled exceptions will be
        passed to fallbacks as part of the input under the specified key.
 
        If `None`, exceptions will not be passed to fallbacks.
 
        If used, the base `Runnable` and its fallbacks must accept a
        dictionary as input.
 
Returns:
    A new `Runnable` that will try the original `Runnable`, and then each
        Fallback in order, upon failures.
 
Example:
    ```python
    from typing import Iterator
 
    from langchain_core.runnables import RunnableGenerator
 
 
    def _generate_immediate_error(input: Iterator) -> Iterator[str]:
        raise ValueError()
        yield ""
 
 
    def _generate(input: Iterator) -> Iterator[str]:
        yield from "foo bar"
 
 
    runnable = RunnableGenerator(_generate_immediate_error).with_fallbacks(
        [RunnableGenerator(_generate)]
    )
    print("".join(runnable.stream({})))  # foo bar
    ```
 
Args:
    fallbacks: A sequence of runnables to try if the original `Runnable`
        fails.
    exceptions_to_handle: A tuple of exception types to handle.
    exception_key: If `string` is specified then handled exceptions will be
        passed to fallbacks as part of the input under the specified key.
 
        If `None`, exceptions will not be passed to fallbacks.
 
        If used, the base `Runnable` and its fallbacks must accept a
        dictionary as input.
 
Returns:
    A new `Runnable` that will try the original `Runnable`, and then each
        Fallback in order, upon failures.
with_listeners(self, *, on_start: 'Callable[[Run], None] | Callable[[Run, RunnableConfig], None] | None' = None, on_end: 'Callable[[Run], None] | Callable[[Run, RunnableConfig], None] | None' = None, on_error: 'Callable[[Run], None] | Callable[[Run, RunnableConfig], None] | None' = None) -> 'Runnable[Input, Output]'
Bind lifecycle listeners to a `Runnable`, returning a new `Runnable`.
 
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.
 
Args:
    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.
 
Returns:
    A new `Runnable` with the listeners bound.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
    from langchain_core.tracers.schemas import Run
 
    import time
 
 
    def test_runnable(time_to_sleep: int):
        time.sleep(time_to_sleep)
 
 
    def fn_start(run_obj: Run):
        print("start_time:", run_obj.start_time)
 
 
    def fn_end(run_obj: Run):
        print("end_time:", run_obj.end_time)
 
 
    chain = RunnableLambda(test_runnable).with_listeners(
        on_start=fn_start, on_end=fn_end
    )
    chain.invoke(2)
    ```
with_retry(self, *, retry_if_exception_type: 'tuple[type[BaseException], ...]' = (<class 'Exception'>,), wait_exponential_jitter: 'bool' = True, exponential_jitter_params: 'ExponentialJitterParams | None' = None, stop_after_attempt: 'int' = 3) -> 'Runnable[Input, Output]'
Create a new `Runnable` that retries the original `Runnable` on exceptions.
 
Args:
    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.
    exponential_jitter_params: Parameters for
        `tenacity.wait_exponential_jitter`. Namely: `initial`, `max`,
        `exp_base`, and `jitter` (all `float` values).
 
Returns:
    A new `Runnable` that retries the original `Runnable` on exceptions.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
    count = 0
 
 
    def _lambda(x: int) -> None:
        global count
        count = count + 1
        if x == 1:
            raise ValueError("x is 1")
        else:
            pass
 
 
    runnable = RunnableLambda(_lambda)
    try:
        runnable.with_retry(
            stop_after_attempt=2,
            retry_if_exception_type=(ValueError,),
        ).invoke(1)
    except ValueError:
        pass
 
    assert count == 2
    ```
with_types(self, *, input_type: 'type[Input] | None' = None, output_type: 'type[Output] | None' = None) -> 'Runnable[Input, Output]'
Bind input and output types to a `Runnable`, returning a new `Runnable`.
 
Args:
    input_type: The input type to bind to the `Runnable`.
    output_type: The output type to bind to the `Runnable`.
 
Returns:
    A new `Runnable` with the types bound.

Readonly properties inherited from langchain_core.runnables.base.Runnable:
config_specs
List configurable fields for this `Runnable`.
input_schema
The type of input this `Runnable` accepts specified as a Pydantic model.
output_schema
Output schema.
 
The type of output this `Runnable` produces specified as a Pydantic model.

Class methods inherited from typing.Generic:
__init_subclass__(*args, **kwargs) from pydantic._internal._model_construction.ModelMetaclass
This method is called when a class is subclassed.
 
The default implementation does nothing. It may be
overridden to extend subclasses.

 
class ChatBedrockConverse(AICoreBedrockBaseModel, langchain_aws.chat_models.bedrock_converse.ChatBedrockConverse)
    ChatBedrockConverse(*args, name: str | None = None, cache: langchain_core.caches.BaseCache | bool | None = None, verbose: bool = &lt;factory&gt;, callbacks: list[langchain_core.callbacks.base.BaseCallbackHandler] | langchain_core.callbacks.base.BaseCallbackManager | None = None, tags: list[str] | None = None, metadata: dict[str, typing.Any] | None = None, custom_get_token_ids: collections.abc.Callable[[str], list[int]] | None = None, rate_limiter: langchain_core.rate_limiters.BaseRateLimiter | None = None, disable_streaming: Union[bool, Literal['tool_calling']] = False, output_version: str | None = &lt;factory&gt;, profile: langchain_core.language_models.model_profile.ModelProfile | None = None, client: Any = None, bedrock_client: Any = None, model: str, base_model: Optional[str] = None, system: Optional[List[Union[str, Dict[str, Any]]]] = None, max_tokens: Optional[int] = None, stop: Optional[List[str]] = None, temperature: Optional[float] = None, top_p: Optional[float] = None, region_name: Optional[str] = None, credentials_profile_name: Optional[str] = None, aws_access_key_id: Optional[pydantic.types.SecretStr] = &lt;factory&gt;, aws_secret_access_key: Optional[pydantic.types.SecretStr] = &lt;factory&gt;, aws_session_token: Optional[pydantic.types.SecretStr] = &lt;factory&gt;, api_key: Optional[pydantic.types.SecretStr] = &lt;factory&gt;, provider: str = '', base_url: Optional[str] = None, default_headers: Optional[Mapping[str, str]] = None, config: Any = None, guardrails: Optional[Dict[str, Any]] = None, additional_model_request_fields: Optional[Dict[str, Any]] = None, additional_model_response_field_paths: Optional[List[str]] = None, supports_tool_choice_values: Optional[Sequence[Literal['auto', 'any', 'tool']]] = None, performance_config: Optional[Mapping[str, Any]] = None, service_tier: Optional[Literal['priority', 'default', 'flex', 'reserved']] = None, output_config: Optional[Dict[str, Any]] = None, request_metadata: Optional[Dict[str, str]] = None, guard_last_turn_only: bool = False, raw_blocks: Optional[List[Dict[str, Any]]] = None, **kwargs) -&gt; None
 
Drop-in replacement for LangChain ChatBedrockConverse.
 
 
Method resolution order:
ChatBedrockConverse
AICoreBedrockBaseModel
langchain_aws.chat_models.bedrock_converse.ChatBedrockConverse
langchain_core.language_models.chat_models.BaseChatModel
langchain_core.language_models.base.BaseLanguageModel[AIMessage]
langchain_core.language_models.base.BaseLanguageModel
langchain_core.runnables.base.RunnableSerializable[Union[PromptValue, str, Sequence[Union[BaseMessage, list[str], tuple[str, str], str, dict[str, Any]]]], ~LanguageModelOutputVar]
langchain_core.runnables.base.RunnableSerializable
langchain_core.load.serializable.Serializable
pydantic.main.BaseModel
langchain_core.runnables.base.Runnable
abc.ABC
typing.Generic
builtins.object

Methods defined here:
__init__(self, *args, **kwargs)
Initializes the AICoreBedrockBaseModel with AICore specific parameters. 
    Extends the constructor of the base class with aicore specific parameters
 
:param model_id: the model identifier, defaults to ""
:type model_id: str, optional
:param deployment_id: the deployment identifier, defaults to ""
:type deployment_id: str, optional
:param model_name: the model name, defaults to ""
:type model_name: str, optional
:param config_id: the configuration identifier, defaults to ""
:type config_id: str, optional
:param config_name: the configuration name, defaults to ""
:type config_name: str, optional
:param proxy_client: the proxy client to use, defaults to None
:type proxy_client: Optional[BaseProxyClient], optional
extract_model_kwargs_parameters(self, kwargs)
Extracts specific parameters from model_kwargs and moves them to the top level of kwargs.
 
:param kwargs: the input keyword arguments
:type kwargs: Dict

Data and other attributes defined here:
__abstractmethods__ = frozenset()
__class_vars__ = set()
__parameters__ = ()
__private_attributes__ = {}
__pydantic_complete__ = True
__pydantic_computed_fields__ = {}
__pydantic_core_schema__ = {'function': {'function': <function ChatBedrockConverse._set_model_profile>, 'type': 'no-info'}, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_sche...hub.proxy.langchain.amazon.ChatBedrockConverse'>>]}, 'ref': 'gen_ai_hub.proxy.langchain.amazon.ChatBedrockConverse:139913196733312', 'schema': {'cls': <class 'gen_ai_hub.proxy.langchain.amazon.ChatBedrockConverse'>, 'config': {'extra_fields_behavior': 'allow', 'title': 'ChatBedrockConverse', 'validate_by_alias': True, 'validate_by_name': True}, 'custom_init': True, 'root_model': False, 'schema': {'function': {'function': <bound method AICoreBedrockBaseModel.validate_en...hub.proxy.langchain.amazon.ChatBedrockConverse'>>, 'type': 'no-info'}, 'schema': {'function': {'function': <bound method ChatBedrockConverse.set_disable_st...hub.proxy.langchain.amazon.ChatBedrockConverse'>>, 'type': 'no-info'}, 'schema': {'function': {'function': <bound method ChatBedrockConverse.build_extra of...hub.proxy.langchain.amazon.ChatBedrockConverse'>>, 'type': 'no-info'}, 'schema': {'computed_fields': [], 'fields': {...}, 'model_name': 'ChatBedrockConverse', 'type': 'model-fields'}, 'type': 'function-before'}, 'type': 'function-before'}, 'type': 'function-before'}, 'type': 'model'}, 'type': 'function-after'}
__pydantic_custom_init__ = True
__pydantic_decorators__ = DecoratorInfos(validators={}, field_validators={...ecoratorInfo(mode='after'))}, computed_fields={})
__pydantic_fields__ = {'additional_model_request_fields': FieldInfo(annotation=Union[Dict[str, Any], NoneType], required=False, default=None), 'additional_model_response_field_paths': FieldInfo(annotation=Union[List[str], NoneType], required=False, default=None), 'aws_access_key_id': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'aws_secret_access_key': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'aws_session_token': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'base_model_id': FieldInfo(annotation=Union[str, NoneType], requi...fault=None, alias='base_model', alias_priority=2), 'bedrock_api_key': FieldInfo(annotation=Union[SecretStr, NoneType],...cret_from_env, alias='api_key', alias_priority=2), 'bedrock_client': FieldInfo(annotation=Any, required=False, default=None, exclude=True), 'cache': FieldInfo(annotation=Union[BaseCache, bool, NoneType], required=False, default=None, exclude=True), 'callbacks': FieldInfo(annotation=Union[list[BaseCallbackHand...ype], required=False, default=None, exclude=True), ...}
__pydantic_generic_metadata__ = {'args': (), 'origin': None, 'parameters': ()}
__pydantic_parent_namespace__ = None
__pydantic_post_init__ = None
__pydantic_serializer__ = SchemaSerializer(serializer=Model( ModelSeri... "ChatBedrockConverse", }, ), definitions=[])
__pydantic_setattr_handlers__ = {}
__pydantic_validator__ = SchemaValidator(title="ChatBedrockConverse", val...se, }, ), definitions=[], cache_strings=True)
__signature__ = <Signature (*args, name: str | None = None, cach...[List[Dict[str, Any]]] = None, **kwargs) -> None>
model_config = {'arbitrary_types_allowed': True, 'extra': 'allow', 'populate_by_name': True, 'protected_namespaces': (), 'validate_by_alias': True, 'validate_by_name': True}

Class methods inherited from AICoreBedrockBaseModel:
get_corresponding_model_id(model_name) from pydantic._internal._model_construction.ModelMetaclass
Gets the corresponding model ID for a given model name.
 
:param model_name: the model name
:type model_name: str
:raises ValueError: if the model name is not supported
:return: the corresponding model ID
:rtype: str
validate_environment(values: Dict) -> Dict from pydantic._internal._model_construction.ModelMetaclass
Validates and sets up the environment for the model.
 
:param values: the input values
:type values: Dict
:return: the validated values
:rtype: Dict

Data descriptors inherited from AICoreBedrockBaseModel:
__weakref__
list of weak references to the object (if defined)

Methods inherited from langchain_aws.chat_models.bedrock_converse.ChatBedrockConverse:
bind_tools(self, tools: Sequence[Union[Dict[str, Any], type[pydantic.main.BaseModel], Callable, langchain_core.tools.base.BaseTool, str, langchain_aws.tools.nova_tools.NovaSystemTool]], *, tool_choice: Union[dict, str, Literal['auto', 'any'], NoneType] = None, strict: Optional[bool] = None, **kwargs: Any) -> langchain_core.runnables.base.Runnable[langchain_core.prompt_values.PromptValue | str | collections.abc.Sequence[langchain_core.messages.base.BaseMessage | list[str] | tuple[str, str] | str | dict[str, typing.Any]], langchain_core.messages.ai.AIMessage]
Bind tools to the model.
 
Args:
    tools: Sequence of tools to bind to the model.
    tool_choice: The tool to use. If "any" then any tool can be used.
 
Returns:
    A Runnable that returns a message.
get_num_tokens_from_messages(self, messages: list[langchain_core.messages.base.BaseMessage], tools: Optional[Sequence] = None) -> int
Get the number of tokens in the messages using AWS Bedrock count_tokens API.
 
This method uses AWS Bedrock's count_tokens API which provides accurate
token counting for supported models before inference. Falls back to the base
implementation for unsupported models.
 
Args:
    messages: The message inputs to tokenize.
    tools: Tool schemas (ignored, unsupported by count_tokens API).
 
Returns:
    The number of input tokens in the messages.
with_structured_output(self, schema: Union[Dict[str, Any], Type[~_BM], Type], *, include_raw: bool = False, method: Literal['function_calling', 'json_schema'] = 'function_calling', **kwargs: Any) -> langchain_core.runnables.base.Runnable[langchain_core.prompt_values.PromptValue | str | collections.abc.Sequence[langchain_core.messages.base.BaseMessage | list[str] | tuple[str, str] | str | dict[str, typing.Any]], typing.Union[typing.Dict, pydantic.main.BaseModel]]
Model wrapper that returns outputs formatted to match the given schema.
 
        Args:
            schema: The output schema. Can be passed in as:
 
                - An OpenAI function/tool schema,
                - A JSON Schema,
                - A `TypedDict` class,
                - Or a Pydantic class.
 
                If `schema` is a Pydantic class then the model output will be a
                Pydantic instance of that class, and the model-generated fields will be
                validated by the Pydantic class. Otherwise the model output will be a
                dict and will not be validated.
 
                See `langchain_core.utils.function_calling.convert_to_openai_tool` for
                more on how to properly specify types and descriptions of schema fields
                when specifying a Pydantic or `TypedDict` class.
 
            include_raw:
                If `False` then only the parsed structured output is returned.
 
                If an error occurs during model output parsing it will be raised.
 
                If `True` then both the raw model response (a `BaseMessage`) and the
                parsed model response will be returned.
 
                If an error occurs during output parsing it will be caught and returned
                as well.
 
                The final output is always a `dict` with keys `'raw'`, `'parsed'`, and
                `'parsing_error'`.
 
            method: The method for structured output generation. Supported
        options are ``"function_calling"`` and ``"json_schema"``.
 
        - ``"function_calling"`` (default): Uses forced tool calling to
          generate structured output.
        - ``"json_schema"``: Uses Bedrock's native ``outputConfig``
          with ``textFormat`` to constrain model output to a JSON schema.
          Only supported on select models (e.g., Claude 4.5 and later,
          select open-weight models). See the `Bedrock structured output
          documentation
          <https://docs.aws.amazon.com/bedrock/latest/userguide/structured-output.html>`_
          for the latest supported models.
 
Raises:
            ValueError: If there are any unsupported `kwargs`.
            NotImplementedError: If the model does not implement
                `with_structured_output()`.
 
        Returns:
            A `Runnable` that takes same inputs as a
                `langchain_core.language_models.chat.BaseChatModel`. If `include_raw` is
                `False` and `schema` is a Pydantic class, `Runnable` outputs an instance
                of `schema` (i.e., a Pydantic object). Otherwise, if `include_raw` is
                `False` then `Runnable` outputs a `dict`.
 
                If `include_raw` is `True`, then `Runnable` outputs a `dict` with keys:
 
                - `'raw'`: `BaseMessage`
                - `'parsed'`: `None` if there was a parsing error, otherwise the type
                    depends on the `schema` as described above.
                - `'parsing_error'`: `BaseException | None`
 
        ???+ example "Pydantic schema (`include_raw=False`)"
 
            ```python
            from pydantic import BaseModel
 
 
            class AnswerWithJustification(BaseModel):
                '''An answer to the user question along with justification for the answer.'''
 
                answer: str
                justification: str
 
 
            model = ChatModel(model="model-name", temperature=0)
            structured_model = model.with_structured_output(AnswerWithJustification)
 
            structured_model.invoke(
                "What weighs more a pound of bricks or a pound of feathers"
            )
 
            # -> AnswerWithJustification(
            #     answer='They weigh the same',
            #     justification='Both a pound of bricks and a pound of feathers weigh one pound. The weight is the same, but the volume or density of the objects may differ.'
            # )
            ```
 
        ??? example "Pydantic schema (`include_raw=True`)"
 
            ```python
            from pydantic import BaseModel
 
 
            class AnswerWithJustification(BaseModel):
                '''An answer to the user question along with justification for the answer.'''
 
                answer: str
                justification: str
 
 
            model = ChatModel(model="model-name", temperature=0)
            structured_model = model.with_structured_output(
                AnswerWithJustification, include_raw=True
            )
 
            structured_model.invoke(
                "What weighs more a pound of bricks or a pound of feathers"
            )
            # -> {
            #     'raw': AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_Ao02pnFYXD6GN1yzc0uXPsvF', 'function': {'arguments': '{"answer":"They weigh the same.","justification":"Both a pound of bricks and a pound of feathers weigh one pound. The weight is the same, but the volume or density of the objects may differ."}', 'name': 'AnswerWithJustification'}, 'type': 'function'}]}),
            #     'parsed': AnswerWithJustification(answer='They weigh the same.', justification='Both a pound of bricks and a pound of feathers weigh one pound. The weight is the same, but the volume or density of the objects may differ.'),
            #     'parsing_error': None
            # }
            ```
 
        ??? example "Dictionary schema (`include_raw=False`)"
 
            ```python
            from pydantic import BaseModel
            from langchain_core.utils.function_calling import convert_to_openai_tool
 
 
            class AnswerWithJustification(BaseModel):
                '''An answer to the user question along with justification for the answer.'''
 
                answer: str
                justification: str
 
 
            dict_schema = convert_to_openai_tool(AnswerWithJustification)
            model = ChatModel(model="model-name", temperature=0)
            structured_model = model.with_structured_output(dict_schema)
 
            structured_model.invoke(
                "What weighs more a pound of bricks or a pound of feathers"
            )
            # -> {
            #     'answer': 'They weigh the same',
            #     'justification': 'Both a pound of bricks and a pound of feathers weigh one pound. The weight is the same, but the volume and density of the two substances differ.'
            # }
            ```
 
        !!! warning "Behavior changed in `langchain-core` 0.2.26"
 
            Added support for `TypedDict` class.

Class methods inherited from langchain_aws.chat_models.bedrock_converse.ChatBedrockConverse:
build_extra(values: dict[str, typing.Any]) -> Any from pydantic._internal._model_construction.ModelMetaclass
Build extra kwargs from additional params that were passed in.
create_cache_point(cache_type: str = 'default') -> Dict[str, Any] from pydantic._internal._model_construction.ModelMetaclass
Create a prompt caching configuration for Bedrock.
Args:
    cache_type: Type of cache point. Default is "default".
Returns:
    Dictionary containing prompt caching configuration.
get_lc_namespace() -> list[str] from pydantic._internal._model_construction.ModelMetaclass
Get the namespace of the LangChain object.
 
The default implementation splits `cls.__module__` on `'.'`, e.g.
`langchain_openai.chat_models` becomes
`["langchain_openai", "chat_models"]`. This value is used by `lc_id` to
build the serialization identifier.
 
New partner packages should **not** override this method. The default
behavior is correct for any class whose module path already reflects
its package name. Some older packages (e.g. `langchain-openai`,
`langchain-anthropic`) override it to return a legacy-style namespace
like `["langchain", "chat_models", "openai"]`, matching the module
paths that existed before those integrations were split out of the
main `langchain` package. Those overrides are kept for
backwards-compatible deserialization; new packages should not copy them.
 
Deserialization mapping is handled separately by
`SERIALIZABLE_MAPPING` in `langchain_core.load.mapping`.
 
Returns:
    The namespace.
is_lc_serializable() -> bool from pydantic._internal._model_construction.ModelMetaclass
Is this class serializable?
 
By design, even if a class inherits from `Serializable`, it is not serializable
by default. This is to prevent accidental serialization of objects that should
not be serialized.
 
Returns:
    Whether the class is serializable. Default is `False`.
set_disable_streaming(values: Dict) -> Any from pydantic._internal._model_construction.ModelMetaclass

Readonly properties inherited from langchain_aws.chat_models.bedrock_converse.ChatBedrockConverse:
lc_secrets
A map of constructor argument names to secret ids.
 
For example, `{"openai_api_key": "OPENAI_API_KEY"}`

Data and other attributes inherited from langchain_aws.chat_models.bedrock_converse.ChatBedrockConverse:
__annotations__ = {'additional_model_request_fields': typing.Optional[typing.Dict[str, typing.Any]], 'additional_model_response_field_paths': typing.Optional[typing.List[str]], 'aws_access_key_id': typing.Optional[pydantic.types.SecretStr], 'aws_secret_access_key': typing.Optional[pydantic.types.SecretStr], 'aws_session_token': typing.Optional[pydantic.types.SecretStr], 'base_model_id': typing.Optional[str], 'bedrock_api_key': typing.Optional[pydantic.types.SecretStr], 'bedrock_client': typing.Any, 'client': typing.Any, 'config': typing.Any, ...}

Methods inherited from langchain_core.language_models.chat_models.BaseChatModel:
async agenerate(self, messages: 'list[list[BaseMessage]]', stop: 'list[str] | None' = None, callbacks: 'Callbacks' = None, *, tags: 'list[str] | None' = None, metadata: 'dict[str, Any] | None' = None, run_name: 'str | None' = None, run_id: 'uuid.UUID | None' = None, **kwargs: 'Any') -> 'LLMResult'
Asynchronously pass a sequence of prompts to a model and return generations.
 
This method should make use of batched calls for models that expose a batched
API.
 
Use this method when you want to:
 
1. Take advantage of batched calls,
2. Need more output from the model than just the top generated value,
3. Are building chains that are agnostic to the underlying language model
    type (e.g., pure text completion models vs chat models).
 
Args:
    messages: List of list of messages.
    stop: Stop words to use when generating.
 
        Model output is cut off at the first occurrence of any of these
        substrings.
    callbacks: `Callbacks` to pass through.
 
        Used for executing additional functionality, such as logging or
        streaming, throughout generation.
    tags: The tags to apply.
    metadata: The metadata to apply.
    run_name: The name of the run.
    run_id: The ID of the run.
    **kwargs: Arbitrary additional keyword arguments.
 
        These are usually passed to the model provider API call.
 
Returns:
    An `LLMResult`, which contains a list of candidate `Generations` for each
        input prompt and additional model provider-specific output.
async agenerate_prompt(self, prompts: 'list[PromptValue]', stop: 'list[str] | None' = None, callbacks: 'Callbacks' = None, **kwargs: 'Any') -> 'LLMResult'
Asynchronously pass a sequence of prompts and return model generations.
 
This method should make use of batched calls for models that expose a batched
API.
 
Use this method when you want to:
 
1. Take advantage of batched calls,
2. Need more output from the model than just the top generated value,
3. Are building chains that are agnostic to the underlying language model
    type (e.g., pure text completion models vs chat models).
 
Args:
    prompts: List of `PromptValue` objects.
 
        A `PromptValue` is an object that can be converted to match the format
        of any language model (string for pure text generation models and
        `BaseMessage` objects for chat models).
    stop: Stop words to use when generating.
 
        Model output is cut off at the first occurrence of any of these
        substrings.
    callbacks: `Callbacks` to pass through.
 
        Used for executing additional functionality, such as logging or
        streaming, throughout generation.
    **kwargs: Arbitrary additional keyword arguments.
 
        These are usually passed to the model provider API call.
 
Returns:
    An `LLMResult`, which contains a list of candidate `Generation` objects for
        each input prompt and additional model provider-specific output.
async ainvoke(self, input: 'LanguageModelInput', config: 'RunnableConfig | None' = None, *, stop: 'list[str] | None' = None, **kwargs: 'Any') -> 'AIMessage'
Transform a single input into an output.
 
Args:
    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 `RunnableConfig` for more details.
 
Returns:
    The output of the `Runnable`.
async astream(self, input: 'LanguageModelInput', config: 'RunnableConfig | None' = None, *, stop: 'list[str] | None' = None, **kwargs: 'Any') -> 'AsyncIterator[AIMessageChunk]'
Default implementation of `astream`, which calls `ainvoke`.
 
Subclasses must override this method if they support streaming output.
 
Args:
    input: The input to the `Runnable`.
    config: The config to use for the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    The output of the `Runnable`.
dict(self, **kwargs: 'Any') -> 'dict'
Return a dictionary of the LLM.
generate(self, messages: 'list[list[BaseMessage]]', stop: 'list[str] | None' = None, callbacks: 'Callbacks' = None, *, tags: 'list[str] | None' = None, metadata: 'dict[str, Any] | None' = None, run_name: 'str | None' = None, run_id: 'uuid.UUID | None' = None, **kwargs: 'Any') -> 'LLMResult'
Pass a sequence of prompts to the model and return model generations.
 
This method should make use of batched calls for models that expose a batched
API.
 
Use this method when you want to:
 
1. Take advantage of batched calls,
2. Need more output from the model than just the top generated value,
3. Are building chains that are agnostic to the underlying language model
    type (e.g., pure text completion models vs chat models).
 
Args:
    messages: List of list of messages.
    stop: Stop words to use when generating.
 
        Model output is cut off at the first occurrence of any of these
        substrings.
    callbacks: `Callbacks` to pass through.
 
        Used for executing additional functionality, such as logging or
        streaming, throughout generation.
    tags: The tags to apply.
    metadata: The metadata to apply.
    run_name: The name of the run.
    run_id: The ID of the run.
    **kwargs: Arbitrary additional keyword arguments.
 
        These are usually passed to the model provider API call.
 
Returns:
    An `LLMResult`, which contains a list of candidate `Generations` for each
        input prompt and additional model provider-specific output.
generate_prompt(self, prompts: 'list[PromptValue]', stop: 'list[str] | None' = None, callbacks: 'Callbacks' = None, **kwargs: 'Any') -> 'LLMResult'
Pass a sequence of prompts to the model and return model generations.
 
This method should make use of batched calls for models that expose a batched
API.
 
Use this method when you want to:
 
1. Take advantage of batched calls,
2. Need more output from the model than just the top generated value,
3. Are building chains that are agnostic to the underlying language model
    type (e.g., pure text completion models vs chat models).
 
Args:
    prompts: List of `PromptValue` objects.
 
        A `PromptValue` is an object that can be converted to match the format
        of any language model (string for pure text generation models and
        `BaseMessage` objects for chat models).
    stop: Stop words to use when generating.
 
        Model output is cut off at the first occurrence of any of these
        substrings.
    callbacks: `Callbacks` to pass through.
 
        Used for executing additional functionality, such as logging or
        streaming, throughout generation.
    **kwargs: Arbitrary additional keyword arguments.
 
        These are usually passed to the model provider API call.
 
Returns:
    An `LLMResult`, which contains a list of candidate `Generation` objects for
        each input prompt and additional model provider-specific output.
invoke(self, input: 'LanguageModelInput', config: 'RunnableConfig | None' = None, *, stop: 'list[str] | None' = None, **kwargs: 'Any') -> 'AIMessage'
Transform a single input into an output.
 
Args:
    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 `RunnableConfig` for more details.
 
Returns:
    The output of the `Runnable`.
stream(self, input: 'LanguageModelInput', config: 'RunnableConfig | None' = None, *, stop: 'list[str] | None' = None, **kwargs: 'Any') -> 'Iterator[AIMessageChunk]'
Default implementation of `stream`, which calls `invoke`.
 
Subclasses must override this method if they support streaming output.
 
Args:
    input: The input to the `Runnable`.
    config: The config to use for the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    The output of the `Runnable`.

Readonly properties inherited from langchain_core.language_models.chat_models.BaseChatModel:
OutputType
Get the output type for this `Runnable`.

Methods inherited from langchain_core.language_models.base.BaseLanguageModel:
get_num_tokens(self, text: 'str') -> 'int'
Get the number of tokens present in the text.
 
Useful for checking if an input fits in a model's context window.
 
This should be overridden by model-specific implementations to provide accurate
token counts via model-specific tokenizers.
 
Args:
    text: The string input to tokenize.
 
Returns:
    The integer number of tokens in the text.
get_token_ids(self, text: 'str') -> 'list[int]'
Return the ordered IDs of the tokens in a text.
 
Args:
    text: The string input to tokenize.
 
Returns:
    A list of IDs corresponding to the tokens in the text, in order they occur
        in the text.

Class methods inherited from langchain_core.language_models.base.BaseLanguageModel:
set_verbose(verbose: 'bool | None') -> 'bool' from pydantic._internal._model_construction.ModelMetaclass
If verbose is `None`, set it.
 
This allows users to pass in `None` as verbose to access the global setting.
 
Args:
    verbose: The verbosity setting to use.
 
Returns:
    The verbosity setting to use.

Readonly properties inherited from langchain_core.language_models.base.BaseLanguageModel:
InputType
Get the input type for this `Runnable`.

Methods inherited from langchain_core.runnables.base.RunnableSerializable:
configurable_alternatives(self, which: 'ConfigurableField', *, default_key: 'str' = 'default', prefix_keys: 'bool' = False, **kwargs: 'Runnable[Input, Output] | Callable[[], Runnable[Input, Output]]') -> 'RunnableSerializable[Input, Output]'
Configure alternatives for `Runnable` objects that can be set at runtime.
 
Args:
    which: The `ConfigurableField` instance that will be used to select the
        alternative.
    default_key: The default key to use if no alternative is selected.
    prefix_keys: Whether to prefix the keys with the `ConfigurableField` id.
    **kwargs: A dictionary of keys to `Runnable` instances or callables that
        return `Runnable` instances.
 
Returns:
    A new `Runnable` with the alternatives configured.
 
!!! example
 
    ```python
    from langchain_anthropic import ChatAnthropic
    from langchain_core.runnables.utils import ConfigurableField
    from langchain_openai import ChatOpenAI
 
    model = ChatAnthropic(
        model_name="claude-sonnet-4-5-20250929"
    ).configurable_alternatives(
        ConfigurableField(id="llm"),
        default_key="anthropic",
        openai=ChatOpenAI(),
    )
 
    # uses the default model ChatAnthropic
    print(model.invoke("which organization created you?").content)
 
    # uses ChatOpenAI
    print(
        model.with_config(configurable={"llm": "openai"})
        .invoke("which organization created you?")
        .content
    )
    ```
configurable_fields(self, **kwargs: 'AnyConfigurableField') -> 'RunnableSerializable[Input, Output]'
Configure particular `Runnable` fields at runtime.
 
Args:
    **kwargs: A dictionary of `ConfigurableField` instances to configure.
 
Raises:
    ValueError: If a configuration key is not found in the `Runnable`.
 
Returns:
    A new `Runnable` with the fields configured.
 
!!! example
 
    ```python
    from langchain_core.runnables import ConfigurableField
    from langchain_openai import ChatOpenAI
 
    model = ChatOpenAI(max_tokens=20).configurable_fields(
        max_tokens=ConfigurableField(
            id="output_token_number",
            name="Max tokens in the output",
            description="The maximum number of tokens in the output",
        )
    )
 
    # max_tokens = 20
    print(
        "max_tokens_20: ", model.invoke("tell me something about chess").content
    )
 
    # max_tokens = 200
    print(
        "max_tokens_200: ",
        model.with_config(configurable={"output_token_number": 200})
        .invoke("tell me something about chess")
        .content,
    )
    ```
to_json(self) -> 'SerializedConstructor | SerializedNotImplemented'
Serialize the `Runnable` to JSON.
 
Returns:
    A JSON-serializable representation of the `Runnable`.

Data and other attributes inherited from langchain_core.runnables.base.RunnableSerializable:
__orig_bases__ = (<class 'langchain_core.load.serializable.Serializable'>, langchain_core.runnables.base.Runnable[-Input, +Output])

Methods inherited from langchain_core.load.serializable.Serializable:
__repr_args__(self) -> Any
to_json_not_implemented(self) -> langchain_core.load.serializable.SerializedNotImplemented
Serialize a "not implemented" object.
 
Returns:
    `SerializedNotImplemented`.

Class methods inherited from langchain_core.load.serializable.Serializable:
lc_id() -> list[str] from pydantic._internal._model_construction.ModelMetaclass
Return a unique identifier for this class for serialization purposes.
 
The unique identifier is a list of strings that describes the path
to the object.
 
For example, for the class `langchain.llms.openai.OpenAI`, the id is
`["langchain", "llms", "openai", "OpenAI"]`.

Readonly properties inherited from langchain_core.load.serializable.Serializable:
lc_attributes
List of attribute names that should be included in the serialized kwargs.
 
These attributes must be accepted by the constructor.
 
Default is an empty dictionary.

Methods inherited from pydantic.main.BaseModel:
__copy__(self) -> 'Self'
Returns a shallow copy of the model.
__deepcopy__(self, memo: 'dict[int, Any] | None' = None) -> 'Self'
Returns a deep copy of the model.
__delattr__(self, item: 'str') -> 'Any'
Implement delattr(self, name).
__eq__(self, other: 'Any') -> 'bool'
Return self==value.
__getattr__(self, item: 'str') -> 'Any'
__getstate__(self) -> 'dict[Any, Any]'
__iter__(self) -> 'TupleGenerator'
So `dict(model)` works.
__pretty__(self, fmt: 'Callable[[Any], Any]', **kwargs: 'Any') -> 'Generator[Any]'
Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.
__replace__(self, **changes: 'Any') -> 'Self'
# Because we make use of `@dataclass_transform()`, `__replace__` is already synthesized by
# type checkers, so we define the implementation in this `if not TYPE_CHECKING:` block:
__repr__(self) -> 'str'
Return repr(self).
__repr_name__(self) -> 'str'
Name of the instance's class, used in __repr__.
__repr_recursion__(self, object: 'Any') -> 'str'
Returns the string representation of a recursive object.
__repr_str__(self, join_str: 'str') -> 'str'
__rich_repr__(self) -> 'RichReprResult'
Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.
__setattr__(self, name: 'str', value: 'Any') -> 'None'
Implement setattr(self, name, value).
__setstate__(self, state: 'dict[Any, Any]') -> 'None'
__str__(self) -> 'str'
Return str(self).
copy(self, *, include: 'AbstractSetIntStr | MappingIntStrAny | None' = None, exclude: 'AbstractSetIntStr | MappingIntStrAny | None' = None, update: 'Dict[str, Any] | None' = None, deep: 'bool' = False) -> 'Self'
Returns a copy of the model.
 
!!! warning "Deprecated"
    This method is now deprecated; use `model_copy` instead.
 
If you need `include` or `exclude`, use:
 
```python {test="skip" lint="skip"}
data = self.model_dump(include=include, exclude=exclude, round_trip=True)
data = {**data, **(update or {})}
copied = self.model_validate(data)
```
 
Args:
    include: Optional set or mapping specifying which fields to include in the copied model.
    exclude: Optional set or mapping specifying which fields to exclude in the copied model.
    update: Optional dictionary of field-value pairs to override field values in the copied model.
    deep: If True, the values of fields that are Pydantic models will be deep-copied.
 
Returns:
    A copy of the model with included, excluded and updated fields as specified.
json(self, *, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, by_alias: 'bool' = False, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, encoder: 'Callable[[Any], Any] | None' = PydanticUndefined, models_as_dict: 'bool' = PydanticUndefined, **dumps_kwargs: 'Any') -> 'str'
model_copy(self, *, update: 'Mapping[str, Any] | None' = None, deep: 'bool' = False) -> 'Self'
!!! abstract "Usage Documentation"
    [`model_copy`](../concepts/models.md#model-copy)
 
Returns a copy of the model.
 
!!! note
    The underlying instance's [`__dict__`][object.__dict__] attribute is copied. This
    might have unexpected side effects if you store anything in it, on top of the model
    fields (e.g. the value of [cached properties][functools.cached_property]).
 
Args:
    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.
model_dump(self, *, mode: "Literal['json', 'python'] | str" = 'python', include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, exclude_computed_fields: 'bool' = False, round_trip: 'bool' = False, warnings: "bool | Literal['none', 'warn', 'error']" = True, fallback: 'Callable[[Any], Any] | None' = None, serialize_as_any: 'bool' = False) -> 'dict[str, Any]'
!!! abstract "Usage Documentation"
    [`model_dump`](../concepts/serialization.md#python-mode)
 
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
 
Args:
    mode: The mode in which `to_python` should run.
        If mode is 'json', the output will only contain JSON serializable types.
        If mode is 'python', the output may contain non-JSON-serializable Python objects.
    include: A set of fields to include in the output.
    exclude: A set of fields to exclude from the output.
    context: Additional context to pass to the serializer.
    by_alias: Whether to use the field's alias in the dictionary key if defined.
    exclude_unset: Whether to exclude fields that have not been explicitly set.
    exclude_defaults: Whether to exclude fields that are set to their default value.
    exclude_none: Whether to exclude fields that have a value of `None`.
    exclude_computed_fields: Whether to exclude computed fields.
        While this can be useful for round-tripping, it is usually recommended to use the dedicated
        `round_trip` parameter instead.
    round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
    warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
        "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
    fallback: A function to call when an unknown value is encountered. If not provided,
        a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
    serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
 
Returns:
    A dictionary representation of the model.
model_dump_json(self, *, indent: 'int | None' = None, ensure_ascii: 'bool' = False, include: 'IncEx | None' = None, exclude: 'IncEx | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, exclude_unset: 'bool' = False, exclude_defaults: 'bool' = False, exclude_none: 'bool' = False, exclude_computed_fields: 'bool' = False, round_trip: 'bool' = False, warnings: "bool | Literal['none', 'warn', 'error']" = True, fallback: 'Callable[[Any], Any] | None' = None, serialize_as_any: 'bool' = False) -> 'str'
!!! abstract "Usage Documentation"
    [`model_dump_json`](../concepts/serialization.md#json-mode)
 
Generates a JSON representation of the model using Pydantic's `to_json` method.
 
Args:
    indent: Indentation to use in the JSON output. If None is passed, the output will be compact.
    ensure_ascii: If `True`, the output is guaranteed to have all incoming non-ASCII characters escaped.
        If `False` (the default), these characters will be output as-is.
    include: Field(s) to include in the JSON output.
    exclude: Field(s) to exclude from the JSON output.
    context: Additional context to pass to the serializer.
    by_alias: Whether to serialize using field aliases.
    exclude_unset: Whether to exclude fields that have not been explicitly set.
    exclude_defaults: Whether to exclude fields that are set to their default value.
    exclude_none: Whether to exclude fields that have a value of `None`.
    exclude_computed_fields: Whether to exclude computed fields.
        While this can be useful for round-tripping, it is usually recommended to use the dedicated
        `round_trip` parameter instead.
    round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T].
    warnings: How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors,
        "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
    fallback: A function to call when an unknown value is encountered. If not provided,
        a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
    serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.
 
Returns:
    A JSON string representation of the model.
model_post_init(self, context: 'Any', /) -> 'None'
Override this method to perform additional initialization after `__init__` and `model_construct`.
This is useful if you want to do some validation that requires the entire model to be initialized.

Class methods inherited from pydantic.main.BaseModel:
__class_getitem__(typevar_values: 'type[Any] | tuple[type[Any], ...]') -> 'type[BaseModel] | _forward_ref.PydanticRecursiveRef' from pydantic._internal._model_construction.ModelMetaclass
__get_pydantic_core_schema__(source: 'type[BaseModel]', handler: 'GetCoreSchemaHandler', /) -> 'CoreSchema' from pydantic._internal._model_construction.ModelMetaclass
__get_pydantic_json_schema__(core_schema: 'CoreSchema', handler: 'GetJsonSchemaHandler', /) -> 'JsonSchemaValue' from pydantic._internal._model_construction.ModelMetaclass
Hook into generating the model's JSON schema.
 
Args:
    core_schema: A `pydantic-core` CoreSchema.
        You can ignore this argument and call the handler with a new CoreSchema,
        wrap this CoreSchema (`{'type': 'nullable', 'schema': current_schema}`),
        or just call the handler with the original schema.
    handler: Call into Pydantic's internal JSON schema generation.
        This will raise a `pydantic.errors.PydanticInvalidForJsonSchema` if JSON schema
        generation fails.
        Since this gets called by `BaseModel.model_json_schema` you can override the
        `schema_generator` argument to that function to change JSON schema generation globally
        for a type.
 
Returns:
    A JSON schema, as a Python object.
__pydantic_init_subclass__(**kwargs: 'Any') -> 'None' from pydantic._internal._model_construction.ModelMetaclass
This is intended to behave just like `__init_subclass__`, but is called by `ModelMetaclass`
only after basic class initialization is complete. In particular, attributes like `model_fields` will
be present when this is called, but forward annotations are not guaranteed to be resolved yet,
meaning that creating an instance of the class may fail.
 
This is necessary because `__init_subclass__` will always be called by `type.__new__`,
and it would require a prohibitively large refactor to the `ModelMetaclass` to ensure that
`type.__new__` was called in such a manner that the class would already be sufficiently initialized.
 
This will receive the same `kwargs` that would be passed to the standard `__init_subclass__`, namely,
any kwargs passed to the class definition that aren't used internally by Pydantic.
 
Args:
    **kwargs: Any keyword arguments passed to the class definition that aren't used internally
        by Pydantic.
 
Note:
    You may want to override [`__pydantic_on_complete__()`][pydantic.main.BaseModel.__pydantic_on_complete__]
    instead, which is called once the class and its fields are fully initialized and ready for validation.
__pydantic_on_complete__() -> 'None' from pydantic._internal._model_construction.ModelMetaclass
This is called once the class and its fields are fully initialized and ready to be used.
 
This typically happens when the class is created (just before
[`__pydantic_init_subclass__()`][pydantic.main.BaseModel.__pydantic_init_subclass__] is called on the superclass),
except when forward annotations are used that could not immediately be resolved.
In that case, it will be called later, when the model is rebuilt automatically or explicitly using
[`model_rebuild()`][pydantic.main.BaseModel.model_rebuild].
construct(_fields_set: 'set[str] | None' = None, **values: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
from_orm(obj: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
model_construct(_fields_set: 'set[str] | None' = None, **values: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Creates a new instance of the `Model` class with validated data.
 
Creates a new model setting `__dict__` and `__pydantic_fields_set__` from trusted or pre-validated data.
Default values are respected, but no other validation is performed.
 
!!! note
    `model_construct()` generally respects the `model_config.extra` setting on the provided model.
    That is, if `model_config.extra == 'allow'`, then all extra passed values are added to the model instance's `__dict__`
    and `__pydantic_extra__` fields. If `model_config.extra == 'ignore'` (the default), then all extra passed values are ignored.
    Because no validation is performed with a call to `model_construct()`, having `model_config.extra == 'forbid'` does not result in
    an error if extra values are passed, but they will be ignored.
 
Args:
    _fields_set: A set of field names that were originally explicitly set during instantiation. If provided,
        this is directly used for the [`model_fields_set`][pydantic.BaseModel.model_fields_set] attribute.
        Otherwise, the field names from the `values` argument will be used.
    values: Trusted or pre-validated data dictionary.
 
Returns:
    A new instance of the `Model` class with validated data.
model_json_schema(by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}', schema_generator: 'type[GenerateJsonSchema]' = <class 'pydantic.json_schema.GenerateJsonSchema'>, mode: 'JsonSchemaMode' = 'validation', *, union_format: "Literal['any_of', 'primitive_type_array']" = 'any_of') -> 'dict[str, Any]' from pydantic._internal._model_construction.ModelMetaclass
Generates a JSON schema for a model class.
 
Args:
    by_alias: Whether to use attribute aliases or not.
    ref_template: The reference template.
    union_format: The format to use when combining schemas from unions together. Can be one of:
 
        - `'any_of'`: Use the [`anyOf`](https://json-schema.org/understanding-json-schema/reference/combining#anyOf)
        keyword to combine schemas (the default).
        - `'primitive_type_array'`: Use the [`type`](https://json-schema.org/understanding-json-schema/reference/type)
        keyword as an array of strings, containing each type of the combination. If any of the schemas is not a primitive
        type (`string`, `boolean`, `null`, `integer` or `number`) or contains constraints/metadata, falls back to
        `any_of`.
    schema_generator: To override the logic used to generate the JSON schema, as a subclass of
        `GenerateJsonSchema` with your desired modifications
    mode: The mode in which to generate the schema.
 
Returns:
    The JSON schema for the given model class.
model_parametrized_name(params: 'tuple[type[Any], ...]') -> 'str' from pydantic._internal._model_construction.ModelMetaclass
Compute the class name for parametrizations of generic classes.
 
This method can be overridden to achieve a custom naming scheme for generic BaseModels.
 
Args:
    params: Tuple of types of the class. Given a generic class
        `Model` with 2 type variables and a concrete model `Model[str, int]`,
        the value `(str, int)` would be passed to `params`.
 
Returns:
    String representing the new class where `params` are passed to `cls` as type variables.
 
Raises:
    TypeError: Raised when trying to generate concrete names for non-generic models.
model_rebuild(*, force: 'bool' = False, raise_errors: 'bool' = True, _parent_namespace_depth: 'int' = 2, _types_namespace: 'MappingNamespace | None' = None) -> 'bool | None' from pydantic._internal._model_construction.ModelMetaclass
Try to rebuild the pydantic-core schema for the model.
 
This may be necessary when one of the annotations is a ForwardRef which could not be resolved during
the initial attempt to build the schema, and automatic rebuilding fails.
 
Args:
    force: Whether to force the rebuilding of the model schema, defaults to `False`.
    raise_errors: Whether to raise errors, defaults to `True`.
    _parent_namespace_depth: The depth level of the parent namespace, defaults to 2.
    _types_namespace: The types namespace, defaults to `None`.
 
Returns:
    Returns `None` if the schema is already "complete" and rebuilding was not required.
    If rebuilding _was_ required, returns `True` if rebuilding was successful, otherwise `False`.
model_validate(obj: 'Any', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, from_attributes: 'bool | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Validate a pydantic model instance.
 
Args:
    obj: The object to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    from_attributes: Whether to extract data from object attributes.
    context: Additional context to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Raises:
    ValidationError: If the object could not be validated.
 
Returns:
    The validated model instance.
model_validate_json(json_data: 'str | bytes | bytearray', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
!!! abstract "Usage Documentation"
    [JSON Parsing](../concepts/json.md#json-parsing)
 
Validate the given JSON data against the Pydantic model.
 
Args:
    json_data: The JSON data to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    context: Extra variables to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Returns:
    The validated Pydantic model.
 
Raises:
    ValidationError: If `json_data` is not a JSON string or the object could not be validated.
model_validate_strings(obj: 'Any', *, strict: 'bool | None' = None, extra: 'ExtraValues | None' = None, context: 'Any | None' = None, by_alias: 'bool | None' = None, by_name: 'bool | None' = None) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
Validate the given object with string data against the Pydantic model.
 
Args:
    obj: The object containing string data to validate.
    strict: Whether to enforce types strictly.
    extra: Whether to ignore, allow, or forbid extra data during model validation.
        See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
    context: Extra variables to pass to the validator.
    by_alias: Whether to use the field's alias when validating against the provided input data.
    by_name: Whether to use the field's name when validating against the provided input data.
 
Returns:
    The validated Pydantic model.
parse_file(path: 'str | Path', *, content_type: 'str | None' = None, encoding: 'str' = 'utf8', proto: 'DeprecatedParseProtocol | None' = None, allow_pickle: 'bool' = False) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
parse_obj(obj: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
parse_raw(b: 'str | bytes', *, content_type: 'str | None' = None, encoding: 'str' = 'utf8', proto: 'DeprecatedParseProtocol | None' = None, allow_pickle: 'bool' = False) -> 'Self' from pydantic._internal._model_construction.ModelMetaclass
schema(by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}') -> 'Dict[str, Any]' from pydantic._internal._model_construction.ModelMetaclass
schema_json(*, by_alias: 'bool' = True, ref_template: 'str' = '#/$defs/{model}', **dumps_kwargs: 'Any') -> 'str' from pydantic._internal._model_construction.ModelMetaclass
update_forward_refs(**localns: 'Any') -> 'None' from pydantic._internal._model_construction.ModelMetaclass
validate(value: 'Any') -> 'Self' from pydantic._internal._model_construction.ModelMetaclass

Readonly properties inherited from pydantic.main.BaseModel:
__fields_set__
model_extra
Get extra fields set during validation.
 
Returns:
    A dictionary of extra fields, or `None` if `config.extra` is not set to `"allow"`.
model_fields_set
Returns the set of fields that have been explicitly set on this model instance.
 
Returns:
    A set of strings representing the fields that have been set,
        i.e. that were not filled from defaults.

Data descriptors inherited from pydantic.main.BaseModel:
__dict__
dictionary for instance variables (if defined)
__pydantic_extra__
__pydantic_fields_set__
__pydantic_private__

Data and other attributes inherited from pydantic.main.BaseModel:
__hash__ = None
__pydantic_root_model__ = False
model_computed_fields = {}
model_fields = {'additional_model_request_fields': FieldInfo(annotation=Union[Dict[str, Any], NoneType], required=False, default=None), 'additional_model_response_field_paths': FieldInfo(annotation=Union[List[str], NoneType], required=False, default=None), 'aws_access_key_id': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'aws_secret_access_key': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'aws_session_token': FieldInfo(annotation=Union[SecretStr, NoneType],...uired=False, default_factory=get_secret_from_env), 'base_model_id': FieldInfo(annotation=Union[str, NoneType], requi...fault=None, alias='base_model', alias_priority=2), 'bedrock_api_key': FieldInfo(annotation=Union[SecretStr, NoneType],...cret_from_env, alias='api_key', alias_priority=2), 'bedrock_client': FieldInfo(annotation=Any, required=False, default=None, exclude=True), 'cache': FieldInfo(annotation=Union[BaseCache, bool, NoneType], required=False, default=None, exclude=True), 'callbacks': FieldInfo(annotation=Union[list[BaseCallbackHand...ype], required=False, default=None, exclude=True), ...}

Methods inherited from langchain_core.runnables.base.Runnable:
__or__(self, other: 'Runnable[Any, Other] | Callable[[Iterator[Any]], Iterator[Other]] | Callable[[AsyncIterator[Any]], AsyncIterator[Other]] | Callable[[Any], Other] | Mapping[str, Runnable[Any, Other] | Callable[[Any], Other] | Any]') -> 'RunnableSerializable[Input, Other]'
Runnable "or" operator.
 
Compose this `Runnable` with another object to create a
`RunnableSequence`.
 
Args:
    other: Another `Runnable` or a `Runnable`-like object.
 
Returns:
    A new `Runnable`.
__ror__(self, other: 'Runnable[Other, Any] | Callable[[Iterator[Other]], Iterator[Any]] | Callable[[AsyncIterator[Other]], AsyncIterator[Any]] | Callable[[Other], Any] | Mapping[str, Runnable[Other, Any] | Callable[[Other], Any] | Any]') -> 'RunnableSerializable[Other, Output]'
Runnable "reverse-or" operator.
 
Compose this `Runnable` with another object to create a
`RunnableSequence`.
 
Args:
    other: Another `Runnable` or a `Runnable`-like object.
 
Returns:
    A new `Runnable`.
async abatch(self, inputs: 'list[Input]', config: 'RunnableConfig | list[RunnableConfig] | None' = None, *, return_exceptions: 'bool' = False, **kwargs: 'Any | None') -> 'list[Output]'
Default implementation runs `ainvoke` in parallel using `asyncio.gather`.
 
The default implementation of `batch` works well for IO bound runnables.
 
Subclasses must override this method if they can batch more efficiently;
e.g., if the underlying `Runnable` uses an API which supports a batch mode.
 
Args:
    inputs: A list of inputs 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 `RunnableConfig` for more details.
    return_exceptions: Whether to return exceptions instead of raising them.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Returns:
    A list of outputs from the `Runnable`.
async abatch_as_completed(self, inputs: 'Sequence[Input]', config: 'RunnableConfig | Sequence[RunnableConfig] | None' = None, *, return_exceptions: 'bool' = False, **kwargs: 'Any | None') -> 'AsyncIterator[tuple[int, Output | Exception]]'
Run `ainvoke` in parallel on a list of inputs.
 
Yields results as they complete.
 
Args:
    inputs: A list of inputs 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 `RunnableConfig` for more details.
    return_exceptions: Whether to return exceptions instead of raising them.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    A tuple of the index of the input and the output from the `Runnable`.
as_tool(self, args_schema: 'type[BaseModel] | None' = None, *, name: 'str | None' = None, description: 'str | None' = None, arg_types: 'dict[str, type] | None' = None) -> 'BaseTool'
.. beta::
   This API is in beta and may change in the future.
 
Create a `BaseTool` from a `Runnable`.
 
`as_tool` will instantiate a `BaseTool` with a name, description, and
`args_schema` from a `Runnable`. Where possible, schemas are inferred
from `runnable.get_input_schema`.
 
Alternatively (e.g., if the `Runnable` takes a dict as input and the specific
`dict` keys are not typed), the schema can be specified directly with
`args_schema`.
 
You can also pass `arg_types` to just specify the required arguments and their
types.
 
Args:
    args_schema: The schema for the tool.
    name: The name of the tool.
    description: The description of the tool.
    arg_types: A dictionary of argument names to types.
 
Returns:
    A `BaseTool` instance.
 
!!! example "`TypedDict` input"
 
    ```python
    from typing_extensions import TypedDict
    from langchain_core.runnables import RunnableLambda
 
 
    class Args(TypedDict):
        a: int
        b: list[int]
 
 
    def f(x: Args) -> str:
        return str(x["a"] * max(x["b"]))
 
 
    runnable = RunnableLambda(f)
    as_tool = runnable.as_tool()
    as_tool.invoke({"a": 3, "b": [1, 2]})
    ```
 
!!! example "`dict` input, specifying schema via `args_schema`"
 
    ```python
    from typing import Any
    from pydantic import BaseModel, Field
    from langchain_core.runnables import RunnableLambda
 
    def f(x: dict[str, Any]) -> str:
        return str(x["a"] * max(x["b"]))
 
    class FSchema(BaseModel):
        """Apply a function to an integer and list of integers."""
 
        a: int = Field(..., description="Integer")
        b: list[int] = Field(..., description="List of ints")
 
    runnable = RunnableLambda(f)
    as_tool = runnable.as_tool(FSchema)
    as_tool.invoke({"a": 3, "b": [1, 2]})
    ```
 
!!! example "`dict` input, specifying schema via `arg_types`"
 
    ```python
    from typing import Any
    from langchain_core.runnables import RunnableLambda
 
 
    def f(x: dict[str, Any]) -> str:
        return str(x["a"] * max(x["b"]))
 
 
    runnable = RunnableLambda(f)
    as_tool = runnable.as_tool(arg_types={"a": int, "b": list[int]})
    as_tool.invoke({"a": 3, "b": [1, 2]})
    ```
 
!!! example "`str` input"
 
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def f(x: str) -> str:
        return x + "a"
 
 
    def g(x: str) -> str:
        return x + "z"
 
 
    runnable = RunnableLambda(f) | g
    as_tool = runnable.as_tool()
    as_tool.invoke("b")
    ```
assign(self, **kwargs: 'Runnable[dict[str, Any], Any] | Callable[[dict[str, Any]], Any] | Mapping[str, Runnable[dict[str, Any], Any] | Callable[[dict[str, Any]], Any]]') -> 'RunnableSerializable[Any, Any]'
Assigns new fields to the `dict` output of this `Runnable`.
 
```python
from langchain_core.language_models.fake import FakeStreamingListLLM
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import SystemMessagePromptTemplate
from langchain_core.runnables import Runnable
from operator import itemgetter
 
prompt = (
    SystemMessagePromptTemplate.from_template("You are a nice assistant.")
    + "{question}"
)
model = FakeStreamingListLLM(responses=["foo-lish"])
 
chain: Runnable = prompt | model | {"str": StrOutputParser()}
 
chain_with_assign = chain.assign(hello=itemgetter("str") | model)
 
print(chain_with_assign.input_schema.model_json_schema())
# {'title': 'PromptInput', 'type': 'object', 'properties':
{'question': {'title': 'Question', 'type': 'string'}}}
print(chain_with_assign.output_schema.model_json_schema())
# {'title': 'RunnableSequenceOutput', 'type': 'object', 'properties':
{'str': {'title': 'Str',
'type': 'string'}, 'hello': {'title': 'Hello', 'type': 'string'}}}
```
 
Args:
    **kwargs: A mapping of keys to `Runnable` or `Runnable`-like objects
        that will be invoked with the entire output dict of this `Runnable`.
 
Returns:
    A new `Runnable`.
async astream_events(self, input: 'Any', config: 'RunnableConfig | None' = None, *, version: "Literal['v1', 'v2']" = 'v2', include_names: 'Sequence[str] | None' = None, include_types: 'Sequence[str] | None' = None, include_tags: 'Sequence[str] | None' = None, exclude_names: 'Sequence[str] | None' = None, exclude_types: 'Sequence[str] | None' = None, exclude_tags: 'Sequence[str] | None' = None, **kwargs: 'Any') -> 'AsyncIterator[StreamEvent]'
Generate a stream of events.
 
Use to create an iterator over `StreamEvent` that provide real-time information
about the progress of the `Runnable`, including `StreamEvent` from intermediate
results.
 
A `StreamEvent` is a dictionary with the following schema:
 
- `event`: Event names are of the format:
    `on_[runnable_type]_(start|stream|end)`.
- `name`: The name of the `Runnable` that generated the event.
- `run_id`: Randomly generated ID associated with the given execution of the
    `Runnable` that emitted the event. A child `Runnable` that gets invoked as
    part of the execution of a parent `Runnable` is assigned its own unique ID.
- `parent_ids`: The IDs of the parent runnables that generated the event. The
    root `Runnable` will have an empty list. The order of the parent IDs is from
    the root to the immediate parent. Only available for v2 version of the API.
    The v1 version of the API will return an empty list.
- `tags`: The tags of the `Runnable` that generated the event.
- `metadata`: The metadata of the `Runnable` that generated the event.
- `data`: The data associated with the event. The contents of this field
    depend on the type of event. See the table below for more details.
 
Below is a table that illustrates some events that might be emitted by various
chains. Metadata fields have been omitted from the table for brevity.
Chain definitions have been included after the table.
 
!!! note
    This reference table is for the v2 version of the schema.
 
| event                  | name                 | chunk                               | input                                             | output                                              |
| ---------------------- | -------------------- | ----------------------------------- | ------------------------------------------------- | --------------------------------------------------- |
| `on_chat_model_start`  | `'[model name]'`     |                                     | `{"messages": [[SystemMessage, HumanMessage]]}`   |                                                     |
| `on_chat_model_stream` | `'[model name]'`     | `AIMessageChunk(content="hello")`   |                                                   |                                                     |
| `on_chat_model_end`    | `'[model name]'`     |                                     | `{"messages": [[SystemMessage, HumanMessage]]}`   | `AIMessageChunk(content="hello world")`             |
| `on_llm_start`         | `'[model name]'`     |                                     | `{'input': 'hello'}`                              |                                                     |
| `on_llm_stream`        | `'[model name]'`     | `'Hello' `                          |                                                   |                                                     |
| `on_llm_end`           | `'[model name]'`     |                                     | `'Hello human!'`                                  |                                                     |
| `on_chain_start`       | `'format_docs'`      |                                     |                                                   |                                                     |
| `on_chain_stream`      | `'format_docs'`      | `'hello world!, goodbye world!'`    |                                                   |                                                     |
| `on_chain_end`         | `'format_docs'`      |                                     | `[Document(...)]`                                 | `'hello world!, goodbye world!'`                    |
| `on_tool_start`        | `'some_tool'`        |                                     | `{"x": 1, "y": "2"}`                              |                                                     |
| `on_tool_end`          | `'some_tool'`        |                                     |                                                   | `{"x": 1, "y": "2"}`                                |
| `on_retriever_start`   | `'[retriever name]'` |                                     | `{"query": "hello"}`                              |                                                     |
| `on_retriever_end`     | `'[retriever name]'` |                                     | `{"query": "hello"}`                              | `[Document(...), ..]`                               |
| `on_prompt_start`      | `'[template_name]'`  |                                     | `{"question": "hello"}`                           |                                                     |
| `on_prompt_end`        | `'[template_name]'`  |                                     | `{"question": "hello"}`                           | `ChatPromptValue(messages: [SystemMessage, ...])`   |
 
In addition to the standard events, users can also dispatch custom events (see example below).
 
Custom events will be only be surfaced with in the v2 version of the API!
 
A custom event has following format:
 
| Attribute   | Type   | Description                                                                                               |
| ----------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `name`      | `str`  | A user defined name for the event.                                                                        |
| `data`      | `Any`  | The data associated with the event. This can be anything, though we suggest making it JSON serializable.  |
 
Here are declarations associated with the standard events shown above:
 
`format_docs`:
 
```python
def format_docs(docs: list[Document]) -> str:
    '''Format the docs.'''
    return ", ".join([doc.page_content for doc in docs])
 
 
format_docs = RunnableLambda(format_docs)
```
 
`some_tool`:
 
```python
@tool
def some_tool(x: int, y: str) -> dict:
    '''Some_tool.'''
    return {"x": x, "y": y}
```
 
`prompt`:
 
```python
template = ChatPromptTemplate.from_messages(
    [
        ("system", "You are Cat Agent 007"),
        ("human", "{question}"),
    ]
).with_config({"run_name": "my_template", "tags": ["my_template"]})
```
 
!!! example
 
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    async def reverse(s: str) -> str:
        return s[::-1]
 
 
    chain = RunnableLambda(func=reverse)
 
    events = [
        event async for event in chain.astream_events("hello", version="v2")
    ]
 
    # Will produce the following events
    # (run_id, and parent_ids has been omitted for brevity):
    [
        {
            "data": {"input": "hello"},
            "event": "on_chain_start",
            "metadata": {},
            "name": "reverse",
            "tags": [],
        },
        {
            "data": {"chunk": "olleh"},
            "event": "on_chain_stream",
            "metadata": {},
            "name": "reverse",
            "tags": [],
        },
        {
            "data": {"output": "olleh"},
            "event": "on_chain_end",
            "metadata": {},
            "name": "reverse",
            "tags": [],
        },
    ]
    ```
 
```python title="Dispatch custom event"
from langchain_core.callbacks.manager import (
    adispatch_custom_event,
)
from langchain_core.runnables import RunnableLambda, RunnableConfig
import asyncio
 
 
async def slow_thing(some_input: str, config: RunnableConfig) -> str:
    """Do something that takes a long time."""
    await asyncio.sleep(1) # Placeholder for some slow operation
    await adispatch_custom_event(
        "progress_event",
        {"message": "Finished step 1 of 3"},
        config=config # Must be included for python < 3.10
    )
    await asyncio.sleep(1) # Placeholder for some slow operation
    await adispatch_custom_event(
        "progress_event",
        {"message": "Finished step 2 of 3"},
        config=config # Must be included for python < 3.10
    )
    await asyncio.sleep(1) # Placeholder for some slow operation
    return "Done"
 
slow_thing = RunnableLambda(slow_thing)
 
async for event in slow_thing.astream_events("some_input", version="v2"):
    print(event)
```
 
Args:
    input: The input to the `Runnable`.
    config: The config to use for the `Runnable`.
    version: The version of the schema to use, either `'v2'` or `'v1'`.
 
        Users should use `'v2'`.
 
        `'v1'` is for backwards compatibility and will be deprecated
        in `0.4.0`.
 
        No default will be assigned until the API is stabilized.
        custom events will only be surfaced in `'v2'`.
    include_names: Only include events from `Runnable` objects with matching names.
    include_types: Only include events from `Runnable` objects with matching types.
    include_tags: Only include events from `Runnable` objects with matching tags.
    exclude_names: Exclude events from `Runnable` objects with matching names.
    exclude_types: Exclude events from `Runnable` objects with matching types.
    exclude_tags: Exclude events from `Runnable` objects with matching tags.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
        These will be passed to `astream_log` as this implementation
        of `astream_events` is built on top of `astream_log`.
 
Yields:
    An async stream of `StreamEvent`.
 
Raises:
    NotImplementedError: If the version is not `'v1'` or `'v2'`.
async astream_log(self, input: 'Any', config: 'RunnableConfig | None' = None, *, diff: 'bool' = True, with_streamed_output_list: 'bool' = True, include_names: 'Sequence[str] | None' = None, include_types: 'Sequence[str] | None' = None, include_tags: 'Sequence[str] | None' = None, exclude_names: 'Sequence[str] | None' = None, exclude_types: 'Sequence[str] | None' = None, exclude_tags: 'Sequence[str] | None' = None, **kwargs: 'Any') -> '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.
 
Args:
    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.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    A `RunLogPatch` or `RunLog` object.
async atransform(self, input: 'AsyncIterator[Input]', config: 'RunnableConfig | None' = None, **kwargs: 'Any | None') -> 'AsyncIterator[Output]'
Transform inputs to outputs.
 
Default implementation of atransform, which buffers input and calls `astream`.
 
Subclasses must override this method if they can start producing output while
input is still being generated.
 
Args:
    input: An async iterator of inputs to the `Runnable`.
    config: The config to use for the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    The output of the `Runnable`.
batch(self, inputs: 'list[Input]', config: 'RunnableConfig | list[RunnableConfig] | None' = None, *, return_exceptions: 'bool' = False, **kwargs: 'Any | None') -> 'list[Output]'
Default implementation runs invoke in parallel using a thread pool executor.
 
The default implementation of batch works well for IO bound runnables.
 
Subclasses must override this method if they can batch more efficiently;
e.g., if the underlying `Runnable` uses an API which supports a batch mode.
 
Args:
    inputs: A list of inputs 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 `RunnableConfig` for more details.
    return_exceptions: Whether to return exceptions instead of raising them.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Returns:
    A list of outputs from the `Runnable`.
batch_as_completed(self, inputs: 'Sequence[Input]', config: 'RunnableConfig | Sequence[RunnableConfig] | None' = None, *, return_exceptions: 'bool' = False, **kwargs: 'Any | None') -> 'Iterator[tuple[int, Output | Exception]]'
Run `invoke` in parallel on a list of inputs.
 
Yields results as they complete.
 
Args:
    inputs: A list of inputs 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 `RunnableConfig` for more details.
    return_exceptions: Whether to return exceptions instead of raising them.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    Tuples of the index of the input and the output from the `Runnable`.
bind(self, **kwargs: 'Any') -> 'Runnable[Input, Output]'
Bind arguments to a `Runnable`, returning a new `Runnable`.
 
Useful when a `Runnable` in a chain requires an argument that is not
in the output of the previous `Runnable` or included in the user input.
 
Args:
    **kwargs: The arguments to bind to the `Runnable`.
 
Returns:
    A new `Runnable` with the arguments bound.
 
Example:
    ```python
    from langchain_ollama import ChatOllama
    from langchain_core.output_parsers import StrOutputParser
 
    model = ChatOllama(model="llama3.1")
 
    # Without bind
    chain = model | StrOutputParser()
 
    chain.invoke("Repeat quoted words exactly: 'One two three four five.'")
    # Output is 'One two three four five.'
 
    # With bind
    chain = model.bind(stop=["three"]) | StrOutputParser()
 
    chain.invoke("Repeat quoted words exactly: 'One two three four five.'")
    # Output is 'One two'
    ```
config_schema(self, *, include: 'Sequence[str] | None' = 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.
 
Args:
    include: A list of fields to include in the config schema.
 
Returns:
    A Pydantic model that can be used to validate config.
get_config_jsonschema(self, *, include: 'Sequence[str] | None' = None) -> 'dict[str, Any]'
Get a JSON schema that represents the config of the `Runnable`.
 
Args:
    include: A list of fields to include in the config schema.
 
Returns:
    A JSON schema that represents the config of the `Runnable`.
 
!!! version-added "Added in `langchain-core` 0.3.0"
get_graph(self, config: 'RunnableConfig | None' = None) -> 'Graph'
Return a graph representation of this `Runnable`.
get_input_jsonschema(self, config: 'RunnableConfig | None' = None) -> 'dict[str, Any]'
Get a JSON schema that represents the input to the `Runnable`.
 
Args:
    config: A config to use when generating the schema.
 
Returns:
    A JSON schema that represents the input to the `Runnable`.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def add_one(x: int) -> int:
        return x + 1
 
 
    runnable = RunnableLambda(add_one)
 
    print(runnable.get_input_jsonschema())
    ```
 
!!! version-added "Added in `langchain-core` 0.3.0"
get_input_schema(self, config: 'RunnableConfig | None' = None) -> 'type[BaseModel]'
Get a Pydantic model that can be used to validate input to the `Runnable`.
 
`Runnable` objects 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.
 
Args:
    config: A config to use when generating the schema.
 
Returns:
    A Pydantic model that can be used to validate input.
get_name(self, suffix: 'str | None' = None, *, name: 'str | None' = None) -> 'str'
Get the name of the `Runnable`.
 
Args:
    suffix: An optional suffix to append to the name.
    name: An optional name to use instead of the `Runnable`'s name.
 
Returns:
    The name of the `Runnable`.
get_output_jsonschema(self, config: 'RunnableConfig | None' = None) -> 'dict[str, Any]'
Get a JSON schema that represents the output of the `Runnable`.
 
Args:
    config: A config to use when generating the schema.
 
Returns:
    A JSON schema that represents the output of the `Runnable`.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def add_one(x: int) -> int:
        return x + 1
 
 
    runnable = RunnableLambda(add_one)
 
    print(runnable.get_output_jsonschema())
    ```
 
!!! version-added "Added in `langchain-core` 0.3.0"
get_output_schema(self, config: 'RunnableConfig | None' = None) -> 'type[BaseModel]'
Get a Pydantic model that can be used to validate output to the `Runnable`.
 
`Runnable` objects 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.
 
Args:
    config: A config to use when generating the schema.
 
Returns:
    A Pydantic model that can be used to validate output.
get_prompts(self, config: 'RunnableConfig | None' = None) -> 'list[BasePromptTemplate]'
Return a list of prompts used by this `Runnable`.
map(self) -> 'Runnable[list[Input], list[Output]]'
Return a new `Runnable` that maps a list of inputs to a list of outputs.
 
Calls `invoke` with each input.
 
Returns:
    A new `Runnable` that maps a list of inputs to a list of outputs.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def _lambda(x: int) -> int:
        return x + 1
 
 
    runnable = RunnableLambda(_lambda)
    print(runnable.map().invoke([1, 2, 3]))  # [2, 3, 4]
    ```
pick(self, keys: 'str | list[str]') -> 'RunnableSerializable[Any, Any]'
Pick keys from the output `dict` of this `Runnable`.
 
!!! example "Pick a single key"
 
    ```python
    import json
 
    from langchain_core.runnables import RunnableLambda, RunnableMap
 
    as_str = RunnableLambda(str)
    as_json = RunnableLambda(json.loads)
    chain = RunnableMap(str=as_str, json=as_json)
 
    chain.invoke("[1, 2, 3]")
    # -> {"str": "[1, 2, 3]", "json": [1, 2, 3]}
 
    json_only_chain = chain.pick("json")
    json_only_chain.invoke("[1, 2, 3]")
    # -> [1, 2, 3]
    ```
 
!!! example "Pick a list of keys"
 
    ```python
    from typing import Any
 
    import json
 
    from langchain_core.runnables import RunnableLambda, RunnableMap
 
    as_str = RunnableLambda(str)
    as_json = RunnableLambda(json.loads)
 
 
    def as_bytes(x: Any) -> bytes:
        return bytes(x, "utf-8")
 
 
    chain = RunnableMap(
        str=as_str, json=as_json, bytes=RunnableLambda(as_bytes)
    )
 
    chain.invoke("[1, 2, 3]")
    # -> {"str": "[1, 2, 3]", "json": [1, 2, 3], "bytes": b"[1, 2, 3]"}
 
    json_and_bytes_chain = chain.pick(["json", "bytes"])
    json_and_bytes_chain.invoke("[1, 2, 3]")
    # -> {"json": [1, 2, 3], "bytes": b"[1, 2, 3]"}
    ```
 
Args:
    keys: A key or list of keys to pick from the output dict.
 
Returns:
    a new `Runnable`.
pipe(self, *others: 'Runnable[Any, Other] | Callable[[Any], Other]', name: 'str | None' = None) -> 'RunnableSerializable[Input, Other]'
Pipe `Runnable` objects.
 
Compose this `Runnable` with `Runnable`-like objects to make a
`RunnableSequence`.
 
Equivalent to `RunnableSequence(self, *others)` or `self | others[0] | ...`
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
 
    def add_one(x: int) -> int:
        return x + 1
 
 
    def mul_two(x: int) -> int:
        return x * 2
 
 
    runnable_1 = RunnableLambda(add_one)
    runnable_2 = RunnableLambda(mul_two)
    sequence = runnable_1.pipe(runnable_2)
    # Or equivalently:
    # sequence = runnable_1 | runnable_2
    # sequence = RunnableSequence(first=runnable_1, last=runnable_2)
    sequence.invoke(1)
    await sequence.ainvoke(1)
    # -> 4
 
    sequence.batch([1, 2, 3])
    await sequence.abatch([1, 2, 3])
    # -> [4, 6, 8]
    ```
 
Args:
    *others: Other `Runnable` or `Runnable`-like objects to compose
    name: An optional name for the resulting `RunnableSequence`.
 
Returns:
    A new `Runnable`.
transform(self, input: 'Iterator[Input]', config: 'RunnableConfig | None' = None, **kwargs: 'Any | None') -> 'Iterator[Output]'
Transform inputs to outputs.
 
Default implementation of transform, which buffers input and calls `astream`.
 
Subclasses must override this method if they can start producing output while
input is still being generated.
 
Args:
    input: An iterator of inputs to the `Runnable`.
    config: The config to use for the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Yields:
    The output of the `Runnable`.
with_alisteners(self, *, on_start: 'AsyncListener | None' = None, on_end: 'AsyncListener | None' = None, on_error: 'AsyncListener | None' = None) -> 'Runnable[Input, Output]'
Bind async lifecycle listeners to a `Runnable`.
 
Returns a new `Runnable`.
 
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.
 
Args:
    on_start: Called asynchronously before the `Runnable` starts running,
        with the `Run` object.
    on_end: Called asynchronously after the `Runnable` finishes running,
        with the `Run` object.
    on_error: Called asynchronously if the `Runnable` throws an error,
        with the `Run` object.
 
Returns:
    A new `Runnable` with the listeners bound.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda, Runnable
    from datetime import datetime, timezone
    import time
    import asyncio
 
 
    def format_t(timestamp: float) -> str:
        return datetime.fromtimestamp(timestamp, tz=timezone.utc).isoformat()
 
 
    async def test_runnable(time_to_sleep: int):
        print(f"Runnable[{time_to_sleep}s]: starts at {format_t(time.time())}")
        await asyncio.sleep(time_to_sleep)
        print(f"Runnable[{time_to_sleep}s]: ends at {format_t(time.time())}")
 
 
    async def fn_start(run_obj: Runnable):
        print(f"on start callback starts at {format_t(time.time())}")
        await asyncio.sleep(3)
        print(f"on start callback ends at {format_t(time.time())}")
 
 
    async def fn_end(run_obj: Runnable):
        print(f"on end callback starts at {format_t(time.time())}")
        await asyncio.sleep(2)
        print(f"on end callback ends at {format_t(time.time())}")
 
 
    runnable = RunnableLambda(test_runnable).with_alisteners(
        on_start=fn_start, on_end=fn_end
    )
 
 
    async def concurrent_runs():
        await asyncio.gather(runnable.ainvoke(2), runnable.ainvoke(3))
 
 
    asyncio.run(concurrent_runs())
    # Result:
    # on start callback starts at 2025-03-01T07:05:22.875378+00:00
    # on start callback starts at 2025-03-01T07:05:22.875495+00:00
    # on start callback ends at 2025-03-01T07:05:25.878862+00:00
    # on start callback ends at 2025-03-01T07:05:25.878947+00:00
    # Runnable[2s]: starts at 2025-03-01T07:05:25.879392+00:00
    # Runnable[3s]: starts at 2025-03-01T07:05:25.879804+00:00
    # Runnable[2s]: ends at 2025-03-01T07:05:27.881998+00:00
    # on end callback starts at 2025-03-01T07:05:27.882360+00:00
    # Runnable[3s]: ends at 2025-03-01T07:05:28.881737+00:00
    # on end callback starts at 2025-03-01T07:05:28.882428+00:00
    # on end callback ends at 2025-03-01T07:05:29.883893+00:00
    # on end callback ends at 2025-03-01T07:05:30.884831+00:00
    ```
with_config(self, config: 'RunnableConfig | None' = None, **kwargs: 'Any') -> 'Runnable[Input, Output]'
Bind config to a `Runnable`, returning a new `Runnable`.
 
Args:
    config: The config to bind to the `Runnable`.
    **kwargs: Additional keyword arguments to pass to the `Runnable`.
 
Returns:
    A new `Runnable` with the config bound.
with_fallbacks(self, fallbacks: 'Sequence[Runnable[Input, Output]]', *, exceptions_to_handle: 'tuple[type[BaseException], ...]' = (<class 'Exception'>,), exception_key: 'str | None' = None) -> 'RunnableWithFallbacksT[Input, Output]'
Add fallbacks to a `Runnable`, returning a new `Runnable`.
 
The new `Runnable` will try the original `Runnable`, and then each fallback
in order, upon failures.
 
Args:
    fallbacks: A sequence of runnables to try if the original `Runnable`
        fails.
    exceptions_to_handle: A tuple of exception types to handle.
    exception_key: If `string` is specified then handled exceptions will be
        passed to fallbacks as part of the input under the specified key.
 
        If `None`, exceptions will not be passed to fallbacks.
 
        If used, the base `Runnable` and its fallbacks must accept a
        dictionary as input.
 
Returns:
    A new `Runnable` that will try the original `Runnable`, and then each
        Fallback in order, upon failures.
 
Example:
    ```python
    from typing import Iterator
 
    from langchain_core.runnables import RunnableGenerator
 
 
    def _generate_immediate_error(input: Iterator) -> Iterator[str]:
        raise ValueError()
        yield ""
 
 
    def _generate(input: Iterator) -> Iterator[str]:
        yield from "foo bar"
 
 
    runnable = RunnableGenerator(_generate_immediate_error).with_fallbacks(
        [RunnableGenerator(_generate)]
    )
    print("".join(runnable.stream({})))  # foo bar
    ```
 
Args:
    fallbacks: A sequence of runnables to try if the original `Runnable`
        fails.
    exceptions_to_handle: A tuple of exception types to handle.
    exception_key: If `string` is specified then handled exceptions will be
        passed to fallbacks as part of the input under the specified key.
 
        If `None`, exceptions will not be passed to fallbacks.
 
        If used, the base `Runnable` and its fallbacks must accept a
        dictionary as input.
 
Returns:
    A new `Runnable` that will try the original `Runnable`, and then each
        Fallback in order, upon failures.
with_listeners(self, *, on_start: 'Callable[[Run], None] | Callable[[Run, RunnableConfig], None] | None' = None, on_end: 'Callable[[Run], None] | Callable[[Run, RunnableConfig], None] | None' = None, on_error: 'Callable[[Run], None] | Callable[[Run, RunnableConfig], None] | None' = None) -> 'Runnable[Input, Output]'
Bind lifecycle listeners to a `Runnable`, returning a new `Runnable`.
 
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.
 
Args:
    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.
 
Returns:
    A new `Runnable` with the listeners bound.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
    from langchain_core.tracers.schemas import Run
 
    import time
 
 
    def test_runnable(time_to_sleep: int):
        time.sleep(time_to_sleep)
 
 
    def fn_start(run_obj: Run):
        print("start_time:", run_obj.start_time)
 
 
    def fn_end(run_obj: Run):
        print("end_time:", run_obj.end_time)
 
 
    chain = RunnableLambda(test_runnable).with_listeners(
        on_start=fn_start, on_end=fn_end
    )
    chain.invoke(2)
    ```
with_retry(self, *, retry_if_exception_type: 'tuple[type[BaseException], ...]' = (<class 'Exception'>,), wait_exponential_jitter: 'bool' = True, exponential_jitter_params: 'ExponentialJitterParams | None' = None, stop_after_attempt: 'int' = 3) -> 'Runnable[Input, Output]'
Create a new `Runnable` that retries the original `Runnable` on exceptions.
 
Args:
    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.
    exponential_jitter_params: Parameters for
        `tenacity.wait_exponential_jitter`. Namely: `initial`, `max`,
        `exp_base`, and `jitter` (all `float` values).
 
Returns:
    A new `Runnable` that retries the original `Runnable` on exceptions.
 
Example:
    ```python
    from langchain_core.runnables import RunnableLambda
 
    count = 0
 
 
    def _lambda(x: int) -> None:
        global count
        count = count + 1
        if x == 1:
            raise ValueError("x is 1")
        else:
            pass
 
 
    runnable = RunnableLambda(_lambda)
    try:
        runnable.with_retry(
            stop_after_attempt=2,
            retry_if_exception_type=(ValueError,),
        ).invoke(1)
    except ValueError:
        pass
 
    assert count == 2
    ```
with_types(self, *, input_type: 'type[Input] | None' = None, output_type: 'type[Output] | None' = None) -> 'Runnable[Input, Output]'
Bind input and output types to a `Runnable`, returning a new `Runnable`.
 
Args:
    input_type: The input type to bind to the `Runnable`.
    output_type: The output type to bind to the `Runnable`.
 
Returns:
    A new `Runnable` with the types bound.

Readonly properties inherited from langchain_core.runnables.base.Runnable:
config_specs
List configurable fields for this `Runnable`.
input_schema
The type of input this `Runnable` accepts specified as a Pydantic model.
output_schema
Output schema.
 
The type of output this `Runnable` produces specified as a Pydantic model.

Class methods inherited from typing.Generic:
__init_subclass__(*args, **kwargs) from pydantic._internal._model_construction.ModelMetaclass
This method is called when a class is subclassed.
 
The default implementation does nothing. It may be
overridden to extend subclasses.

 
Functions
       
init_chat_converse_model(proxy_client: gen_ai_hub.proxy.core.base.BaseProxyClient, deployment: gen_ai_hub.proxy.gen_ai_hub_proxy.client.Deployment, temperature: float = 0.0, max_tokens: int = 256, top_k: Optional[int] = None, top_p: float = 1.0, stop_sequences: List[str] = None, model_id: Optional[str] = '', config: Optional[botocore.config.Config] = None)
Initializes a chat model using the newer Bedrock Converse API (`ChatBedrockConverse`).
The Converse API offers several advantages over the older Invoke API:
 
- Unified interface for different models and modalities.
 
- Native support for tool use (function calling).
 
- Standardized request/response structure.
 
:param proxy_client: the proxy client to use
:type proxy_client: BaseProxyClient
:param deployment: the deployment information
:type deployment: Deployment
:param temperature: the temperature for the model, defaults to 0.0
:type temperature: float, optional
:param max_tokens: the maximum number of tokens to generate, defaults to 256
:type max_tokens: int, optional
:param top_k: the top-k sampling parameter, defaults to None
:type top_k: Optional[int], optional
:param top_p: the top-p sampling parameter, defaults to 1.0
:type top_p: float, optional
:param stop_sequences: the stop sequences for the model, defaults to None
:type stop_sequences: List[str], optional
:param model_id: the model identifier, defaults to ''
:type model_id: Optional[str], optional
:param config: the botocore configuration, defaults to None
:type config: Optional[Config], optional
:return: the initialized chat model
:rtype: ChatBedrockConverse
init_chat_model(proxy_client: gen_ai_hub.proxy.core.base.BaseProxyClient, deployment: gen_ai_hub.proxy.gen_ai_hub_proxy.client.Deployment, temperature: float = 0.0, max_tokens: int = 256, top_k: Optional[int] = None, top_p: float = 1.0, stop_sequences: List[str] = None, model_id: Optional[str] = '', config: Optional[botocore.config.Config] = None)
Initializes a chat model using the legacy Bedrock Invoke API (`ChatBedrock`).
 
:param proxy_client: the proxy client to use
:type proxy_client: BaseProxyClient
:param deployment: the deployment information
:type deployment: Deployment
:param temperature: the temperature for the model, defaults to 0.0
:type temperature: float, optional
:param max_tokens: the maximum number of tokens to generate, defaults to 256
:type max_tokens: int, optional
:param top_k: the top-k sampling parameter, defaults to None
:type top_k: Optional[int], optional
:param top_p: the top-p sampling parameter, defaults to 1.0
:type top_p: float, optional
:param stop_sequences: the stop sequences for the model, defaults to None
:type stop_sequences: List[str], optional
:param model_id: the model identifier, defaults to ''
:type model_id: Optional[str], optional
:param config: the botocore configuration, defaults to None
:type config: Optional[Config], optional
:return: the initialized chat model
:rtype: ChatBedrock
init_embedding_model(proxy_client: gen_ai_hub.proxy.core.base.BaseProxyClient, deployment: gen_ai_hub.proxy.gen_ai_hub_proxy.client.Deployment, model_id: Optional[str] = '')
Initializes an embedding model using BedrockEmbeddings.
 
:param proxy_client: the proxy client to use
:type proxy_client: BaseProxyClient
:param deployment: the deployment information
:type deployment: Deployment
:param model_id: the model identifier, defaults to ''
:type model_id: Optional[str], optional
:return: the initialized embedding model
:rtype: BedrockEmbeddings

 
Data
        Any = typing.Any
Dict = typing.Dict
List = typing.List
MODEL_NAME_TO_MODEL_ID_MAP = {'amazon--nova-lite': 'amazon.nova-lite-v1:0', 'amazon--nova-micro': 'amazon.nova-micro-v1:0', 'amazon--nova-premier': 'amazon.nova-premier-v1:0', 'amazon--nova-pro': 'amazon.nova-pro-v1:0', 'amazon--titan-embed-image': 'amazon.titan-embed-image-v1', 'amazon--titan-embed-text': 'amazon.titan-embed-text-v1', 'anthropic--claude-3-haiku': 'anthropic.claude-3-haiku-20240307-v1:0', 'anthropic--claude-3.5-sonnet': 'anthropic.claude-3-5-sonnet-20240620-v1:0', 'anthropic--claude-3.7-sonnet': 'anthropic.claude-3-7-sonnet-20250219-v1:0', 'anthropic--claude-4-opus': 'anthropic.claude-4-opus-20250514-v1:0', ...}
Optional = typing.Optional
catalog = <gen_ai_hub.proxy.langchain.init_models.Catalog object>