fix: Simplify the formatting of output variables, improve code readability; update test cases to verify the correctness of different output configurations.

pull/20921/head
GuanMu 8 months ago
parent 81027f6077
commit ea3a99efcd

@ -196,11 +196,13 @@ class GraphEngine:
self.graph_runtime_state.outputs["answer"] = self.graph_runtime_state.outputs[
"answer"
].strip()
# Only save the user-defined output variables, not the entire node output
if (item.route_node_state.node_run_result
and item.route_node_state.node_run_result.outputs
and "outputs" in item.route_node_state.node_run_result.outputs):
if (
item.route_node_state.node_run_result
and item.route_node_state.node_run_result.outputs
and "outputs" in item.route_node_state.node_run_result.outputs
):
user_outputs = item.route_node_state.node_run_result.outputs.get("outputs", {})
self.graph_runtime_state.outputs.update(user_outputs)
except Exception as e:

@ -102,16 +102,8 @@ def test_execute_answer_with_outputs():
"type": "answer",
"answer": "Weather: {{#start.weather#}}, Score: {{#start.score#}}",
"outputs": [
{
"variable": "confidence",
"type": "number",
"value_selector": ["start", "score"]
},
{
"variable": "status",
"type": "string",
"value_selector": ["start", "weather"]
}
{"variable": "confidence", "type": "number", "value_selector": ["start", "score"]},
{"variable": "status", "type": "string", "value_selector": ["start", "weather"]},
],
},
"id": "answer",
@ -155,16 +147,8 @@ def test_execute_answer_with_outputs():
"type": "answer",
"answer": "Weather: {{#start.weather#}}, Score: {{#start.score#}}",
"outputs": [
{
"variable": "confidence",
"type": "number",
"value_selector": ["start", "score"]
},
{
"variable": "status",
"type": "string",
"value_selector": ["start", "weather"]
}
{"variable": "confidence", "type": "number", "value_selector": ["start", "score"]},
{"variable": "status", "type": "string", "value_selector": ["start", "weather"]},
],
},
},
@ -179,7 +163,7 @@ def test_execute_answer_with_outputs():
assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert result.outputs is not None
assert result.outputs["answer"] == "Weather: sunny, Score: 85"
# Check outputs field
assert "outputs" in result.outputs
outputs = result.outputs["outputs"]
@ -205,16 +189,8 @@ def test_execute_answer_with_complex_outputs():
"type": "answer",
"answer": "Analysis complete",
"outputs": [
{
"variable": "scores",
"type": "array[number]",
"value_selector": ["start", "score_list"]
},
{
"variable": "metadata",
"type": "object",
"value_selector": ["start", "meta_info"]
}
{"variable": "scores", "type": "array[number]", "value_selector": ["start", "score_list"]},
{"variable": "metadata", "type": "object", "value_selector": ["start", "meta_info"]},
],
},
"id": "answer",
@ -258,16 +234,8 @@ def test_execute_answer_with_complex_outputs():
"type": "answer",
"answer": "Analysis complete",
"outputs": [
{
"variable": "scores",
"type": "array[number]",
"value_selector": ["start", "score_list"]
},
{
"variable": "metadata",
"type": "object",
"value_selector": ["start", "meta_info"]
}
{"variable": "scores", "type": "array[number]", "value_selector": ["start", "score_list"]},
{"variable": "metadata", "type": "object", "value_selector": ["start", "meta_info"]},
],
},
},
@ -281,7 +249,7 @@ def test_execute_answer_with_complex_outputs():
assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert result.outputs["answer"] == "Analysis complete"
# Check complex outputs
assert "outputs" in result.outputs
outputs = result.outputs["outputs"]
@ -359,7 +327,7 @@ def test_execute_answer_with_empty_outputs():
assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert result.outputs["answer"] == "Simple answer"
# Check that outputs field is empty when no outputs are configured
assert "outputs" in result.outputs
assert result.outputs["outputs"] == {}
@ -383,11 +351,7 @@ def test_execute_answer_outputs_variable_not_found():
"type": "answer",
"answer": "Test answer",
"outputs": [
{
"variable": "missing_var",
"type": "string",
"value_selector": ["start", "non_existent"]
}
{"variable": "missing_var", "type": "string", "value_selector": ["start", "non_existent"]}
],
},
"id": "answer",
@ -428,13 +392,7 @@ def test_execute_answer_outputs_variable_not_found():
"title": "Missing variable",
"type": "answer",
"answer": "Test answer",
"outputs": [
{
"variable": "missing_var",
"type": "string",
"value_selector": ["start", "non_existent"]
}
],
"outputs": [{"variable": "missing_var", "type": "string", "value_selector": ["start", "non_existent"]}],
},
},
)
@ -447,7 +405,7 @@ def test_execute_answer_outputs_variable_not_found():
assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED
assert result.outputs["answer"] == "Test answer"
# Check that outputs field handles missing variables gracefully
assert "outputs" in result.outputs
outputs = result.outputs["outputs"]

Loading…
Cancel
Save