Raachel's picture
Upload 3 files
a0aa57d verified
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"
)