Home / Class/ TestSystemMessageHandling Class — langchain Architecture

TestSystemMessageHandling Class — langchain Architecture

Architecture documentation for the TestSystemMessageHandling class in test_anthropic_tools.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  ba56b04d_d9f3_fb70_3b66_9b0ee09cb319["TestSystemMessageHandling"]
  6fa433a2_9c9f_67de_68d3_cb5b777bdb82["SystemMessage"]
  ba56b04d_d9f3_fb70_3b66_9b0ee09cb319 -->|extends| 6fa433a2_9c9f_67de_68d3_cb5b777bdb82
  ed6269fc_1a0e_6b64_f39f_7fdd1e5bcdc1["test_anthropic_tools.py"]
  ba56b04d_d9f3_fb70_3b66_9b0ee09cb319 -->|defined in| ed6269fc_1a0e_6b64_f39f_7fdd1e5bcdc1
  be6fe8c1_dab8_3063_66f2_9c6dc6b4c86d["test_text_editor_no_system_message()"]
  ba56b04d_d9f3_fb70_3b66_9b0ee09cb319 -->|method| be6fe8c1_dab8_3063_66f2_9c6dc6b4c86d
  1678632a_3451_63d8_ed6e_51ef9f13f977["test_memory_middleware_adds_system_message()"]
  ba56b04d_d9f3_fb70_3b66_9b0ee09cb319 -->|method| 1678632a_3451_63d8_ed6e_51ef9f13f977
  77ebc9ff_806c_cd00_03c5_3d8dac3d4c79["test_memory_middleware_merges_system_message()"]
  ba56b04d_d9f3_fb70_3b66_9b0ee09cb319 -->|method| 77ebc9ff_806c_cd00_03c5_3d8dac3d4c79
  3034a6a3_df9f_e3ac_5766_7f19305d5fb0["test_async_memory_middleware_merges_system_message()"]
  ba56b04d_d9f3_fb70_3b66_9b0ee09cb319 -->|method| 3034a6a3_df9f_e3ac_5766_7f19305d5fb0
  136ebc57_5733_fae2_4e58_487c8404c654["test_custom_system_prompt_merges_correctly()"]
  ba56b04d_d9f3_fb70_3b66_9b0ee09cb319 -->|method| 136ebc57_5733_fae2_4e58_487c8404c654

Relationship Graph

Source Code

libs/partners/anthropic/tests/unit_tests/middleware/test_anthropic_tools.py lines 286–451

class TestSystemMessageHandling:
    """Test system message handling in wrap_model_call."""

    def test_text_editor_no_system_message(self) -> None:
        """Test text editor middleware without system message."""
        from langchain.agents.middleware.types import ModelRequest

        middleware = StateClaudeTextEditorMiddleware()

        request = ModelRequest(
            model=MagicMock(),
            messages=[],
            system_message=None,
            tool_choice=None,
            tools=[],
            response_format=None,
            state={"messages": []},
            runtime=MagicMock(),
        )

        captured_request = None

        def handler(req: ModelRequest) -> MagicMock:
            nonlocal captured_request
            captured_request = req
            return MagicMock()

        middleware.wrap_model_call(request, handler)

        # No system message should be added for text editor
        assert captured_request is not None
        assert captured_request.system_message is None

    def test_memory_middleware_adds_system_message(self) -> None:
        """Test memory middleware adds system message when none exists."""
        from langchain.agents.middleware.types import ModelRequest

        middleware = StateClaudeMemoryMiddleware()

        request = ModelRequest(
            model=MagicMock(),
            messages=[],
            system_message=None,
            tool_choice=None,
            tools=[],
            response_format=None,
            state={"messages": []},
            runtime=MagicMock(),
        )

        captured_request = None

        def handler(req: ModelRequest) -> MagicMock:
            nonlocal captured_request
            captured_request = req
            return MagicMock()

        middleware.wrap_model_call(request, handler)

        # System message should be added
        assert captured_request is not None
        assert captured_request.system_message is not None
        assert isinstance(captured_request.system_message, SystemMessage)
        assert "MEMORY PROTOCOL" in captured_request.system_message.text

    def test_memory_middleware_merges_system_message(self) -> None:
        """Test memory middleware merges with existing system message."""
        from langchain.agents.middleware.types import ModelRequest

        middleware = StateClaudeMemoryMiddleware()

        existing_message = SystemMessage("You are a helpful assistant.")
        request = ModelRequest(
            model=MagicMock(),
            messages=[],
            system_message=existing_message,
            tool_choice=None,
            tools=[],
            response_format=None,
            state={"messages": []},
            runtime=MagicMock(),

Extends

Frequently Asked Questions

What is the TestSystemMessageHandling class?
TestSystemMessageHandling is a class in the langchain codebase, defined in libs/partners/anthropic/tests/unit_tests/middleware/test_anthropic_tools.py.
Where is TestSystemMessageHandling defined?
TestSystemMessageHandling is defined in libs/partners/anthropic/tests/unit_tests/middleware/test_anthropic_tools.py at line 286.
What does TestSystemMessageHandling extend?
TestSystemMessageHandling extends SystemMessage.

Analyze Your Own Codebase

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

Try Supermodel Free