From 4555ad5d1fe8c407b3edad645427a13962e91108 Mon Sep 17 00:00:00 2001 From: Zander Chase <130414180+vowelparrot@users.noreply.github.com> Date: Tue, 13 Jun 2023 22:17:37 -0700 Subject: [PATCH] Add Run Collector Callback (#6133) Add a callback handler that can collect nested run objects. Useful for evaluation. --- langchain/callbacks/tracers/run_collector.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 langchain/callbacks/tracers/run_collector.py diff --git a/langchain/callbacks/tracers/run_collector.py b/langchain/callbacks/tracers/run_collector.py new file mode 100644 index 0000000000..68fb423a8b --- /dev/null +++ b/langchain/callbacks/tracers/run_collector.py @@ -0,0 +1,20 @@ +"""A tracer that collects all nested runs in a list.""" +from typing import Any, List + +from langchain.callbacks.tracers.base import BaseTracer +from langchain.callbacks.tracers.schemas import Run + + +class RunStackCallbackHandler(BaseTracer): + """A tracer that collects all nested runs in a list. + + Useful for inspection and for evaluation.""" + + name = "run-collector_callback_handler" + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + self.traced_runs: List[Run] = [] + + def _persist_run(self, run: Run) -> None: + self.traced_runs.append(run)