mirror of
https://github.com/hwchase17/langchain.git
synced 2025-06-26 08:33:49 +00:00
core: tracer: remove numeric execution order (#21220)
- this hasn't been used in a long time and requires some additional bookkeeping i'm going to streamline in the next pr
This commit is contained in:
parent
6ac6158a07
commit
47ce8d5a57
@ -2010,6 +2010,10 @@ def _configure(
|
|||||||
if run_tree is not None:
|
if run_tree is not None:
|
||||||
for handler in callback_manager.handlers:
|
for handler in callback_manager.handlers:
|
||||||
if isinstance(handler, LangChainTracer):
|
if isinstance(handler, LangChainTracer):
|
||||||
|
handler.order_map[run_tree.id] = (
|
||||||
|
run_tree.trace_id,
|
||||||
|
run_tree.dotted_order,
|
||||||
|
)
|
||||||
handler.run_map[str(run_tree.id)] = cast(Run, run_tree)
|
handler.run_map[str(run_tree.id)] = cast(Run, run_tree)
|
||||||
for var, inheritable, handler_class, env_var in _configure_hooks:
|
for var, inheritable, handler_class, env_var in _configure_hooks:
|
||||||
create_one = (
|
create_one = (
|
||||||
|
@ -16,6 +16,7 @@ from typing import (
|
|||||||
Optional,
|
Optional,
|
||||||
Sequence,
|
Sequence,
|
||||||
Set,
|
Set,
|
||||||
|
Tuple,
|
||||||
Union,
|
Union,
|
||||||
cast,
|
cast,
|
||||||
)
|
)
|
||||||
@ -68,6 +69,9 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
self._schema_format = _schema_format # For internal use only API will change.
|
self._schema_format = _schema_format # For internal use only API will change.
|
||||||
self.run_map: Dict[str, Run] = {}
|
self.run_map: Dict[str, Run] = {}
|
||||||
|
"""Map of run ID to run. Cleared on run end."""
|
||||||
|
self.order_map: Dict[UUID, Tuple[UUID, str]] = {}
|
||||||
|
"""Map of run ID to (trace_id, dotted_order). Cleared when tracer GCed."""
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _add_child_run(
|
def _add_child_run(
|
||||||
@ -100,30 +104,23 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
"""Start a trace for a run."""
|
"""Start a trace for a run."""
|
||||||
current_dotted_order = run.start_time.strftime("%Y%m%dT%H%M%S%fZ") + str(run.id)
|
current_dotted_order = run.start_time.strftime("%Y%m%dT%H%M%S%fZ") + str(run.id)
|
||||||
if run.parent_run_id:
|
if run.parent_run_id:
|
||||||
parent_run = self.run_map.get(str(run.parent_run_id))
|
if parent := self.order_map.get(run.parent_run_id):
|
||||||
if parent_run:
|
run.trace_id, run.dotted_order = parent
|
||||||
self._add_child_run(parent_run, run)
|
run.dotted_order += "." + current_dotted_order
|
||||||
if hasattr(parent_run, "child_execution_order"):
|
if parent_run := self.run_map.get(str(run.parent_run_id)):
|
||||||
parent_run.child_execution_order = max(
|
self._add_child_run(parent_run, run)
|
||||||
parent_run.child_execution_order, run.child_execution_order
|
|
||||||
)
|
|
||||||
run.trace_id = parent_run.trace_id
|
|
||||||
if parent_run.dotted_order:
|
|
||||||
run.dotted_order = (
|
|
||||||
parent_run.dotted_order + "." + current_dotted_order
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
# Something wrong with tracer parent run has no dotted_order
|
|
||||||
logger.debug(
|
|
||||||
f"Parent run with UUID {run.parent_run_id} has no dotted_order."
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
# Something wrong with tracer, parent run not found
|
logger.warning(
|
||||||
# Calculate the trace_id and dotted_order server side
|
f"Parent run {run.parent_run_id} not found for run {run.id}."
|
||||||
logger.debug(f"Parent run with UUID {run.parent_run_id} not found.")
|
" Treating as a root run."
|
||||||
|
)
|
||||||
|
run.parent_run_id = None
|
||||||
|
run.trace_id = run.id
|
||||||
|
run.dotted_order = current_dotted_order
|
||||||
else:
|
else:
|
||||||
run.trace_id = run.id
|
run.trace_id = run.id
|
||||||
run.dotted_order = current_dotted_order
|
run.dotted_order = current_dotted_order
|
||||||
|
self.order_map[run.id] = (run.trace_id, run.dotted_order)
|
||||||
self.run_map[str(run.id)] = run
|
self.run_map[str(run.id)] = run
|
||||||
self._on_run_create(run)
|
self._on_run_create(run)
|
||||||
|
|
||||||
@ -131,36 +128,9 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
"""End a trace for a run."""
|
"""End a trace for a run."""
|
||||||
if not run.parent_run_id:
|
if not run.parent_run_id:
|
||||||
self._persist_run(run)
|
self._persist_run(run)
|
||||||
else:
|
|
||||||
parent_run = self.run_map.get(str(run.parent_run_id))
|
|
||||||
if parent_run is None:
|
|
||||||
logger.debug(f"Parent run with UUID {run.parent_run_id} not found.")
|
|
||||||
elif (
|
|
||||||
run.child_execution_order is not None
|
|
||||||
and getattr(parent_run, "child_execution_order", None) is not None
|
|
||||||
and run.child_execution_order > parent_run.child_execution_order
|
|
||||||
):
|
|
||||||
parent_run.child_execution_order = run.child_execution_order
|
|
||||||
self.run_map.pop(str(run.id))
|
self.run_map.pop(str(run.id))
|
||||||
self._on_run_update(run)
|
self._on_run_update(run)
|
||||||
|
|
||||||
def _get_execution_order(self, parent_run_id: Optional[str] = None) -> int:
|
|
||||||
"""Get the execution order for a run."""
|
|
||||||
if parent_run_id is None:
|
|
||||||
return 1
|
|
||||||
|
|
||||||
parent_run = self.run_map.get(parent_run_id)
|
|
||||||
if parent_run is None:
|
|
||||||
logger.debug(f"Parent run with UUID {parent_run_id} not found.")
|
|
||||||
return 1
|
|
||||||
if getattr(parent_run, "child_execution_order", None) is None:
|
|
||||||
logger.debug(
|
|
||||||
f"Parent run with UUID {parent_run_id} has no child_execution_order."
|
|
||||||
)
|
|
||||||
return 1
|
|
||||||
|
|
||||||
return parent_run.child_execution_order + 1
|
|
||||||
|
|
||||||
def _get_run(
|
def _get_run(
|
||||||
self, run_id: UUID, run_type: Union[str, Set[str], None] = None
|
self, run_id: UUID, run_type: Union[str, Set[str], None] = None
|
||||||
) -> Run:
|
) -> Run:
|
||||||
@ -205,8 +175,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
f"Chat model tracing is not supported in "
|
f"Chat model tracing is not supported in "
|
||||||
f"for {self._schema_format} format."
|
f"for {self._schema_format} format."
|
||||||
)
|
)
|
||||||
parent_run_id_ = str(parent_run_id) if parent_run_id else None
|
|
||||||
execution_order = self._get_execution_order(parent_run_id_)
|
|
||||||
start_time = datetime.now(timezone.utc)
|
start_time = datetime.now(timezone.utc)
|
||||||
if metadata:
|
if metadata:
|
||||||
kwargs.update({"metadata": metadata})
|
kwargs.update({"metadata": metadata})
|
||||||
@ -218,8 +186,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
extra=kwargs,
|
extra=kwargs,
|
||||||
events=[{"name": "start", "time": start_time}],
|
events=[{"name": "start", "time": start_time}],
|
||||||
start_time=start_time,
|
start_time=start_time,
|
||||||
execution_order=execution_order,
|
|
||||||
child_execution_order=execution_order,
|
|
||||||
# WARNING: This is valid ONLY for streaming_events.
|
# WARNING: This is valid ONLY for streaming_events.
|
||||||
# run_type="llm" is what's used by virtually all tracers.
|
# run_type="llm" is what's used by virtually all tracers.
|
||||||
# Changing this to "chat_model" may break triggering on_llm_start
|
# Changing this to "chat_model" may break triggering on_llm_start
|
||||||
@ -244,8 +210,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> Run:
|
) -> Run:
|
||||||
"""Start a trace for an LLM run."""
|
"""Start a trace for an LLM run."""
|
||||||
parent_run_id_ = str(parent_run_id) if parent_run_id else None
|
|
||||||
execution_order = self._get_execution_order(parent_run_id_)
|
|
||||||
start_time = datetime.now(timezone.utc)
|
start_time = datetime.now(timezone.utc)
|
||||||
if metadata:
|
if metadata:
|
||||||
kwargs.update({"metadata": metadata})
|
kwargs.update({"metadata": metadata})
|
||||||
@ -258,8 +222,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
extra=kwargs,
|
extra=kwargs,
|
||||||
events=[{"name": "start", "time": start_time}],
|
events=[{"name": "start", "time": start_time}],
|
||||||
start_time=start_time,
|
start_time=start_time,
|
||||||
execution_order=execution_order,
|
|
||||||
child_execution_order=execution_order,
|
|
||||||
run_type="llm",
|
run_type="llm",
|
||||||
tags=tags or [],
|
tags=tags or [],
|
||||||
name=name, # type: ignore[arg-type]
|
name=name, # type: ignore[arg-type]
|
||||||
@ -376,8 +338,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> Run:
|
) -> Run:
|
||||||
"""Start a trace for a chain run."""
|
"""Start a trace for a chain run."""
|
||||||
parent_run_id_ = str(parent_run_id) if parent_run_id else None
|
|
||||||
execution_order = self._get_execution_order(parent_run_id_)
|
|
||||||
start_time = datetime.now(timezone.utc)
|
start_time = datetime.now(timezone.utc)
|
||||||
if metadata:
|
if metadata:
|
||||||
kwargs.update({"metadata": metadata})
|
kwargs.update({"metadata": metadata})
|
||||||
@ -389,8 +349,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
extra=kwargs,
|
extra=kwargs,
|
||||||
events=[{"name": "start", "time": start_time}],
|
events=[{"name": "start", "time": start_time}],
|
||||||
start_time=start_time,
|
start_time=start_time,
|
||||||
execution_order=execution_order,
|
|
||||||
child_execution_order=execution_order,
|
|
||||||
child_runs=[],
|
child_runs=[],
|
||||||
run_type=run_type or "chain",
|
run_type=run_type or "chain",
|
||||||
name=name, # type: ignore[arg-type]
|
name=name, # type: ignore[arg-type]
|
||||||
@ -474,8 +432,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> Run:
|
) -> Run:
|
||||||
"""Start a trace for a tool run."""
|
"""Start a trace for a tool run."""
|
||||||
parent_run_id_ = str(parent_run_id) if parent_run_id else None
|
|
||||||
execution_order = self._get_execution_order(parent_run_id_)
|
|
||||||
start_time = datetime.now(timezone.utc)
|
start_time = datetime.now(timezone.utc)
|
||||||
if metadata:
|
if metadata:
|
||||||
kwargs.update({"metadata": metadata})
|
kwargs.update({"metadata": metadata})
|
||||||
@ -496,8 +452,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
extra=kwargs,
|
extra=kwargs,
|
||||||
events=[{"name": "start", "time": start_time}],
|
events=[{"name": "start", "time": start_time}],
|
||||||
start_time=start_time,
|
start_time=start_time,
|
||||||
execution_order=execution_order,
|
|
||||||
child_execution_order=execution_order,
|
|
||||||
child_runs=[],
|
child_runs=[],
|
||||||
run_type="tool",
|
run_type="tool",
|
||||||
tags=tags or [],
|
tags=tags or [],
|
||||||
@ -546,8 +500,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> Run:
|
) -> Run:
|
||||||
"""Run when Retriever starts running."""
|
"""Run when Retriever starts running."""
|
||||||
parent_run_id_ = str(parent_run_id) if parent_run_id else None
|
|
||||||
execution_order = self._get_execution_order(parent_run_id_)
|
|
||||||
start_time = datetime.now(timezone.utc)
|
start_time = datetime.now(timezone.utc)
|
||||||
if metadata:
|
if metadata:
|
||||||
kwargs.update({"metadata": metadata})
|
kwargs.update({"metadata": metadata})
|
||||||
@ -560,8 +512,6 @@ class BaseTracer(BaseCallbackHandler, ABC):
|
|||||||
extra=kwargs,
|
extra=kwargs,
|
||||||
events=[{"name": "start", "time": start_time}],
|
events=[{"name": "start", "time": start_time}],
|
||||||
start_time=start_time,
|
start_time=start_time,
|
||||||
execution_order=execution_order,
|
|
||||||
child_execution_order=execution_order,
|
|
||||||
tags=tags,
|
tags=tags,
|
||||||
child_runs=[],
|
child_runs=[],
|
||||||
run_type="retriever",
|
run_type="retriever",
|
||||||
|
@ -105,8 +105,6 @@ class LangChainTracer(BaseTracer):
|
|||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> Run:
|
) -> Run:
|
||||||
"""Start a trace for an LLM run."""
|
"""Start a trace for an LLM run."""
|
||||||
parent_run_id_ = str(parent_run_id) if parent_run_id else None
|
|
||||||
execution_order = self._get_execution_order(parent_run_id_)
|
|
||||||
start_time = datetime.now(timezone.utc)
|
start_time = datetime.now(timezone.utc)
|
||||||
if metadata:
|
if metadata:
|
||||||
kwargs.update({"metadata": metadata})
|
kwargs.update({"metadata": metadata})
|
||||||
@ -118,8 +116,6 @@ class LangChainTracer(BaseTracer):
|
|||||||
extra=kwargs,
|
extra=kwargs,
|
||||||
events=[{"name": "start", "time": start_time}],
|
events=[{"name": "start", "time": start_time}],
|
||||||
start_time=start_time,
|
start_time=start_time,
|
||||||
execution_order=execution_order,
|
|
||||||
child_execution_order=execution_order,
|
|
||||||
run_type="llm",
|
run_type="llm",
|
||||||
tags=tags,
|
tags=tags,
|
||||||
name=name, # type: ignore[arg-type]
|
name=name, # type: ignore[arg-type]
|
||||||
|
@ -113,8 +113,6 @@ class ToolRun(BaseRun):
|
|||||||
class Run(BaseRunV2):
|
class Run(BaseRunV2):
|
||||||
"""Run schema for the V2 API in the Tracer."""
|
"""Run schema for the V2 API in the Tracer."""
|
||||||
|
|
||||||
execution_order: int
|
|
||||||
child_execution_order: int
|
|
||||||
child_runs: List[Run] = Field(default_factory=list)
|
child_runs: List[Run] = Field(default_factory=list)
|
||||||
tags: Optional[List[str]] = Field(default_factory=list)
|
tags: Optional[List[str]] = Field(default_factory=list)
|
||||||
events: List[Dict[str, Any]] = Field(default_factory=list)
|
events: List[Dict[str, Any]] = Field(default_factory=list)
|
||||||
|
@ -68,9 +68,9 @@ class FunctionCallbackHandler(BaseTracer):
|
|||||||
def get_breadcrumbs(self, run: Run) -> str:
|
def get_breadcrumbs(self, run: Run) -> str:
|
||||||
parents = self.get_parents(run)[::-1]
|
parents = self.get_parents(run)[::-1]
|
||||||
string = " > ".join(
|
string = " > ".join(
|
||||||
f"{parent.execution_order}:{parent.run_type}:{parent.name}"
|
f"{parent.run_type}:{parent.name}"
|
||||||
if i != len(parents) - 1
|
if i != len(parents) - 1
|
||||||
else f"{parent.execution_order}:{parent.run_type}:{parent.name}"
|
else f"{parent.run_type}:{parent.name}"
|
||||||
for i, parent in enumerate(parents + [run])
|
for i, parent in enumerate(parents + [run])
|
||||||
)
|
)
|
||||||
return string
|
return string
|
||||||
|
File diff suppressed because one or more lines are too long
@ -134,8 +134,6 @@ class FakeTracer(BaseTracer):
|
|||||||
self.uuids_map[run.parent_run_id] if run.parent_run_id else None
|
self.uuids_map[run.parent_run_id] if run.parent_run_id else None
|
||||||
),
|
),
|
||||||
"child_runs": [self._copy_run(child) for child in run.child_runs],
|
"child_runs": [self._copy_run(child) for child in run.child_runs],
|
||||||
"execution_order": None,
|
|
||||||
"child_execution_order": None,
|
|
||||||
"trace_id": self._replace_uuid(run.trace_id) if run.trace_id else None,
|
"trace_id": self._replace_uuid(run.trace_id) if run.trace_id else None,
|
||||||
"dotted_order": new_dotted_order,
|
"dotted_order": new_dotted_order,
|
||||||
"inputs": (
|
"inputs": (
|
||||||
|
@ -68,8 +68,6 @@ def test_tracer_llm_run() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=1,
|
|
||||||
serialized=SERIALIZED,
|
serialized=SERIALIZED,
|
||||||
inputs={"prompts": []},
|
inputs={"prompts": []},
|
||||||
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
||||||
@ -103,8 +101,6 @@ def test_tracer_chat_model_run() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=1,
|
|
||||||
serialized=SERIALIZED_CHAT,
|
serialized=SERIALIZED_CHAT,
|
||||||
inputs=dict(prompts=["Human: "]),
|
inputs=dict(prompts=["Human: "]),
|
||||||
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
||||||
@ -141,8 +137,6 @@ def test_tracer_multiple_llm_runs() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=1,
|
|
||||||
serialized=SERIALIZED,
|
serialized=SERIALIZED,
|
||||||
inputs=dict(prompts=[]),
|
inputs=dict(prompts=[]),
|
||||||
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
||||||
@ -174,8 +168,6 @@ def test_tracer_chain_run() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=1,
|
|
||||||
serialized={"name": "chain"},
|
serialized={"name": "chain"},
|
||||||
inputs={},
|
inputs={},
|
||||||
outputs={},
|
outputs={},
|
||||||
@ -204,8 +196,6 @@ def test_tracer_tool_run() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=1,
|
|
||||||
serialized={"name": "tool"},
|
serialized={"name": "tool"},
|
||||||
inputs={"input": "test"},
|
inputs={"input": "test"},
|
||||||
outputs={"output": "test"},
|
outputs={"output": "test"},
|
||||||
@ -266,8 +256,6 @@ def test_tracer_nested_run() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=4,
|
|
||||||
serialized={"name": "chain"},
|
serialized={"name": "chain"},
|
||||||
inputs={},
|
inputs={},
|
||||||
outputs={},
|
outputs={},
|
||||||
@ -285,8 +273,6 @@ def test_tracer_nested_run() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=2,
|
|
||||||
child_execution_order=3,
|
|
||||||
serialized={"name": "tool"},
|
serialized={"name": "tool"},
|
||||||
inputs=dict(input="test"),
|
inputs=dict(input="test"),
|
||||||
outputs=dict(output="test"),
|
outputs=dict(output="test"),
|
||||||
@ -306,8 +292,6 @@ def test_tracer_nested_run() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=3,
|
|
||||||
child_execution_order=3,
|
|
||||||
serialized=SERIALIZED,
|
serialized=SERIALIZED,
|
||||||
inputs=dict(prompts=[]),
|
inputs=dict(prompts=[]),
|
||||||
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
||||||
@ -328,8 +312,6 @@ def test_tracer_nested_run() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=4,
|
|
||||||
child_execution_order=4,
|
|
||||||
serialized=SERIALIZED,
|
serialized=SERIALIZED,
|
||||||
inputs=dict(prompts=[]),
|
inputs=dict(prompts=[]),
|
||||||
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
outputs=LLMResult(generations=[[]]), # type: ignore[arg-type]
|
||||||
@ -358,8 +340,6 @@ def test_tracer_llm_run_on_error() -> None:
|
|||||||
{"name": "error", "time": datetime.now(timezone.utc)},
|
{"name": "error", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=1,
|
|
||||||
serialized=SERIALIZED,
|
serialized=SERIALIZED,
|
||||||
inputs=dict(prompts=[]),
|
inputs=dict(prompts=[]),
|
||||||
outputs=None,
|
outputs=None,
|
||||||
@ -391,8 +371,6 @@ def test_tracer_llm_run_on_error_callback() -> None:
|
|||||||
{"name": "error", "time": datetime.now(timezone.utc)},
|
{"name": "error", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=1,
|
|
||||||
serialized=SERIALIZED,
|
serialized=SERIALIZED,
|
||||||
inputs=dict(prompts=[]),
|
inputs=dict(prompts=[]),
|
||||||
outputs=None,
|
outputs=None,
|
||||||
@ -429,8 +407,6 @@ def test_tracer_chain_run_on_error() -> None:
|
|||||||
{"name": "error", "time": datetime.now(timezone.utc)},
|
{"name": "error", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=1,
|
|
||||||
serialized={"name": "chain"},
|
serialized={"name": "chain"},
|
||||||
inputs={},
|
inputs={},
|
||||||
outputs=None,
|
outputs=None,
|
||||||
@ -461,8 +437,6 @@ def test_tracer_tool_run_on_error() -> None:
|
|||||||
{"name": "error", "time": datetime.now(timezone.utc)},
|
{"name": "error", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=1,
|
|
||||||
serialized={"name": "tool"},
|
serialized={"name": "tool"},
|
||||||
inputs=dict(input="test"),
|
inputs=dict(input="test"),
|
||||||
outputs=None,
|
outputs=None,
|
||||||
@ -534,8 +508,6 @@ def test_tracer_nested_runs_on_error() -> None:
|
|||||||
{"name": "error", "time": datetime.now(timezone.utc)},
|
{"name": "error", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=1,
|
|
||||||
child_execution_order=5,
|
|
||||||
serialized={"name": "chain"},
|
serialized={"name": "chain"},
|
||||||
error=repr(exception),
|
error=repr(exception),
|
||||||
inputs={},
|
inputs={},
|
||||||
@ -554,8 +526,6 @@ def test_tracer_nested_runs_on_error() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=2,
|
|
||||||
child_execution_order=2,
|
|
||||||
serialized=SERIALIZED,
|
serialized=SERIALIZED,
|
||||||
error=None,
|
error=None,
|
||||||
inputs=dict(prompts=[]),
|
inputs=dict(prompts=[]),
|
||||||
@ -574,8 +544,6 @@ def test_tracer_nested_runs_on_error() -> None:
|
|||||||
{"name": "end", "time": datetime.now(timezone.utc)},
|
{"name": "end", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=3,
|
|
||||||
child_execution_order=3,
|
|
||||||
serialized=SERIALIZED,
|
serialized=SERIALIZED,
|
||||||
error=None,
|
error=None,
|
||||||
inputs=dict(prompts=[]),
|
inputs=dict(prompts=[]),
|
||||||
@ -594,8 +562,6 @@ def test_tracer_nested_runs_on_error() -> None:
|
|||||||
{"name": "error", "time": datetime.now(timezone.utc)},
|
{"name": "error", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=4,
|
|
||||||
child_execution_order=5,
|
|
||||||
serialized={"name": "tool"},
|
serialized={"name": "tool"},
|
||||||
error=repr(exception),
|
error=repr(exception),
|
||||||
inputs=dict(input="test"),
|
inputs=dict(input="test"),
|
||||||
@ -614,8 +580,6 @@ def test_tracer_nested_runs_on_error() -> None:
|
|||||||
{"name": "error", "time": datetime.now(timezone.utc)},
|
{"name": "error", "time": datetime.now(timezone.utc)},
|
||||||
],
|
],
|
||||||
extra={},
|
extra={},
|
||||||
execution_order=5,
|
|
||||||
child_execution_order=5,
|
|
||||||
serialized=SERIALIZED,
|
serialized=SERIALIZED,
|
||||||
error=repr(exception),
|
error=repr(exception),
|
||||||
inputs=dict(prompts=[]),
|
inputs=dict(prompts=[]),
|
||||||
|
@ -67,6 +67,7 @@ def test_tracer_with_run_tree_parent() -> None:
|
|||||||
parent = RunTree(name="parent", inputs={"input": "foo"}, client=client)
|
parent = RunTree(name="parent", inputs={"input": "foo"}, client=client)
|
||||||
run_id = uuid.uuid4()
|
run_id = uuid.uuid4()
|
||||||
tracer = LangChainTracer(client=client)
|
tracer = LangChainTracer(client=client)
|
||||||
|
tracer.order_map[parent.id] = (parent.trace_id, parent.dotted_order)
|
||||||
tracer.run_map[str(parent.id)] = parent # type: ignore
|
tracer.run_map[str(parent.id)] = parent # type: ignore
|
||||||
tracer.on_chain_start(
|
tracer.on_chain_start(
|
||||||
{"name": "child"}, {"input": "bar"}, run_id=run_id, parent_run_id=parent.id
|
{"name": "child"}, {"input": "bar"}, run_id=run_id, parent_run_id=parent.id
|
||||||
|
Loading…
Reference in New Issue
Block a user