Home / Class/ TestResponseRewriting Class — langchain Architecture

TestResponseRewriting Class — langchain Architecture

Architecture documentation for the TestResponseRewriting class in test_wrap_model_call.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  cb947a63_4e84_45da_09d8_177d819abead["TestResponseRewriting"]
  949c7cf4_56fe_f3b4_cd89_9631a7e9cb1e["AgentMiddleware"]
  cb947a63_4e84_45da_09d8_177d819abead -->|extends| 949c7cf4_56fe_f3b4_cd89_9631a7e9cb1e
  573473e5_eb93_a7d7_84ba_c975071c09af["test_wrap_model_call.py"]
  cb947a63_4e84_45da_09d8_177d819abead -->|defined in| 573473e5_eb93_a7d7_84ba_c975071c09af
  524fa244_8ce7_483e_cb05_d1be1817c300["test_uppercase_response()"]
  cb947a63_4e84_45da_09d8_177d819abead -->|method| 524fa244_8ce7_483e_cb05_d1be1817c300
  e16c3121_3e84_a4cf_782b_28247d9332dc["test_prefix_response()"]
  cb947a63_4e84_45da_09d8_177d819abead -->|method| e16c3121_3e84_a4cf_782b_28247d9332dc
  be254382_5e25_6c31_08a9_3ec5230f084d["test_multi_stage_transformation()"]
  cb947a63_4e84_45da_09d8_177d819abead -->|method| be254382_5e25_6c31_08a9_3ec5230f084d

Relationship Graph

Source Code

libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py lines 296–371

class TestResponseRewriting:
    """Test response content rewriting with wrap_model_call."""

    def test_uppercase_response(self) -> None:
        """Test middleware that transforms response to uppercase."""

        class UppercaseMiddleware(AgentMiddleware):
            def wrap_model_call(
                self,
                request: ModelRequest,
                handler: Callable[[ModelRequest], ModelResponse],
            ) -> ModelCallResult:
                result = handler(request)
                # result is ModelResponse, extract AIMessage from it
                ai_message = result.result[0]
                assert isinstance(ai_message.content, str)
                return AIMessage(content=ai_message.content.upper())

        model = GenericFakeChatModel(messages=iter([AIMessage(content="hello world")]))
        agent = create_agent(model=model, middleware=[UppercaseMiddleware()])

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

        assert result["messages"][1].content == "HELLO WORLD"

    def test_prefix_response(self) -> None:
        """Test middleware that adds prefix to response."""

        class PrefixMiddleware(AgentMiddleware):
            def __init__(self, prefix: str):
                super().__init__()
                self.prefix = prefix

            def wrap_model_call(
                self,
                request: ModelRequest,
                handler: Callable[[ModelRequest], ModelResponse],
            ) -> ModelCallResult:
                result = handler(request)
                # result is ModelResponse, extract AIMessage from it
                ai_message = result.result[0]
                return AIMessage(content=f"{self.prefix}{ai_message.content}")

        model = GenericFakeChatModel(messages=iter([AIMessage(content="Response")]))
        agent = create_agent(model=model, middleware=[PrefixMiddleware(prefix="[BOT]: ")])

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

        assert result["messages"][1].content == "[BOT]: Response"

    def test_multi_stage_transformation(self) -> None:
        """Test middleware applying multiple transformations."""

        class MultiTransformMiddleware(AgentMiddleware):
            def wrap_model_call(
                self,
                request: ModelRequest,
                handler: Callable[[ModelRequest], ModelResponse],
            ) -> ModelCallResult:
                result = handler(request)
                # result is ModelResponse, extract AIMessage from it
                ai_message = result.result[0]

                # First transformation: uppercase
                assert isinstance(ai_message.content, str)
                content = ai_message.content.upper()
                # Second transformation: add prefix and suffix
                content = f"[START] {content} [END]"
                return AIMessage(content=content)

        model = GenericFakeChatModel(messages=iter([AIMessage(content="hello")]))
        agent = create_agent(model=model, middleware=[MultiTransformMiddleware()])

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

        assert result["messages"][1].content == "[START] HELLO [END]"

Extends

Frequently Asked Questions

What is the TestResponseRewriting class?
TestResponseRewriting is a class in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py.
Where is TestResponseRewriting defined?
TestResponseRewriting is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call.py at line 296.
What does TestResponseRewriting extend?
TestResponseRewriting extends AgentMiddleware.

Analyze Your Own Codebase

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

Try Supermodel Free