# 2026秋软件工程课程第一次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/ |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/15712 |
| 这个作业的目标 | 了解自己掌握的和不足的,搭建个人博客,学会使用大模型 |
| 学号 | 102401203 |
1 Hugging Face API调用实现AI图像生成网页
1.1 项目概述
在HuggingFace官网注册账号,获取API Token,调用XLabs-AI/flux-RealismLora写实图像模型。基于Python Flask搭建后端接口,搭配前端页面实现交互:输入正向提示词、负面提示词,调整生成参数,调用HF API,返回图片并展示在网页。
模型地址:XLabs-AI/flux-RealismLora

1.2 API调用操作步骤
- 访问HuggingFace官网,注册个人账号,进入账号设置页面,创建读取权限的API Token。
- 找到模型仓库
XLabs-AI/flux-RealismLora,查看推理API文档,确认请求格式。 - 使用Python Flask搭建Web后端,编写接口接收前端传入的正负提示词、图像尺寸、采样步数等参数。
- 在后端代码中,通过
requests库向HF推理API地址发送POST请求,携带Token和生成参数。 - API返回图像二进制数据,后端将图片转Base64格式传回前端页面渲染展示。
- 调试网络问题:遇到DNS解析失败,通过修改hosts绑定域名IP解决域名解析问题,最终成功调用模型生成图片。
1.3 核心代码示例
from flask import Flask, request, jsonify
import requests
import base64
import os
app = Flask(__name__)
HF_API_TOKEN = "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"
API_URL = "[https://api-inference.huggingface.co/models/XLabs-AI/flux-RealismLora](https://api-inference.huggingface.co/models/XLabs-AI/flux-RealismLora)"
headers = {"Authorization": f"Bearer {HF_API_TOKEN}"}
@app.route("/")
def index():
with open("index.html","r",encoding="utf-8") as f:
return f.read()
@app.route("/api/generate", methods=["POST"])
def generate():
data = request.get_json()
prompt = data.get("prompt")
negative_prompt = data.get("negative_prompt")
payload = {
"inputs": prompt,
"parameters": {
"negative_prompt": negative_prompt,
"width":1024,
"height":1024,
"num_inference_steps":32,
"guidance_scale":3.2
}
}
resp = requests.post(API_URL, headers=headers, json=payload, timeout=120)
if resp.status_code == 200:
img_b64 = base64.b64encode(resp.content).decode()
return jsonify({"image":img_b64})
else:
return jsonify({"err":resp.text}),500
if __name__ == "__main__":
app.run(debug=True, port=5000)
前端 index.html(简略)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Flux AI绘图</title>
</head>
<body>
<div>
<h3>正向提示词</h3>
<textarea id="prompt" rows="4" cols="60"></textarea>
<h3>负面提示词</h3>
<textarea id="neg_prompt" rows="4" cols="60"></textarea>
<br>
<button onclick="generateImage()">生成图像</button>
<div id="result"></div>
</div>
<script>
async function generateImage(){
const prompt = document.getElementById("prompt").value;
const neg = document.getElementById("neg_prompt").value;
const res = await fetch("/api/generate",{
method:"POST",
headers:{"Content-Type":"application/json"},
body:JSON.stringify({prompt, negative_prompt:neg})
})
const data = await res.json();
if(data.image){
document.getElementById("result").innerHTML = `<img src="data:image/png;base64,${data.image}" width="800">`
}else{
alert(data.err);
}
}
</script>
</body>
</html>

1.4 提示词设计思路与修改过程
- 初始提示词:
girl,生成画面模糊、细节缺失,人脸扭曲。问题:描述信息太少,缺少光影、镜头、质感描述。 - 迭代优化:增加人种、场景、光线、相机镜头、胶片质感、景深等摄影参数,同时添加负面提示词
ugly, deformed, blurry,剔除畸形、模糊效果。 - 最终提示词:
RAW photo, close-up portrait of a 30-year-old East Asian woman sitting by a cafe window, shot on Canon EOS R5, 85mm f/1.4 lens, shallow depth of field, soft natural window light from the left, warm afternoon sunlight, visible skin texture and pores, subtle freckles, natural subsurface scattering, film grain, Fujifilm Superia 400 color grading, cinematic composition, rule of thirds, blurred street>
设计思路:使用摄影参数控制构图、光影,增加皮肤、胶片质感,让图像更贴近真实照片。
1.5 运行截图


