mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-25 17:12:26 +02:00
Add structured response to agent output
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -221,7 +221,7 @@ def test_create_agent_invoke(
|
||||
response_metadata={},
|
||||
id="ai2",
|
||||
),
|
||||
]
|
||||
],
|
||||
}
|
||||
assert calls == [
|
||||
"NoopSeven.before_model",
|
||||
|
||||
Reference in New Issue
Block a user