mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-02 03:26:17 +00:00
Calculate trace_id and dotted_order client side (#15351)
<!-- Thank you for contributing to LangChain! Please title your PR "<package>: <description>", where <package> is whichever of langchain, community, core, experimental, etc. is being modified. Replace this entire comment with: - **Description:** a description of the change, - **Issue:** the issue # it fixes if applicable, - **Dependencies:** any dependencies required for this change, - **Twitter handle:** we announce bigger features on Twitter. If your PR gets announced, and you'd like a mention, we'll gladly shout you out! Please make sure your PR is passing linting and testing before submitting. Run `make format`, `make lint` and `make test` from the root of the package you've modified to check this locally. See contribution guidelines for more information on how to write/run tests, lint, etc: https://python.langchain.com/docs/contributing/ If you're adding a new integration, please include: 1. a test for the integration, preferably unit tests that do not rely on network access, 2. an example notebook showing its use. It lives in `docs/docs/integrations` directory. If no one reviews your PR within a few days, please @-mention one of @baskaryan, @eyurtsev, @hwchase17. -->
This commit is contained in:
@@ -70,6 +70,8 @@ def test_tracer_llm_run() -> None:
|
||||
outputs=LLMResult(generations=[[]]),
|
||||
error=None,
|
||||
run_type="llm",
|
||||
trace_id=uuid,
|
||||
dotted_order=f"20230101T000000000000Z{uuid}",
|
||||
)
|
||||
tracer = FakeTracer()
|
||||
|
||||
@@ -103,6 +105,8 @@ def test_tracer_chat_model_run() -> None:
|
||||
outputs=LLMResult(generations=[[]]),
|
||||
error=None,
|
||||
run_type="llm",
|
||||
trace_id=run_managers[0].run_id,
|
||||
dotted_order=f"20230101T000000000000Z{run_managers[0].run_id}",
|
||||
)
|
||||
for run_manager in run_managers:
|
||||
run_manager.on_llm_end(response=LLMResult(generations=[[]]))
|
||||
@@ -139,6 +143,8 @@ def test_tracer_multiple_llm_runs() -> None:
|
||||
outputs=LLMResult(generations=[[]]),
|
||||
error=None,
|
||||
run_type="llm",
|
||||
trace_id=uuid,
|
||||
dotted_order=f"20230101T000000000000Z{uuid}",
|
||||
)
|
||||
tracer = FakeTracer()
|
||||
|
||||
@@ -170,6 +176,8 @@ def test_tracer_chain_run() -> None:
|
||||
outputs={},
|
||||
error=None,
|
||||
run_type="chain",
|
||||
trace_id=uuid,
|
||||
dotted_order=f"20230101T000000000000Z{uuid}",
|
||||
)
|
||||
tracer = FakeTracer()
|
||||
|
||||
@@ -198,6 +206,8 @@ def test_tracer_tool_run() -> None:
|
||||
outputs={"output": "test"},
|
||||
error=None,
|
||||
run_type="tool",
|
||||
trace_id=uuid,
|
||||
dotted_order=f"20230101T000000000000Z{uuid}",
|
||||
)
|
||||
tracer = FakeTracer()
|
||||
tracer.on_tool_start(serialized={"name": "tool"}, input_str="test", run_id=uuid)
|
||||
@@ -257,6 +267,8 @@ def test_tracer_nested_run() -> None:
|
||||
inputs={},
|
||||
outputs={},
|
||||
run_type="chain",
|
||||
trace_id=chain_uuid,
|
||||
dotted_order=f"20230101T000000000000Z{chain_uuid}",
|
||||
child_runs=[
|
||||
Run(
|
||||
id=tool_uuid,
|
||||
@@ -275,6 +287,8 @@ def test_tracer_nested_run() -> None:
|
||||
outputs=dict(output="test"),
|
||||
error=None,
|
||||
run_type="tool",
|
||||
trace_id=chain_uuid,
|
||||
dotted_order=f"20230101T000000000000Z{chain_uuid}.20230101T000000000000Z{tool_uuid}",
|
||||
child_runs=[
|
||||
Run(
|
||||
id=str(llm_uuid1),
|
||||
@@ -293,6 +307,8 @@ def test_tracer_nested_run() -> None:
|
||||
inputs=dict(prompts=[]),
|
||||
outputs=LLMResult(generations=[[]]),
|
||||
run_type="llm",
|
||||
trace_id=chain_uuid,
|
||||
dotted_order=f"20230101T000000000000Z{chain_uuid}.20230101T000000000000Z{tool_uuid}.20230101T000000000000Z{llm_uuid1}",
|
||||
)
|
||||
],
|
||||
),
|
||||
@@ -313,6 +329,8 @@ def test_tracer_nested_run() -> None:
|
||||
inputs=dict(prompts=[]),
|
||||
outputs=LLMResult(generations=[[]]),
|
||||
run_type="llm",
|
||||
trace_id=chain_uuid,
|
||||
dotted_order=f"20230101T000000000000Z{chain_uuid}.20230101T000000000000Z{llm_uuid2}",
|
||||
),
|
||||
],
|
||||
)
|
||||
@@ -342,6 +360,8 @@ def test_tracer_llm_run_on_error() -> None:
|
||||
outputs=None,
|
||||
error=repr(exception),
|
||||
run_type="llm",
|
||||
trace_id=uuid,
|
||||
dotted_order=f"20230101T000000000000Z{uuid}",
|
||||
)
|
||||
tracer = FakeTracer()
|
||||
|
||||
@@ -373,6 +393,8 @@ def test_tracer_llm_run_on_error_callback() -> None:
|
||||
outputs=None,
|
||||
error=repr(exception),
|
||||
run_type="llm",
|
||||
trace_id=uuid,
|
||||
dotted_order=f"20230101T000000000000Z{uuid}",
|
||||
)
|
||||
|
||||
class FakeTracerWithLlmErrorCallback(FakeTracer):
|
||||
@@ -410,6 +432,8 @@ def test_tracer_chain_run_on_error() -> None:
|
||||
outputs=None,
|
||||
error=repr(exception),
|
||||
run_type="chain",
|
||||
trace_id=uuid,
|
||||
dotted_order=f"20230101T000000000000Z{uuid}",
|
||||
)
|
||||
tracer = FakeTracer()
|
||||
|
||||
@@ -441,6 +465,8 @@ def test_tracer_tool_run_on_error() -> None:
|
||||
action="{'name': 'tool'}",
|
||||
error=repr(exception),
|
||||
run_type="tool",
|
||||
trace_id=uuid,
|
||||
dotted_order=f"20230101T000000000000Z{uuid}",
|
||||
)
|
||||
tracer = FakeTracer()
|
||||
|
||||
@@ -511,6 +537,8 @@ def test_tracer_nested_runs_on_error() -> None:
|
||||
inputs={},
|
||||
outputs=None,
|
||||
run_type="chain",
|
||||
trace_id=chain_uuid,
|
||||
dotted_order=f"20230101T000000000000Z{chain_uuid}",
|
||||
child_runs=[
|
||||
Run(
|
||||
id=str(llm_uuid1),
|
||||
@@ -529,6 +557,8 @@ def test_tracer_nested_runs_on_error() -> None:
|
||||
inputs=dict(prompts=[]),
|
||||
outputs=LLMResult(generations=[[]], llm_output=None),
|
||||
run_type="llm",
|
||||
trace_id=chain_uuid,
|
||||
dotted_order=f"20230101T000000000000Z{chain_uuid}.20230101T000000000000Z{llm_uuid1}",
|
||||
),
|
||||
Run(
|
||||
id=str(llm_uuid2),
|
||||
@@ -547,6 +577,8 @@ def test_tracer_nested_runs_on_error() -> None:
|
||||
inputs=dict(prompts=[]),
|
||||
outputs=LLMResult(generations=[[]], llm_output=None),
|
||||
run_type="llm",
|
||||
trace_id=chain_uuid,
|
||||
dotted_order=f"20230101T000000000000Z{chain_uuid}.20230101T000000000000Z{llm_uuid2}",
|
||||
),
|
||||
Run(
|
||||
id=str(tool_uuid),
|
||||
@@ -565,6 +597,8 @@ def test_tracer_nested_runs_on_error() -> None:
|
||||
inputs=dict(input="test"),
|
||||
outputs=None,
|
||||
action="{'name': 'tool'}",
|
||||
trace_id=chain_uuid,
|
||||
dotted_order=f"20230101T000000000000Z{chain_uuid}.20230101T000000000000Z{tool_uuid}",
|
||||
child_runs=[
|
||||
Run(
|
||||
id=str(llm_uuid3),
|
||||
@@ -583,6 +617,8 @@ def test_tracer_nested_runs_on_error() -> None:
|
||||
inputs=dict(prompts=[]),
|
||||
outputs=None,
|
||||
run_type="llm",
|
||||
trace_id=chain_uuid,
|
||||
dotted_order=f"20230101T000000000000Z{chain_uuid}.20230101T000000000000Z{tool_uuid}.20230101T000000000000Z{llm_uuid3}",
|
||||
)
|
||||
],
|
||||
run_type="tool",
|
||||
|
File diff suppressed because one or more lines are too long
@@ -101,6 +101,17 @@ class FakeTracer(BaseTracer):
|
||||
return self.uuids_map[uuid]
|
||||
|
||||
def _copy_run(self, run: Run) -> Run:
|
||||
if run.dotted_order:
|
||||
levels = run.dotted_order.split(".")
|
||||
processed_levels = []
|
||||
for level in levels:
|
||||
timestamp, run_id = level.split("Z")
|
||||
new_run_id = self._replace_uuid(UUID(run_id))
|
||||
processed_level = f"{timestamp}Z{new_run_id}"
|
||||
processed_levels.append(processed_level)
|
||||
new_dotted_order = ".".join(processed_levels)
|
||||
else:
|
||||
new_dotted_order = None
|
||||
return run.copy(
|
||||
update={
|
||||
"id": self._replace_uuid(run.id),
|
||||
@@ -110,6 +121,8 @@ class FakeTracer(BaseTracer):
|
||||
"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,
|
||||
"dotted_order": new_dotted_order,
|
||||
}
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user