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
Source
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