This commit is contained in:
2025-09-04 15:41:55 +08:00
parent eea9b3b0aa
commit 7c091a12d0
4 changed files with 319 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
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_courseware():
"""生成万有引力课件大纲的异步函数"""
system_prompt = """你是PPT视觉设计教练遵循“6×6原则”每页≤6行每行≤6词字体≥28pt主色调#005BAC教育蓝强调色#FFB703暖黄。所有动画≤0.5s,禁止花哨。需要给出演示者备注栏(<备注>)。"""
llm_client = LLMClient(system_prompt=system_prompt)
prompt = """为“万有引力”生成可直接导入PowerPoint的Markdown大纲共12页
1. 封面(课程名+章节+教师姓名留白)
2. 情境导入1个30s短视频建议+2张图片提示
3. 概念建构(苹果落地+月亮绕地对比图)
4. 规律探究卡文迪许实验GIF占位
5. 公式推导F=G·m₁m₂/r²分三步行
6. 例题精讲2道step-by-step动画
7. 当堂检测Padlet二维码占位
8. 小结思维导图可一键转SmartArt
9. 作业二维码(链接到在线表单)
10. 结束页(“思考:如果没有万有引力?”留白)
【格式要求】
每页用三级标题###表示,下方用<ul>列要点;如需图片,用! `https://via.placeholder.com/800x450?text=Image` 占位并给出版权提示;在要点后另起一行写<备注>演示者话术。"""
async def get_courseware():
async for chunk in llm_client.get_response(prompt, stream=True):
yield chunk
return get_courseware()
# 测试生成课件的函数
async def test_generate_courseware():
print("\n===== 测试生成万有引力课件 =====")
try:
# 调用教学辅助工具生成课件
courseware_chunks = await generate_gravitation_courseware()
output_file = "./markdown/万有引力课件.md"
# 调用教学辅助工具保存文件
print("\n生成的课件大纲:")
full_content, success = await save_lesson_plan(courseware_chunks, output_file, stream_print=True)
if success:
print(f"\n课件已保存到:{os.path.abspath(output_file)}")
else:
print("\n课件保存失败")
except Exception as e:
print(f"生成课件时发生异常: {str(e)}", file=sys.stderr)
# 主函数
async def main():
try:
# 直接生成课件,不进行交互式测试
await test_generate_courseware()
except KeyboardInterrupt:
print("\n程序被用户中断")
except Exception as e:
print(f"测试过程中发生异常: {str(e)}", file=sys.stderr)
finally:
print("\n测试程序结束")
if __name__ == '__main__':
# 运行异步主函数
asyncio.run(main())

View File

@@ -0,0 +1,96 @@
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一致
# 作业生成提示词
prompt = """请输出'万有引力'课后作业满分100分
A. 客观题8题×5分=40分
- 前3题考'史实&概念'识记
- 中间3题考'公式变形&比例'理解
- 后2题考'情境估算'应用
B. 主观题2题30+30分
- 题1结合'天问一号'发射新闻,解释地球与火星之间的引力如何变化
- 题2设计一个实验用智能手机+免费APP估算地球质量写出步骤与所需测量量
C. 评分标准主观题分点给分每点10分
D. 参考答案与解析(客观题给出选项+一句话解析;主观题给出关键公式与评分关键词)
【格式要求】
### A. 客观题
<ul>
<li>1. ……</li>
……
</ul>
### B. 主观题
#### 1. ……
#### 2. ……
### C. 评分标准
……
### D. 参考答案与解析
……"""
# 流式响应生成器
async def get_homework():
async for chunk in llm_client.get_response(prompt, stream=True):
yield chunk
return get_homework()
async def test_generate_homework():
"""测试生成万有引力课后作业并保存"""
print("===== 开始生成万有引力课后作业 =====")
try:
# 修复添加await关键字获取生成器
homework_generator = await generate_gravitation_homework()
output_path = "./markdown/万有引力作业.md"
# 修复正确调用save_lesson_plan函数使用位置参数而非关键字参数
full_content, success = await save_lesson_plan(
homework_generator,
output_path, # 修改为位置参数
stream_print=True
)
if success:
print(f"\n作业生成成功!文件路径: {os.path.abspath(output_path)}")
return full_content
else:
print("\n作业生成失败")
return None
except Exception as e:
print(f"生成过程中发生错误: {str(e)}", file=sys.stderr)
return None
if __name__ == "__main__":
# 运行异步测试函数
asyncio.run(test_generate_homework())