1.6 API调用体验与心得
- Hugging Face推理API调用简单,不需要本地部署庞大Flux模型,适合快速原型验证,但网络环境影响很大。国内网络会出现DNS解析失败、超时问题,需要通过hosts绑定海外IP解决。
- 模型冷启动耗时较长,首次请求加载模型时等待时间久。
- 提示词工程非常关键,简短文字很难得到高质量写实图片,需要补充镜头、光影、材质描述,搭配负面提示词提升画质。
- 前后端分离的交互模式,让AI模型可以包装成网页工具,加深了我对Web接口、网络请求、二进制图片传输的理解。
- API有访问限流,频繁请求会返回429错误,开发时需要做好异常捕获与错误提示。
2 GitHub个人主页搭建
本次作业选择方案一:创建与GitHub ID同名仓库,使用README.md制作个人资料主页
2.1 搭建步骤
- 登录GitHub,新建仓库,仓库名称与自己GitHub用户名完全一致,勾选
Add a README file。 - 点击README.md文件编辑按钮,编写Markdown内容:自我介绍、兴趣爱好、技能清单、项目成果、自我评估、三年发展规划。
- 将AI绘图项目截图上传到仓库,在README中插入图片链接。
- 提交保存,访问地址:
[https://github.com/](https://github.com/)你的GitHub用户名,查看个人主页效果。

2.2 README.md完整内容
# Hi there 👋
我是连向薇,一名计算机专业学生。
## 👩💻 About Me
- 🎓 专业:计算机相关专业
- ✨ 兴趣:Web开发、AI图像生成、Python后端、计算机底层原理
- 📷 爱好:摄影、宠物、户外旅行
## 🛠️ Skills
### 已掌握
- 编程语言:Python、C语言
- AI相关:Hugging Face API调用、Flux图像生成模型部署
- 工具:Git、VS Code
### 感兴趣方向
大模型应用开发、AI绘图、Web全栈开发
### 希望继续学习
深度学习原理、前端框架、数据库、软件工程
## 🎯 三年发展规划
1. 夯实计算机基础(操作系统、计网、计组),完成课程项目,积累开源小作品,准备考研相关复习;
2. 备战考研,同时持续做AI应用方向的项目,提升工程实践能力;
3. 成功上岸,研究生阶段聚焦大模型应用开发方向,持续产出技术项目。
## 📫 Contact
- GitHub:https://github.com/aurogons
3 博客园随笔
标题:软件工程课程随笔|个人技能梳理、学习规划与AI生成学习指南分析
一、个人技能树梳理与自我评估
✅ 已经掌握的专业知识与能力
- C++与数据结构:掌握C++基础语法、面向对象编程;能够手写链表、栈、队列、二叉树、图等数据结构,实现排序、查找、最短路径等经典算法,分析算法时间、空间复杂度,完成大量课程算法练习。
- 计算机网络:理解OSI七层模型、TCP/IP四层体系;掌握TCP、UDP、HTTP、DNS等核心协议原理;熟悉IP、端口概念,可以独立排查网络请求超时、域名解析失败这类项目中遇到的网络问题。
- 计算机组成原理:理解计算机硬件体系结构,CPU、存储器、总线、指令系统等底层原理;了解存储层次结构、流水线,能够理解GPU加速AI推理的底层逻辑。
- Python开发:熟练使用Python编写各类脚本;掌握Flask Web后端框架,独立搭建Web服务,实现接口编写、请求接收与参数处理、Base64图像编解码,完成AI绘图网页项目;能够调用Hugging Face推理API,处理网络请求、异常捕获、超时等问题。
- 基础工程工具:熟练使用VS Code编写调试代码;掌握Git基础操作,可以创建GitHub仓库、提交管理代码,搭建GitHub个人主页;能够阅读官方API文档,定位、调试代码错误。
🧩 感兴趣的技术方向
- 大模型应用开发:基于AI模型开发Web应用,如本次完成的AI图像生成网页工具。
- Web后端开发:深耕后端接口设计、服务开发,学习高可用服务设计思想。
- 计算机底层系统方向:操作系统、高性能程序开发,研究软件与硬件交互逻辑。
❌ 目前欠缺的能力
- 软件工程规范化能力:缺少完整软件项目开发流程实战经验,不熟悉需求分析、UML建模、单元测试、标准化项目文档撰写。写代码优先保证功能跑通,缺少规范注释、模块化解耦、代码重构意识。
- 前端开发能力薄弱:仅能读懂基础HTML,不熟悉CSS、JavaScript,无法独立开发交互丰富、美观的前端页面。
- 数据库技术:没有系统学习MySQL等关系型数据库,项目无法实现数据持久化存储,只能临时在内存或者文件中保存数据。
- 大型项目架构与团队协作:仅独立开发过小Demo项目,缺少大型项目模块拆分、代码解耦经验;没有真实团队协同开发、代码评审、多分支管理的实战经历。
- 软件测试能力:几乎没有编写单元测试、集成测试的经验,缺少主动设计测试用例、提前发现软件缺陷的思维习惯。
二、代码量统计与本学期目标代码量
- 截至目前已完成代码量
C++(数据结构算法习题)、Python(脚本+Flask项目)、HTML代码合计约 3200行。包含大量数据结构手写算法练习、Flask AI绘图网页项目、课程基础代码实验。 - 本学期课程结束希望达到代码量
累计达到 4500行。新增代码来自软件工程课程作业、UML配套实践、单元测试代码编写、AI绘图项目迭代优化。
三、本课程最期待学习的知识与希望收获
最期待学习的知识
- 完整软件工程开发全流程:需求分析、用例建模、系统概要设计、详细设计、软件迭代与后期维护。
- UML建模:掌握用例图、类图、时序图等建模方法,学会用图形化方式抽象描述软件系统。
- 软件测试理论与实践:单元测试、集成测试,学习如何设计测试用例,降低程序缺陷。
- 团队项目管理:多人协作开发流程、Git团队分支管理规范、项目风险识别与评估。
希望获得的收获
跳出单纯“写代码实现功能”的思维,建立工程化思维。不再只追求程序能够运行,学会站在软件生命周期角度,从需求、设计、编码、测试、文档完整开发软件。能够独立完成标准化小型软件项目,掌握项目文档撰写能力,为后续后端、AI应用类项目开发打下扎实基础。
四、AI生成《软件工程课程学习指南》+ 合理性分析
选用AI工具:DeepSeek
提示词:帮我生成一份简要的软件工程课程学习指南,面向计算机专业本科生,分阶段规划学习,包含学习重点、练习任务。
AI输出:软件工程课程学习指南
软件工程课程学习指南
一、前期基础阶段(1~4周)
学习重点:理解软件工程基本概念,区分软件危机、软件生命周期;掌握需求分析方法,学会识别用户需求,区分功能需求与非功能需求。
练习任务:挑选一个小型软件场景(例如AI绘图网页),撰写一份简单的需求说明书,列出用户目标、功能清单。二、建模与设计阶段(5~9周)
学习重点:学习UML图,包括用例图、类图、时序图;掌握软件架构基础,理解模块化、高内聚低耦合设计原则。
练习任务:为自己的项目绘制用例图与类图,完成系统概要设计文档。三、开发与测试阶段(10~13周)
学习重点:掌握软件测试分类:单元测试、集成测试;学习代码规范、版本控制Git协作。了解软件质量评估指标。
练习任务:为项目核心模块编写单元测试,完善代码注释,多人模拟团队分支协作。四、项目管理与维护阶段(14~16周)
学习重点:项目进度管理、风险评估;软件维护分类,了解软件重构。
练习任务:完成项目总结报告,分析项目开发过程中遇到的风险,给出优化方案。学习建议:不要死记书本理论,一定要结合小型项目实践;每次学习知识点后立刻落地到自己的项目中,理论结合代码。
对这份指南的合理性分析
- ✅ 合理的地方
- 学习顺序贴合软件工程课程授课顺序,严格遵循软件生命周期:需求分析→建模设计→开发测试→项目维护,逻辑清晰。
- 强调理论结合项目实践,可以直接以我开发的AI绘图网页作为实践载体,把UML、测试、文档知识点落地到已有项目。
- 每个阶段配套可落地练习任务,不是空洞理论,覆盖课程核心考点:需求分析、UML建模、软件测试、Git协作、项目风险评估。
- ⚠️ 存在不足,有局限性
- 缺少原型设计相关内容,没有介绍原型工具与原型制作环节。
- 对多人团队开发冲突处理、分工管理描述较少,区分个人项目和团队项目的部分不足。
- 属于通用本科生学习路线,没有结合我的背景(掌握计网、计组、数据结构、Python/C++,做AI Web项目)做个性化定制,缺少AI类软件项目的软件工程特殊注意事项。
- 📌 对我个人的帮助
这份指南整体可用,可以作为本学期软件工程学习的参考大纲。我可以按照阶段规划,在现有的Flask AI绘图项目基础上,补全需求文档、UML图、单元测试。但不能完全照搬,需要自行补充原型设计、团队协作相关内容,结合课堂老师讲授内容调整学习节奏。

五、作业整体总结
本次软件工程课程作业一共完成三项实践任务:Hugging Face API图像生成网页开发、GitHub个人主页搭建、博客园技术随笔撰写。
在Hugging Face API项目实践中,我基于Flask搭建了简易Web前端交互页面,调用XLabs-AI/flux-RealismLora写实模型完成图像生成。整个过程不仅练习了Python后端接口开发、Base64图片传输、网络请求异常处理,还体会到提示词工程对AI生成效果的巨大影响。通过反复迭代提示词,学习使用摄影参数、光影、材质描述来提升图像真实感;同时也遇到海外API网络超时、模型冷启动缓慢、接口限流等工程问题,锻炼了问题排查能力。
搭建GitHub个人主页时,我以README文档的形式梳理个人技能、项目成果与三年发展规划。这迫使我客观复盘自身掌握的技术,正视能力短板,用标准化的Markdown文档对外展示个人项目,也初步熟悉了开源社区个人作品集的构建方式。
撰写博客园随笔是对本次实践与过往学习的一次系统性复盘。梳理技能树、统计代码量、使用AI生成软件工程学习指南并进行合理性分析,让我跳出单纯写代码的思维,开始站在软件工程的视角思考软件开发:软件开发不只是实现功能,还包含需求分析、系统设计、测试、文档编写与项目维护。
通过本次作业,我感受到理论和工程实践之间存在差距。过去写代码只追求程序跑通,而软件工程强调规范、文档、模块化与风险预判。后续我会继续在项目中践行软件工程思想,补全测试、文档、模块化设计等薄弱环节,持续积累项目经验,朝着既定的学习与发展目标稳步前进。
浙公网安备 33010602011771号