import asyncio import logging import os import sys # 导入现有工具类(不创建新类) from TeacherHelper.Kit.TeacherHelper import ( LLMClient, save_lesson_plan ) # 配置日志 logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) async def generate_gravitation_homework(): """生成万有引力课后作业的异步函数 Returns: 异步生成器: 流式返回作业内容 """ # 系统指令 - 符合布鲁姆认知分类和双减政策 system_prompt = "你是命题专家,熟悉布鲁姆认知分类和'双减'政策。你需要根据用户提供的题目材料来生成作业,而不是自己创造题目。客观题采用'四选一'单选,难度比例易:中:难=6:3:1;主观题设置2小问,第1问'解释现象'对应'理解',第2问'方案设计'对应'创新'。题量控制为20分钟完成。" # 创建LLM客户端实例(使用现有类) llm_client = LLMClient(system_prompt=system_prompt) # 修改为与T3_KeJian.py一致 # 读取题目材料 - 使用绝对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) project_root = os.path.dirname(current_dir) yunxiao_path = os.path.join(project_root, "static", "YunXiao.txt") with open(yunxiao_path, "r", encoding="utf-8") as f: question_material = f.read() # 作业生成提示词 prompt = f"""请根据以下'万有引力'相关题目材料,输出课后作业,满分100分,含: A. 客观题(8题×5分=40分) - 从提供的材料中选择题目,并按要求重新组织 - 前3题考'史实&概念'识记 - 中间3题考'公式变形&比例'理解 - 后2题考'情境估算'应用 B. 主观题(2题,30+30分) - 题1:结合'天问一号'发射新闻,解释地球与火星之间的引力如何变化 - 题2:设计一个实验,用智能手机+免费APP估算地球质量,写出步骤与所需测量量 C. 评分标准(主观题分点给分,每点10分) D. 参考答案与解析(客观题给出选项+一句话解析;主观题给出关键公式与评分关键词) 以下是题目材料: {question_material} 【格式要求】 ### A. 客观题