You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
langchain/libs/core/tests/unit_tests/runnables/test_config.py

35 lines
1.4 KiB
Python

from langchain_core.callbacks.manager import CallbackManager
from langchain_core.callbacks.stdout import StdOutCallbackHandler
from langchain_core.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
from langchain_core.runnables.config import RunnableConfig, merge_configs
from langchain_core.tracers.stdout import ConsoleCallbackHandler
def test_merge_config_callbacks() -> None:
manager: RunnableConfig = {
"callbacks": CallbackManager(handlers=[StdOutCallbackHandler()])
}
handlers: RunnableConfig = {"callbacks": [ConsoleCallbackHandler()]}
other_handlers: RunnableConfig = {"callbacks": [StreamingStdOutCallbackHandler()]}
merged = merge_configs(manager, handlers)["callbacks"]
assert isinstance(merged, CallbackManager)
assert len(merged.handlers) == 2
assert isinstance(merged.handlers[0], StdOutCallbackHandler)
assert isinstance(merged.handlers[1], ConsoleCallbackHandler)
merged = merge_configs(handlers, manager)["callbacks"]
assert isinstance(merged, CallbackManager)
assert len(merged.handlers) == 2
assert isinstance(merged.handlers[0], StdOutCallbackHandler)
assert isinstance(merged.handlers[1], ConsoleCallbackHandler)
merged = merge_configs(handlers, other_handlers)["callbacks"]
assert isinstance(merged, list)
assert len(merged) == 2
assert isinstance(merged[0], ConsoleCallbackHandler)
assert isinstance(merged[1], StreamingStdOutCallbackHandler)