Spaces:
Sleeping
Sleeping
import streamlit as st | |
from huggingface_hub import InferenceClient | |
from docx import Document | |
from io import BytesIO | |
st.set_page_config(page_title="DeepSeek 教案生成器", layout="wide") | |
st.title("📘 英语教案生成器(DeepSeek 模型)") | |
# 指定 DeepSeek 模型 | |
client = InferenceClient("deepseek-ai/deepseek-llm-7b-chat", provider="hf-inference") | |
def generate_response(message): | |
system_prompt = "你是一位经验丰富的初中英语老师,善于设计结构化、通俗易懂的英语教案。" | |
full_prompt = f"""<|system|>{system_prompt} | |
<|user|>{message} | |
<|assistant|>""" | |
response = client.text_generation( | |
prompt=full_prompt, | |
max_new_tokens=800, | |
temperature=0.7, | |
stop_sequences=["<|user|>", "<|system|>"] | |
) | |
return response.strip() | |
def create_word_file(content, title="lesson_plan"): | |
doc = Document() | |
doc.add_heading("英语教案", 0) | |
for line in content.split("\n"): | |
doc.add_paragraph(line) | |
file_stream = BytesIO() | |
doc.save(file_stream) | |
file_stream.seek(0) | |
return file_stream | |
# 页面输入区域 | |
theme = st.text_input("请输入教案主题(如:School)") | |
vocab = st.text_area("请输入目标词汇(英文逗号分隔)", placeholder="grammar, Geography, exam, report...") | |
submit = st.button("生成教案") | |
if submit and theme and vocab: | |
with st.spinner("正在调用 DeepSeek AI 生成教案..."): | |
user_prompt = f"""请根据以下要求生成一份初中英语教案: | |
- 教案主题:{theme} | |
- 目标词汇:{vocab} | |
结构要求: | |
1. 教学目标 | |
2. 目标词汇解释 | |
3. 一篇包含目标词汇的文章(适合初一学生阅读) | |
4. 用【】标出目标词汇,用(括号)说明语法点 | |
5. 总结2个语法点 | |
6. 提供2个课堂练习建议 | |
""" | |
result = generate_response(user_prompt) | |
st.markdown("### 📄 教案生成结果") | |
st.markdown(result) | |
word_file = create_word_file(result) | |
st.download_button( | |
label="📥 下载教案(Word格式)", | |
data=word_file, | |
file_name=f"{theme}_lesson_plan.docx", | |
mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document" | |
) | |