__init__() — langchain Function Reference
Architecture documentation for the __init__() function in history.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 9880a1b1_9b78_5789_4483_510fb1ad8de7["__init__()"] f9cb8198_4568_d401_f003_82c579cfa18f["RunnableWithMessageHistory"] 9880a1b1_9b78_5789_4483_510fb1ad8de7 -->|defined in| f9cb8198_4568_d401_f003_82c579cfa18f style 9880a1b1_9b78_5789_4483_510fb1ad8de7 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/core/langchain_core/runnables/history.py lines 249–373
def __init__(
self,
runnable: Runnable[
list[BaseMessage], str | BaseMessage | MessagesOrDictWithMessages
]
| Runnable[dict[str, Any], str | BaseMessage | MessagesOrDictWithMessages]
| LanguageModelLike,
get_session_history: GetSessionHistoryCallable,
*,
input_messages_key: str | None = None,
output_messages_key: str | None = None,
history_messages_key: str | None = None,
history_factory_config: Sequence[ConfigurableFieldSpec] | None = None,
**kwargs: Any,
) -> None:
"""Initialize `RunnableWithMessageHistory`.
Args:
runnable: The base `Runnable` to be wrapped.
Must take as input one of:
1. A list of `BaseMessage`
2. A `dict` with one key for all messages
3. A `dict` with one key for the current input string/message(s) and
a separate key for historical messages. If the input key points
to a string, it will be treated as a `HumanMessage` in history.
Must return as output one of:
1. A string which can be treated as an `AIMessage`
2. A `BaseMessage` or sequence of `BaseMessage`
3. A `dict` with a key for a `BaseMessage` or sequence of
`BaseMessage`
get_session_history: Function that returns a new `BaseChatMessageHistory`.
This function should either take a single positional argument
`session_id` of type string and return a corresponding
chat message history instance.
```python
def get_session_history(
session_id: str, *, user_id: str | None = None
) -> BaseChatMessageHistory: ...
```
Or it should take keyword arguments that match the keys of
`session_history_config_specs` and return a corresponding
chat message history instance.
```python
def get_session_history(
*,
user_id: str,
thread_id: str,
) -> BaseChatMessageHistory: ...
```
input_messages_key: Must be specified if the base runnable accepts a `dict`
as input.
output_messages_key: Must be specified if the base runnable returns a `dict`
as output.
history_messages_key: Must be specified if the base runnable accepts a
`dict` as input and expects a separate key for historical messages.
history_factory_config: Configure fields that should be passed to the
chat history factory. See `ConfigurableFieldSpec` for more details.
Specifying these allows you to pass multiple config keys into the
`get_session_history` factory.
**kwargs: Arbitrary additional kwargs to pass to parent class
`RunnableBindingBase` init.
"""
history_chain: Runnable[Any, Any] = RunnableLambda(
self._enter_history, self._aenter_history
).with_config(run_name="load_history")
messages_key = history_messages_key or input_messages_key
if messages_key:
history_chain = RunnablePassthrough.assign(
**{messages_key: history_chain}
Domain
Subdomains
Source
Frequently Asked Questions
What does __init__() do?
__init__() is a function in the langchain codebase, defined in libs/core/langchain_core/runnables/history.py.
Where is __init__() defined?
__init__() is defined in libs/core/langchain_core/runnables/history.py at line 249.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free