这个作业属于哪个课程 H202601软件工程与软件工程实践
这个作业要求在哪里 2026秋软件工程第一次个人作业
这个作业的目标 调用 Hugging Face 的 Flux 模型生成图像,并实现前端交互页面,初步理解如何将大模型能力集成到简单 Web 应用中
学号 102401422

一、技能树梳理与自我评估

1.技能树梳理

  • 技能树:拥有一定的编程语言基础,掌握 C 语言基础语法与面向对象编程思想,学习了解过基础算法,熟悉数组、链表、栈、队列、树等基本数据结构。
  • 感兴趣的技术方向:大模型应用开发,AI软件工程。

2.自我评估

  • 目前代码量:截止目前的代码量基本来源于与各类课程有关的课上实践和课外练习,大约1000行
  • 目标代码量:希望在课程结束时达到5000行,通过课程实践提升自己阅历和能力
  • 期待学习的知识与希望获得的收获:
    • 软件工程全生命周期方法:需求分析、系统设计、编码实现、测试、部署与维护的整体流程。
    • 软件文档写作:需求文档、设计文档、用户手册、技术博客的规范撰写方法。
    • AI 辅助软件开发:如何利用大模型进行代码生成、代码解释、文档撰写、测试用例设计等。

3.AI生成的学习指南

  • 使用的AI工具:DeepSeek
  • 学习指南:

软件工程课程学习指南

一、课程核心目标

软件工程不是单纯地写代码,而是学习如何以工程化、系统化的方式开发和维护软件。课程重点在于:需求分析、系统设计、编码实现、测试、部署与维护的完整流程,以及团队协作和项目管理方法。

二、核心知识模块

  1. 需求工程:学习获取、分析、表达和验证需求,撰写需求规格说明书,绘制用例图。
  2. 软件设计:掌握模块化、耦合与内聚、常见设计模式、UML 建模、系统架构风格。
  3. 编码规范:编写可读、可维护、可测试的代码,重视命名、注释和代码审查。
  4. 软件测试:理解单元测试、集成测试、系统测试、回归测试,了解 TDD 思想。
  5. 项目管理:学习敏捷开发、Scrum、任务拆分、进度控制、风险管理和团队沟通。
  6. 工具链:熟练使用 Git/GitHub 进行版本控制与协作,了解 CI/CD、Docker 等工程化工具。
  7. AI 辅助开发:合理利用大模型进行代码生成、解释、测试用例设计和文档撰写。

三、学习方法建议

  • 课前预习:提前阅读教材或课件,带着问题听课。
  • 课后实践:每学一个知识点,尽量用代码或小项目验证。
  • 团队协作:积极参与小组项目,主动承担任务,学会沟通与分工。
  • 文档习惯:坚持写技术博客或项目笔记,记录问题与解决方案。
  • 工具先行:尽早掌握 Git、Markdown、IDE 调试等基础工具。

四、推荐学习资源

  • 教材:《软件工程:实践者的研究方法》《构建之法》
  • 在线课程:中国大学 MOOC、B站相关课程
  • 文档:Git 官方文档、Markdown 语法指南
  • 社区:GitHub、Stack Overflow、博客园

五、时间安排参考

  • 第 1-4 周:需求分析与 UML 建模
  • 第 5-8 周:软件设计与设计模式
  • 第 9-12 周:编码实现与测试
  • 第 13-16 周:项目集成、部署与总结
  • 对于AI生成的学习指南的评估:这份学习指南层次清晰,从“为什么学”到“学什么”再到“怎么学”,将所需要学习的知识都罗列了出来,并且提供了很多学习资料与相关社区,给出了学习方法建议,如课前预习、课后实践、写博客等。不足是内容偏通用,时间安排还需要依据情况改变合理使用,如果把它作为学习路线图,还需要结合课程大纲、教师要求和实际项目任务进行细化和补充。总而言之,我认为这份学习指南还是能对我起到帮助的。

二、huggingface-API的调用与图像生成

1.注册huggingface账号

进入网站注册个人账户之后,创建Token。

2.调用API并生成图像

借助AI工具使用Python Flask搭建后端,借助huggingface_hub的InferenceClient并指定provider="fal-ai"调用XLabs-AI/flux-RealismLora模型,前端则采用HTML、CSS与JavaScript的Fetch API实现交互

  • 后端关键代码:
from huggingface_hub import InferenceClientHF_TOKEN = "hf_xxx"
client = InferenceClient(provider="fal-ai",api_key=HF_TOKEN,timeout=180,
)@app.route("/generate", methods=["POST"])
def generate():try:data = request.get_json()prompt = data.get("prompt", "")if not prompt:return jsonify({"error": "提示词不能为空"}), 400image = client.text_to_image(prompt,model="XLabs-AI/flux-RealismLora",)img_byte_arr = io.BytesIO()image.save(img_byte_arr, format='PNG')img_byte_arr = img_byte_arr.getvalue()img_base64 = base64.b64encode(img_byte_arr).decode("utf-8")return jsonify({"image": img_base64})
  • 生成的网页图像:

  • 提示词:
    我想要生成的画面是一个人在放学后的操场上跳高,于是我先使用中文将自己想要的画面大概描述出来,再使用AI工具纠正润色,修改提示词并且转化为英文,得到的提示词:

Photorealistic candid documentary photo, a teenage high school student alone practicing high jump on the school playground after class, mid‑air moment as he arches his body over the metal high jump bar, legs bent, arms adjusted for balance. Golden hour late afternoon sunlight, long soft shadows across the worn rubber track, faded white lane lines on the ground, thick blue landing mat under the bar, empty bleachers in the background, a few distant students walking out of the field. Shot on DSLR camera with 50mm f/1.8 lens, natural skin texture, realistic fabric details of school sportswear, soft natural lighting, subtle film grain, 8K high resolution, sharp focus on the jumping student, shallow depth of field, authentic real‑world atmosphere. No cartoon, no illustration, no over‑saturated colors.

  • 最后AI模型生成结果:

  • 调用成功的截图:

  • 心得: 在Access Token创建新Token时,选择Presets的时候要选择Inference不能选Read-Only,我第一次选择Read-Only导致无法生成图像

三、Github个人主页搭建

  • 个人主页:

四、使用Markdown编写作业

  • 博客后台截图: