考试明细单行展示,选中科目后增加 AI 解读与建议。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+47
-10
@@ -57,16 +57,6 @@ SOLUTION_PROMPT = """你是一位耐心的{stage}{subject}老师。请像「作
|
||||
严禁使用超纲方法;若原题超纲,请给出{stage}课内可理解的解法。
|
||||
"""
|
||||
|
||||
ERROR_DETECT_PROMPT = """你是{stage}{subject}老师。以下是试卷/作业 OCR 识别结果,每行前有编号。
|
||||
请找出「学生答错的部分」:错误答案、被打叉的作答、明显不正确的计算结果等。
|
||||
|
||||
{numbered_lines}
|
||||
|
||||
只输出 JSON,不要其他文字:
|
||||
{{"wrong_line_ids": [行编号整数列表]}}
|
||||
若整张图就是一道错题,请标注含有错误答案或作答的行;找不到则标注最后作答行。
|
||||
"""
|
||||
|
||||
OLYMPIAD_SOLUTION_PROMPT = """你是一位{stage}奥数教练。请像优秀辅导老师一样,先讲解题思路,再完整解答。
|
||||
|
||||
【奥数学段要求 — 严禁超纲】
|
||||
@@ -89,6 +79,38 @@ OLYMPIAD_SOLUTION_PROMPT = """你是一位{stage}奥数教练。请像优秀辅
|
||||
严禁超纲;过难题给出{stage}可接受的培优思路。
|
||||
"""
|
||||
|
||||
ERROR_DETECT_PROMPT = """你是{stage}{subject}老师。以下是试卷/作业 OCR 识别结果,每行前有编号。
|
||||
请找出「学生答错的部分」:错误答案、被打叉的作答、明显不正确的计算结果等。
|
||||
|
||||
{numbered_lines}
|
||||
|
||||
只输出 JSON,不要其他文字:
|
||||
{{"wrong_line_ids": [行编号整数列表]}}
|
||||
若整张图就是一道错题,请标注含有错误答案或作答的行;找不到则标注最后作答行。
|
||||
"""
|
||||
|
||||
REVIEW_INSIGHT_PROMPT = """你是一位{stage}{subject}学习顾问。根据学生历次考试的复盘状态,给出解读与可执行建议。
|
||||
|
||||
【学段】{stage},科目:{subject}
|
||||
|
||||
历次复盘记录(按时间从新到旧):
|
||||
{review_records}
|
||||
|
||||
状态说明:粗心=审题/计算失误;不会=知识点未掌握;紧张=心态影响发挥;正常发挥=状态良好。
|
||||
|
||||
请用 Markdown 输出,结构如下:
|
||||
|
||||
## 情况解读
|
||||
(2-4 句话:从成绩与状态看出什么规律或趋势)
|
||||
|
||||
## 改进建议
|
||||
(3-5 条具体可执行建议,针对出现最多的问题状态,适合{stage}学生)
|
||||
|
||||
## 近期重点
|
||||
(1-2 条本周可落实的小目标)
|
||||
|
||||
语气亲切、务实,不要空泛鸡汤;不要超纲推荐学习内容。
|
||||
"""
|
||||
|
||||
class AIConfig:
|
||||
def __init__(
|
||||
@@ -202,3 +224,18 @@ async def detect_wrong_line_ids(
|
||||
numbered = "\n".join(f"[{i}] {line.get('text', '')}" for i, line in enumerate(ocr_lines))
|
||||
prompt = ERROR_DETECT_PROMPT.format(stage=stage, subject=subject, numbered_lines=numbered)
|
||||
return await generate_text(prompt, cfg)
|
||||
|
||||
|
||||
async def generate_review_insight(
|
||||
cfg: AIConfig,
|
||||
subject: str,
|
||||
review_records: str,
|
||||
school_level=None,
|
||||
) -> str:
|
||||
stage = school_level_label(school_level)
|
||||
prompt = REVIEW_INSIGHT_PROMPT.format(
|
||||
stage=stage,
|
||||
subject=subject,
|
||||
review_records=review_records,
|
||||
)
|
||||
return await generate_text(prompt, cfg)
|
||||
Reference in New Issue
Block a user