This commit is contained in:
2026-05-09 03:13:30 -06:00
parent c466dfd3c6
commit cf856857df
2 changed files with 25 additions and 6 deletions

View File

@@ -123,8 +123,8 @@ def build_evaluation_prompt(problem):
criteria_text = """ criteria_text = """
- 逻辑正确性 (权重: 1.0, 最高分: 40): 检查流程图的逻辑是否正确,包括条件判断、循环结构等 - 逻辑正确性 (权重: 1.0, 最高分: 40): 检查流程图的逻辑是否正确,包括条件判断、循环结构等
- 完整性 (权重: 0.8, 最高分: 30): 检查流程图是否包含所有必要的步骤和分支 - 完整性 (权重: 0.8, 最高分: 30): 检查流程图是否包含所有必要的步骤和分支
- 规范性 (权重: 0.6, 最高分: 20): 检查流程图符号使用是否规范,是否符合标准 - 规范性 (权重: 0.6, 最高分: 20): 检查流程图符号使用是否规范,是否符合标准不要评价节点ID
- 清晰度 (权重: 0.4, 最高分: 10): 评估流程图的整体布局和连线情况(不用考虑节点ID是否复杂) - 清晰度 (权重: 0.4, 最高分: 10): 评估流程图的整体布局和连线情况不要因节点ID扣分
""" """
return f""" return f"""
@@ -136,9 +136,12 @@ def build_evaluation_prompt(problem):
评分要求: 评分要求:
1. 仔细分析流程图的逻辑正确性、完整性和清晰度 1. 仔细分析流程图的逻辑正确性、完整性和清晰度
2. 检查是否涵盖了题目的所有要求 2. 检查是否涵盖了题目的所有要求
3. 评估流程图的规范性和可读性(不用考虑节点ID是否复杂) 3. 评估流程图的规范性和可读性
4. 给出0-100的分数 4. 给出0-100的分数
5. 提供详细的反馈和改进建议 5. Mermaid节点ID由系统生成不是学生编写内容不要评价节点ID不要因节点ID扣分不要建议修改节点ID
6. feedback控制在60字以内只总结核心优点和主要问题
7. suggestions最多3条每条单独一行重要建议必须以【重点】开头普通建议不要加前缀
8. criteria_details 中的 comment 保持简短每项不超过25字
评分等级: 评分等级:
- S级 (90-100分): 优秀,逻辑清晰,完全符合要求 - S级 (90-100分): 优秀,逻辑清晰,完全符合要求
@@ -150,8 +153,8 @@ def build_evaluation_prompt(problem):
{{ {{
"score": 85, "score": 85,
"grade": "A", "grade": "A",
"feedback": "详细的反馈内容", "feedback": "整体逻辑清楚,但循环出口表达不够明确。",
"suggestions": "改进建议", "suggestions": "【重点】补充循环结束条件\\n完善异常输入分支",
"criteria_details": {{ "criteria_details": {{
"逻辑正确性": {{"score": 35, "max": 40, "comment": "逻辑基本正确"}}, "逻辑正确性": {{"score": 35, "max": 40, "comment": "逻辑基本正确"}},
"完整性": {{"score": 25, "max": 30, "comment": "缺少部分步骤"}}, "完整性": {{"score": 25, "max": 30, "comment": "缺少部分步骤"}},

16
flowchart/tests.py Normal file
View File

@@ -0,0 +1,16 @@
from types import SimpleNamespace
from unittest import TestCase
from .tasks import build_evaluation_prompt
class FlowchartEvaluationPromptTests(TestCase):
def test_prompt_excludes_system_generated_mermaid_ids_and_limits_feedback(self):
prompt = build_evaluation_prompt(SimpleNamespace())
self.assertIn("Mermaid节点ID由系统生成", prompt)
self.assertIn("不要评价节点ID", prompt)
self.assertIn("不要因节点ID扣分", prompt)
self.assertIn("feedback控制在60字以内", prompt)
self.assertIn("suggestions最多3条", prompt)
self.assertIn("重要建议必须以【重点】开头", prompt)