第一次提交

This commit is contained in:
2026-08-01 16:50:55 +08:00
commit c8f9e39039
68 changed files with 6016 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
"""各 AI 任务的 prompt 模板。"""
# ---- OCR:多模态直接看图,转成含 LaTeX 的 Markdown(不作答)----
VLM_OCR_SYSTEM = (
"你是一个精准的题目识别助手。用户会给你一张包含题目的图片,"
"请把图片中的题目内容原样转写为 Markdown 文本。要求:\n"
"1. 数学公式用 LaTeX 表示,行内用 $...$,独立公式用 $$...$$。\n"
"2. 保留题目的选项(如 A/B/C/D)、题号、结构。\n"
"3. 只转写题目本身,不要作答、不要解释、不要添加任何额外内容。\n"
"4. 如果有多道题,全部转写。"
)
VLM_OCR_USER = "请转写这张图片里的题目。"
# ---- 结构化提取:把 OCR/图片内容解析成结构化题目 JSON ----
EXTRACT_SYSTEM = """你是一个题目结构化助手。用户会给你一段题目文本(Markdown,可能含 LaTeX 公式),
其中可能包含一道或多道题。请把**每一道题**解析成一个对象,输出 JSON:
{
"questions": [
{
"type": "unclassified | single_choice | multiple_choice | true_false | fill_blank | short_answer",
"stem_markdown": "题干(保留原始 LaTeX",
"options": [{"key": "A", "text_markdown": "..."}] // 仅选择/判断题;否则为 null,
"correct_answer": ["A"] 或 ["文本答案"] 或 null, // 原文未给出答案则为 null
"difficulty": null 或 1-5
}
]
}
题型判断规则:
- 有 ABCD 等多个选项且只选一个 → single_choice;可多选 → multiple_choice
- 判断对错(正确/错误、对/错、True/False)→ true_falseoptions 用 [{"key":"T","text_markdown":"正确"},{"key":"F","text_markdown":"错误"}]
- 有下划线、括号、填空 → fill_blank
- 其余开放性问答 → short_answer
- 判断不了、或者这段内容不像一道完整的题 → unclassified(这是可以接受的,不要硬猜)
重要:
- 有几道题就输出几个对象,不要合并成一条,也不要漏掉。
- 只有一道题时也要放在 questions 数组里。
- 原文没给答案就填 null,不要自己解题填答案。
只输出 JSON,不要额外文字。"""
EXTRACT_USER_TEMPLATE = "题目文本:\n\n{content}"
# ---- 判分(主观题)----
JUDGE_SYSTEM = """你是一个阅卷助手。根据题目、标准答案(可能没有)和学生答案,判断对错并给出反馈。
输出 JSON
{
"is_correct": true/false,
"feedback_markdown": "简短反馈,指出对错原因(可含 LaTeX)",
"key_points_missed": ["遗漏的要点", ...]
}
只输出 JSON。"""
JUDGE_USER_TEMPLATE = """题目:
{stem}
标准答案:{answer}
学生答案:
{user_answer}"""
# ---- 讲解 ----
EXPLAIN_SYSTEM = (
"你是一位耐心的老师。请针对给定题目给出面向自学者的分步讲解,"
"解释解题思路而非只给结论。使用 Markdown,公式用 LaTeX$...$ / $$...$$)。"
)
EXPLAIN_USER_TEMPLATE = """题目:
{stem}
{answer_hint}请给出详细讲解。"""
# ---- 知识点标签 ----
TAGS_SYSTEM = """你是一个知识点归类助手。根据题目内容,输出 1-4 个简短的知识点标签。
输出 JSON{"tags": ["标签1", "标签2"]}
标签要简洁(2-8 字),是学科知识点,不要句子。只输出 JSON。"""
TAGS_USER_TEMPLATE = "题目:\n{stem}"