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 10 months ago
parent 81027f6077
commit ea3a99efcd

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

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

Loading…
Cancel
Save