View File

@@ -0,0 +1,16 @@
### A. 客观题<ul>
<li>1. 下列哪位科学家提出了“万有引力定律”?
A. 伽利略
B. 牛顿
C. 爱因斯坦
D. 开普勒
</li>
<li>2. 关于万有引力,下列说法正确的是:
A. 只有质量极大的天体之间才有万有引力
B. 万有引力是作用在两个物体之间的相互作用力
C. 万有引力的大小与两个物体之间的距离成正比
D. 万有引力的大小与两个物体的质量乘积成反比
</li>
<li

View File

@@ -0,0 +1,124 @@
### 封面
<ul>
<li>课程名高中物理必修2</li>
<li>章节第6章 第2节</li>
<li>主题:万有引力</li>
<li>教师姓名________________</li>
</ul>
<备注>
欢迎同学们进入今天的物理课堂。今天我们来探索一个既熟悉又神秘的自然力——万有引力。
</备注>
---
### 情境导入
<ul>
<li>播放30秒短视频苹果落地与宇航员失重对比</li>
<li>图片1苹果从树上落下</li>
<li>图片2宇航员在太空站漂浮</li>
</ul>
![](https://via.placeholder.com/800x450?text=Apple+Falling)
![](https://via.placeholder.com/800x450?text=Astronaut+Floating)
<备注>
请大家观察这两个场景,思考:为什么苹果会掉下来,而宇航员却“飘”在空中?
</备注>
---
### 概念建构
<ul>
<li>苹果落地:地球吸引物体</li>
<li>月亮绕地:地球吸引月球</li>
<li>对比图:地表物体 vs 天体运动</li>
</ul>
![](https://via.placeholder.com/800x450?text=Apple+vs+Moon)
<备注>
牛顿发现:地面上的重力和天体间的引力,其实是同一种力——万有引力。
</备注>
---
### 规律探究
<ul>
<li>卡文迪许实验测量万有引力常量G</li>
<li>GIF图扭秤实验过程示意</li>
<li>意义:首次“称量”地球质量</li>
</ul>
![](https://via.placeholder.com/800x450?text=Cavendish+Experiment)
<备注>
通过这个精妙的实验科学家第一次测出了G的值从而能计算地球的质量。
</备注>
---
### 公式推导
<ul>
<li>第一步F ∝ m₁m₂</li>
<li>第二步F ∝ 1/r²</li>
<li>第三步引入G得 F = G·m₁m₂/r²</li>
</ul>
<备注>
万有引力的大小与两物体质量成正比,与距离平方成反比,这就是万有引力定律的核心公式。
</备注>
---
### 例题精讲
<ul>
<li>例题1计算地球对苹果的引力</li>
<li>例题2计算两个质量为1kg的物体相距1m时的引力</li>
<li>Step-by-step动画展示计算过程</li>
</ul>
<备注>
我们来一步步代入公式,看看这些力到底有多大。注意单位统一和科学记数法的使用。
</备注>
---
### 当堂检测
<ul>
<li>使用Padlet进行实时问答</li>
<li>扫描二维码提交答案</li>
<li>问题:万有引力与哪些因素有关?</li>
</ul>
![](https://via.placeholder.com/800x450?text=Padlet+QR+Code)
<备注>
请同学们扫码进入Padlet页面回答问题。我们稍后一起查看结果。
</备注>
---
### 小结
<ul>
<li>万有引力是自然界普遍存在的一种力</li>
<li>公式F = G·m₁m₂/r²</li>
<li>适用于地表物体与天体</li>
</ul>
![](https://via.placeholder.com/800x450?text=Mind+Map)
<备注>
这是我们今天学习的核心内容,大家可以通过这个思维导图进行复习和拓展。
</备注>
---
### 作业二维码
<ul>
<li>完成在线作业:万有引力基础练习</li>
<li>扫码进入作业提交页面</li>
<li>截止时间本周五23:59</li>
</ul>
![](https://via.placeholder.com/800x450?text=Homework+QR+Code)
<备注>
课后请大家扫码完成在线作业,巩固今天所学内容。
</备注>
---
### 结束页
<ul>
<li>思考:如果没有万有引力?</li>
<li>留白:学生自由发挥</li>
</ul>
<备注>
最后请大家思考一个问题:如果宇宙中没有万有引力,世界会变成什么样?
</备注>