main
黄海 5 months ago
parent e935c47c00
commit 861ecad7a2

@ -1,7 +1,7 @@
# pip install dashscope python-dotenv
# -*- coding: utf-8 -*-
import time
from pathlib import Path
from typing import Iterator
import dashscope
from dashscope import Generation
from dashscope.api_entities.dashscope_response import DashScopeAPIResponse
@ -23,8 +23,8 @@ class TestDeepSeek:
return md_path.read_text(encoding='utf-8')
@classmethod
def call_with_message(cls) -> DashScopeAPIResponse:
"""调用生成API"""
def call_with_stream(cls) -> Iterator[DashScopeAPIResponse]:
"""流式调用API"""
system_prompt = (
"返回的教案内容请严格按照指定的markdown语法格式返回用来生成ppt。"
"需要注意:1、最开头的Title:..,Author: ... Date:... 不能省略掉,有用处。"
@ -40,29 +40,63 @@ class TestDeepSeek:
{"role": "system", "content": system_prompt},
{"role": "user", "content": "请帮我生成一个小学数学内角和的教案,按标准格式输出。"}
],
result_format='message' # 与Java的GenerationParam.ResultFormat.MESSAGE对应
result_format='message',
stream=True, # 启用流式模式
incremental_output=True # 启用增量输出
)
except Exception as e: # 根据实际SDK异常类型细化
except Exception as e:
raise RuntimeError(f"API调用失败: {str(e)}") from e
@classmethod
def main(cls):
"""主执行方法"""
"""主执行方法(带实时进度提示)"""
print("🔄 开始生成教案,请稍候...")
start_time = time.time()
last_update = start_time
spinner = ['', '', '', '', '', '', '', '', '', '']
spinner_idx = 0
try:
result = cls.call_with_message()
if result.status_code == 200 and result.output:
md_content = result.output.choices[0].message.content
print(md_content)
responses = cls.call_with_stream()
full_content = []
has_content = False
for response in responses:
current_time = time.time()
# 更新进度动画(每秒更新)
if current_time - last_update > 0.1:
print(f"\r{spinner[spinner_idx % 10]} 生成中 [{int(current_time - start_time)}s]", end="")
spinner_idx += 1
last_update = current_time
# 处理响应内容
if response.status_code == 200 and response.output:
chunk = response.output.choices[0].message.content
if chunk:
full_content.append(chunk)
if not has_content:
print("\n\n✅ 开始接收内容:")
has_content = True
print(chunk, end="", flush=True) # 实时显示内容
# 最终处理
if full_content:
md_content = ''.join(full_content)
print(f"\n\n🎉 生成完成!总耗时: {int(time.time() - start_time)}")
# 保存文件
output_path = Path(r"D:\dsWork\QingLong\PptGenerator\md-file\readme\5.md")
output_path.parent.mkdir(parents=True, exist_ok=True)
output_path.write_text(md_content, encoding='utf-8')
print(f"结果已保存至: {output_path}")
print(f"💾 结果已保存至: {output_path}")
else:
print(f"请求失败,状态码: {result.status_code}, 原因: {result.message}")
print("\n⚠️ 未收到有效内容请检查提示词和API配置")
except Exception as e:
print(f"发生错误: {str(e)}")
print(f"\n\n发生错误: {str(e)}")
print("请参考文档https://help.aliyun.com/zh/model-studio/developer-reference/error-code")
finally:
print("\n🔚 程序执行结束")
if __name__ == "__main__":

@ -0,0 +1,114 @@
---
Title: 三角形的内角和
Author: 小学数学教研组
Date: 2023.11.20
---
# 课程基本信息
## 教学目标
> 通过观察、操作、验证等活动理解三角形内角和
- 知识与技能掌握三角形内角和是180°能计算简单角度
- 过程与方法:经历量、拼、折等操作活动培养推理能力
- 情感态度:感受数学与生活的联系,增强探究意识
## 教学重难点
> 重点突破与思维培养
- 重点:三角形内角和定理的理解与应用
- 难点:多边形内角和的推理方法
- 关键点:通过操作验证突破"角变形不变和"的认知
# 教学准备
## 教具学具
> 构建直观认知的辅助工具
- 多媒体课件(含动画演示)
- 各类三角形纸板(锐角/直角/钝角)
- 量角器、剪刀、胶棒
- 探究学习单
# 教学过程
## 一、情境导入5分钟
> 创设认知冲突激发探究欲望
- 展示金字塔、自行车架等实物图片
- 设问引导:这些结构为什么都采用三角形?
- 抛出问题:任意三角形的三个角相加是多少度?
## 二、探究新知20分钟
### 活动1量角验证
> 初步感知内角和规律
- 分组测量三类三角形内角(记录在学习单)
- 汇报发现测量结果接近180°
- 引导思考:测量误差产生的原因
### 活动2拼角实验
> 直观验证定理
- 操作指导:
1. 剪下三角形三个角
2. 将角顶点对齐拼成平角
- 小组展示:直角/锐角/钝角三角形拼图
### 活动3推理证明
> 发展几何直观
- 动画演示:帕斯卡的折叠证明法
- 几何画板动态展示角度变化
- 归纳结论:任意三角形内角和=180°
## 三、巩固应用12分钟
> 分层练习促进知识迁移
- 基础题:已知两角求第三角(直角三角形示例)
- 变式题:等边三角形各角度数计算
- 拓展题:四边形内角和探究(连接对角线转化)
## 四、课堂小结3分钟
> 构建知识网络
- 思维导图梳理:
测量发现 → 操作验证 → 推理证明 → 实际应用
- 延伸思考:五边形内角和怎么计算?
# 作业设计
## 实践性作业
> 让数学回归生活
- 测量红领巾三个角的度数
- 观察生活中三角形结构实例
- 设计创意图形验证内角和
# 板书设计
![板书示意图](板书设计图路径)
- 左侧:探究流程图
- 中部:核心公式区
- 右侧:学生作品展示区
# 教学反思
> 预设与生成的平衡
- 成功点:拼角活动有效突破认知难点
- 改进点:学困生指导策略需加强
- 创新点:融入数学史激发探究兴趣

@ -58,7 +58,7 @@ public class TestDeepSeek {
GenerationResult result = callWithMessage();
String mdContent=result.getOutput().getChoices().getFirst().getMessage().getContent();
System.out.println(mdContent);
FileUtil.writeUtf8String(mdContent,"D:\\dsWork\\ppt-generator-master\\md-file\\readme\\4.md");
FileUtil.writeUtf8String(mdContent,"D:\\dsWork\\QingLong\\PptGenerator\\md-file\\readme\\4.md");
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.err.println("错误信息:" + e.getMessage());
System.out.println("请参考文档https://help.aliyun.com/zh/model-studio/developer-reference/error-code");

Loading…
Cancel
Save