Home / File/ test_kwargs_tool_runtime_injection.py — langchain Source File

test_kwargs_tool_runtime_injection.py — langchain Source File

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

File python LangChainCore Runnables 6 imports 1 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  82e4d6f1_511f_c784_3db5_46de2562046f["test_kwargs_tool_runtime_injection.py"]
  feec1ec4_6917_867b_d228_b134d0ff8099["typing"]
  82e4d6f1_511f_c784_3db5_46de2562046f --> feec1ec4_6917_867b_d228_b134d0ff8099
  9444498b_8066_55c7_b3a2_1d90c4162a32["langchain_core.messages"]
  82e4d6f1_511f_c784_3db5_46de2562046f --> 9444498b_8066_55c7_b3a2_1d90c4162a32
  121262a1_0bd6_d637_bce3_307ab6b3ecd4["langchain_core.tools"]
  82e4d6f1_511f_c784_3db5_46de2562046f --> 121262a1_0bd6_d637_bce3_307ab6b3ecd4
  dd5e7909_a646_84f1_497b_cae69735550e["pydantic"]
  82e4d6f1_511f_c784_3db5_46de2562046f --> dd5e7909_a646_84f1_497b_cae69735550e
  d9a6942a_c37a_07f8_ed13_74d0fdc117be["langchain.agents"]
  82e4d6f1_511f_c784_3db5_46de2562046f --> d9a6942a_c37a_07f8_ed13_74d0fdc117be
  069947d2_727b_035a_0691_c12203e2f5a6["tests.unit_tests.agents.model"]
  82e4d6f1_511f_c784_3db5_46de2562046f --> 069947d2_727b_035a_0691_c12203e2f5a6
  style 82e4d6f1_511f_c784_3db5_46de2562046f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Test that config/runtime in args_schema aren't injected to **kwargs functions."""

from __future__ import annotations

from typing import Any

from langchain_core.messages import HumanMessage, ToolMessage
from langchain_core.tools import StructuredTool
from pydantic import BaseModel, Field

from langchain.agents import create_agent
from tests.unit_tests.agents.model import FakeToolCallingModel


class ArgsSchema(BaseModel):
    """Args schema with config and runtime fields."""

    query: str = Field(description="The query")
    config: dict | None = Field(default=None)
    runtime: dict | None = Field(default=None)


def test_config_and_runtime_not_injected_to_kwargs() -> None:
    """Config/runtime in args_schema are NOT injected when not in function signature."""
    captured: dict[str, Any] = {}

    def tool_func(**kwargs: Any) -> str:
        """Tool with only **kwargs."""
        captured["keys"] = list(kwargs.keys())
        captured["config"] = kwargs.get("config")
        captured["runtime"] = kwargs.get("runtime")
        captured["query"] = kwargs.get("query")
        return f"query={kwargs.get('query')}"

    tool = StructuredTool.from_function(
        func=tool_func,
        name="test_tool",
        description="Test tool",
        args_schema=ArgsSchema.model_json_schema(),
    )

    agent = create_agent(
        model=FakeToolCallingModel(
            tool_calls=[[{"name": "test_tool", "args": {"query": "test"}, "id": "c1"}], []]
        ),
        tools=[tool],
        system_prompt="",
    )

    result = agent.invoke({"messages": [HumanMessage("hi")]})

    tool_msgs = [m for m in result["messages"] if isinstance(m, ToolMessage)]
    assert len(tool_msgs) == 1
    assert tool_msgs[0].content == "query=test"

    # Only query passed - config/runtime NOT injected since not in function signature
    assert captured["keys"] == ["query"]
    assert captured["query"] == "test"
    assert captured["config"] is None
    assert captured["runtime"] is None

Domain

Subdomains

Classes

Dependencies

  • langchain.agents
  • langchain_core.messages
  • langchain_core.tools
  • pydantic
  • tests.unit_tests.agents.model
  • typing

Frequently Asked Questions

What does test_kwargs_tool_runtime_injection.py do?
test_kwargs_tool_runtime_injection.py is a source file in the langchain codebase, written in python. It belongs to the LangChainCore domain, Runnables subdomain.
What functions are defined in test_kwargs_tool_runtime_injection.py?
test_kwargs_tool_runtime_injection.py defines 1 function(s): test_config_and_runtime_not_injected_to_kwargs.
What does test_kwargs_tool_runtime_injection.py depend on?
test_kwargs_tool_runtime_injection.py imports 6 module(s): langchain.agents, langchain_core.messages, langchain_core.tools, pydantic, tests.unit_tests.agents.model, typing.
Where is test_kwargs_tool_runtime_injection.py in the architecture?
test_kwargs_tool_runtime_injection.py is located at libs/langchain_v1/tests/unit_tests/agents/test_kwargs_tool_runtime_injection.py (domain: LangChainCore, subdomain: Runnables, directory: libs/langchain_v1/tests/unit_tests/agents).

Analyze Your Own Codebase

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

Try Supermodel Free