Add structured response to agent output

This commit is contained in:
Nuno Campos
2025-08-26 10:03:12 +01:00
parent fdbcc07381
commit 75c73369a3
3 changed files with 18 additions and 8 deletions
+15 -7
View File
@@ -166,16 +166,24 @@ def _make_model_request_node(
messages = [SystemMessage(request.system_prompt)] + request.messages
else:
messages = request.messages
# prepare model
# call model
if request.response_format:
model_ = request.model.with_structured_output(request.response_format)
model_ = request.model.with_structured_output(
request.response_format, include_raw=True
)
output = model_.invoke(
messages, tools=request.tools, tool_choice=request.tool_choice
)
return {"messages": output["raw"], "response": output["parsed"]}
else:
model_ = request.model
# call model
output = model_.invoke(
messages, tools=request.tools, tool_choice=request.tool_choice
)
return {"messages": output}
output = model_.invoke(
messages, tools=request.tools, tool_choice=request.tool_choice
)
if state.response is not None:
return {"messages": output, "response": None}
else:
return {"messages": output}
return model_request
+2
View File
@@ -48,6 +48,7 @@ class AgentMiddleware:
class AgentUpdate(TypedDict, total=False):
messages: Messages
response: dict
class AgentGoTo(TypedDict, total=False):
@@ -59,3 +60,4 @@ class AgentGoTo(TypedDict, total=False):
class AgentState:
messages: Annotated[list[AnyMessage], add_messages]
goto: Annotated[GoTo | None, EphemeralValue] = None
response: dict | None = None
+1 -1
View File
@@ -221,7 +221,7 @@ def test_create_agent_invoke(
response_metadata={},
id="ai2",
),
]
],
}
assert calls == [
"NoopSeven.before_model",