Home / File/ test_automatic_metadata.py — langchain Source File

test_automatic_metadata.py — langchain Source File

Architecture documentation for test_automatic_metadata.py, a python file in the langchain codebase. 6 imports, 0 dependents.

File python CoreAbstractions RunnableInterface 6 imports 5 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  c4a7a5fd_df82_7309_6533_bab19b148f74["test_automatic_metadata.py"]
  525a7d6f_f455_56e3_854a_c8a7da4a1417["unittest.mock"]
  c4a7a5fd_df82_7309_6533_bab19b148f74 --> 525a7d6f_f455_56e3_854a_c8a7da4a1417
  d758344f_537f_649e_f467_b9d7442e86df["langchain_core.messages"]
  c4a7a5fd_df82_7309_6533_bab19b148f74 --> d758344f_537f_649e_f467_b9d7442e86df
  552bc7bf_c1ac_965d_e157_ee750ab1993c["langchain_core.messages.tool"]
  c4a7a5fd_df82_7309_6533_bab19b148f74 --> 552bc7bf_c1ac_965d_e157_ee750ab1993c
  ac2a9b92_4484_491e_1b48_ec85e71e1d58["langchain_core.outputs"]
  c4a7a5fd_df82_7309_6533_bab19b148f74 --> ac2a9b92_4484_491e_1b48_ec85e71e1d58
  3f5d18d2_1a69_3c79_f735_ae6e90c95a79["langchain_core.tracers.core"]
  c4a7a5fd_df82_7309_6533_bab19b148f74 --> 3f5d18d2_1a69_3c79_f735_ae6e90c95a79
  17e2fb09_6b0f_338f_1319_77bc43602969["langchain_core.tracers.schemas"]
  c4a7a5fd_df82_7309_6533_bab19b148f74 --> 17e2fb09_6b0f_338f_1319_77bc43602969
  style c4a7a5fd_df82_7309_6533_bab19b148f74 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Test automatic tool call count storage in tracers."""

from __future__ import annotations

from unittest.mock import MagicMock

from langchain_core.messages import AIMessage
from langchain_core.messages.tool import ToolCall
from langchain_core.outputs import ChatGeneration, LLMResult
from langchain_core.tracers.core import _TracerCore
from langchain_core.tracers.schemas import Run


class MockTracerCore(_TracerCore):
    """Mock tracer core for testing LLM run completion."""

    def __init__(self) -> None:
        super().__init__()

    def _persist_run(self, run: Run) -> None:
        """Mock implementation of _persist_run."""


def test_complete_llm_run_automatically_stores_tool_call_count() -> None:
    """Test that `_complete_llm_run` automatically stores tool call count."""
    tracer = MockTracerCore()

    run = MagicMock(spec=Run)
    run.id = "test-llm-run-id"
    run.run_type = "llm"
    run.extra = {}
    run.outputs = {}
    run.events = []
    run.end_time = None
    run.inputs = {}

    tracer.run_map[str(run.id)] = run

    tool_calls = [
        ToolCall(name="search", args={"query": "test"}, id="call_1"),
        ToolCall(name="calculator", args={"expression": "2+2"}, id="call_2"),
    ]
    message = AIMessage(content="Test", tool_calls=tool_calls)
    generation = ChatGeneration(message=message)
    response = LLMResult(generations=[[generation]])

    # Complete the LLM run (this should trigger automatic metadata storage)
    completed_run = tracer._complete_llm_run(response=response, run_id=run.id)

    assert "tool_call_count" in completed_run.extra
    assert completed_run.extra["tool_call_count"] == 2


def test_complete_llm_run_handles_no_tool_calls() -> None:
    """Test that `_complete_llm_run` handles runs with no tool calls gracefully."""
    tracer = MockTracerCore()

    run = MagicMock(spec=Run)
    run.id = "test-llm-run-id-no-tools"
    run.run_type = "llm"
// ... (96 more lines)

Subdomains

Classes

Dependencies

  • langchain_core.messages
  • langchain_core.messages.tool
  • langchain_core.outputs
  • langchain_core.tracers.core
  • langchain_core.tracers.schemas
  • unittest.mock

Frequently Asked Questions

What does test_automatic_metadata.py do?
test_automatic_metadata.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, RunnableInterface subdomain.
What functions are defined in test_automatic_metadata.py?
test_automatic_metadata.py defines 5 function(s): test_complete_llm_run_automatically_stores_tool_call_count, test_complete_llm_run_counts_tool_calls_from_multiple_generations, test_complete_llm_run_handles_empty_generations, test_complete_llm_run_handles_no_tool_calls, test_complete_llm_run_handles_null_tool_calls.
What does test_automatic_metadata.py depend on?
test_automatic_metadata.py imports 6 module(s): langchain_core.messages, langchain_core.messages.tool, langchain_core.outputs, langchain_core.tracers.core, langchain_core.tracers.schemas, unittest.mock.
Where is test_automatic_metadata.py in the architecture?
test_automatic_metadata.py is located at libs/core/tests/unit_tests/tracers/test_automatic_metadata.py (domain: CoreAbstractions, subdomain: RunnableInterface, directory: libs/core/tests/unit_tests/tracers).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free