return root_type
        return create_model(
            self.__class__.__name__ + "Output", __root__=(root_type, None)
        )
    @property
    def config_specs(self) -> List[ConfigurableFieldSpec]:
        """List configurable fields for this runnable."""
        return []
[docs]    def config_schema(
        self, *, include: Optional[Sequence[str]] = None
    ) -> Type[BaseModel]:
        """The type of config this runnable accepts specified as a pydantic model.
        To mark a field as configurable, see the `configurable_fields`
        and `configurable_alternatives` methods.
        Args:
            include: A list of fields to include in the config schema.
        Returns:
            A pydantic model that can be used to validate config.
        """
        class _Config:
            arbitrary_types_allowed = True
        include = include or []
        config_specs = self.config_specs
        configurable = (
            create_model(  # type: ignore[call-overload]
                "Configurable",
                **{
                    spec.id: (
                        spec.annotation,
                        Field(
                            spec.default, title=spec.name, description=spec.description
                        ),
                    )
                    for spec in config_specs
                },
            )
            if config_specs
            else None
        )
        return create_model(  # type: ignore[call-overload]
            self.__class__.__name__ + "Config",
            __config__=_Config,
            **({"configurable": (configurable, None)} if configurable else {}),
            **{
                field_name: (field_type, None)
                for field_name, field_type in RunnableConfig.__annotations__.items()