软件工程第一次作业
软件工程第一次作业
这个作业属于哪个课程: H202601软件工程与软件工程实践 这个作业要求在哪里: 2026秋软件工程个人作业(第一次) 这个作业的目标: 掌握 HuggingFace 推理 API 的调用,用 Flux 模型实现交互式图像生成;搭建 GitHub 个人主页;梳理技能树、学习目标,并分析与 AI 工具的结合。 学号: 102402134
1. HuggingFace API 的调用
对应作业要求 1:注册账号获取 API,调用 Flux 模型生成最贴近真实世界的图像;结合前端接口实现交互生成;展示 API 调用成功记录与前端生成图像截图;说明提示词设计思路与修改过程;记录操作步骤并总结体验心得。
1.1 注册与获取 Token
在 Hugging Face 官网注册账号,进入 Settings → Access Tokens 创建 Token,并在代码中通过环境变量 HF_TOKEN 传入,避免硬编码导致泄露。
1.2 后端代码(调用模型)
使用 Python(FastAPI)作为后端,调用 XLabs-AI/flux-RealismLora 模型。代码如下:
import os, io, base64
from fastapi import FastAPI
from pydantic import BaseModel
from huggingface_hub import InferenceClient
HF_TOKEN = os.environ.get("HF_TOKEN", "").strip()
HF_MODEL = "XLabs-AI/flux-RealismLora"
client = InferenceClient(model=HF_MODEL, token=HF_TOKEN)
app = FastAPI()
class GenerateRequest(BaseModel):
prompt: str
width: int = 768
height: int = 768
@app.post("/generate")
def generate(req: GenerateRequest):
image = client.text_to_image(req.prompt, width=req.width, height=req.height)
buf = io.BytesIO()
image.save(buf, format="PNG")
return {"ok": True, "image_base64": base64.b64encode(buf.getvalue()).decode("utf-8")}
1.3 前端交互(结合前端接口)
前端用 HTML + JS 实现输入提示词、点击生成、展示结果:
<script>
async function generate() {
const prompt = document.getElementById('prompt').value;
const res = await fetch('/generate', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({prompt})
});
const data = await res.json();
const img = document.getElementById('result');
img.src = 'data:image/png;base64,' + data.image_base64;
img.style.display = 'block';
}
</script>
1.4 提示词设计思路与修改过程
为生成最贴近真实世界的图像,我逐步完善提示词:
-
初版:
a portrait of a young woman,人物清晰但质感平淡、光影缺失,真实感不足。 -
改进版:加入写实、光线、纹理与摄影参数,最终采用:
A hyper-realistic portrait of a young woman, detailed skin texture, natural morning light, cinematic lighting, shallow depth of field通过补充光线(morning light / cinematic lighting)、皮肤纹理(skin texture)、景深(shallow depth of field)等关键词,生成图像的真实感显著提升,达到贴近真实世界的写实效果。
1.5 API 调用成功记录与前端生成图像
API 调用成功记录:
前端最终生成图像:
1.6 操作步骤与体验心得
操作步骤:
- 注册 Hugging Face 账号,创建 Access Token。
- 安装依赖(
fastapi、uvicorn、huggingface_hub)。 - 设置环境变量
HF_TOKEN。 - 编写后端接口
/generate,调用模型生成图像并返回 base64。 - 编写前端页面,提交提示词并展示图像。
- 启动服务,在浏览器访问并生成图像。
体验与心得:
实践让我体会到 Prompt Engineering(提示词工程)的重要性:模型能力很强,但需要精准的指令才能产出高质量结果。写实类模型对光线、纹理、摄影术语尤为敏感。同时,前后端交互、base64 图像传输、以及 Serverless 推理的冷启动等待,都是本次需要处理的难点。
2. GitHub 个人主页搭建
对应作业要求 2:在 GitHub 上完成个人主页建设,本项目选择方案一(创建与 GitHub ID 同名的仓库,在根目录 README 撰写个人介绍),并包含自我介绍、个人成果与技能评估、未来三年发展规划。
2.1 实现方案
采用方案一:创建与 GitHub 用户名 wlangleah-maker 同名的仓库,并在仓库根目录的 README.md 中撰写个人介绍,作为个人主页展示。
2.2 个人主页内容与技能评估
- 自我介绍:王世豪,福州大学计算机与大数据学院,数据科学与大数据技术专业(24 级 1 班),学号 102402134;爱好听音乐。
- 掌握技能:Python(较熟练)、C 语言、Java、HTML/CSS 网页布局基础。
- 感兴趣方向:人工智能 / 机器学习、数据分析、软件开发。
- 未来三年发展规划:近期系统学习《软件工程》课程,补足需求分析、设计、版本管理与协作等工程能力;准备考研,继续深耕人工智能方向,通过课程项目积累实践经验。
3. 博客园随笔:技能梳理与学习规划
对应作业要求 3:梳理技能树与技术偏好并自我评估;说明目前代码量与学期目标代码量;写出最期待学习的知识与希望收获;选一个 AI 工具生成软件工程学习指南并分析。
3.1 技能树与技术偏好自我评估(能力 A / B / C 分级)
| 能力 | 具体内容 | 等级 |
|---|---|---|
| Python | 基本语法、数据处理、调用 AI API | 较熟练(A) |
| C 语言 | 语法、指针、数据结构基础 | 掌握(B) |
| Java | 面向对象基础,简单应用 | 掌握(B) |
| 机器学习入门 | 基础概念与模型初步认识 | 入门(B-) |
| 工程化能力 | 需求分析、设计、测试、协作 | 薄弱(C) |
目前最欠缺的是完整的工程化思维与协作能力,这也是本课程最需要补足的部分。
3.2 代码量统计与目标
- 截至目前的代码量:约 8000 ~ 15000 行(含课程作业与练习)。
- 学完本课程后目标:提升到约 30000 行有效代码,并通过课程项目锻炼工程规范与协作能力。
3.3 本课程最期待学习的知识与期望收获
- 最期待学习:完整的软件开发流程、软件需求分析。
- 期望收获:从"能写代码"提升到"能规范地完成一个项目";掌握 Git/GitHub 协作、测试与文档能力,为将来在 AI 方向深造打基础。
3.4 用 AI 工具生成软件工程学习指南并分析
我使用 DeepSeek 生成了一份学习指南:
DeepSeek 建议:
- 先建立软件工程整体视角,理解需求、设计、实现、测试、交付的完整生命周期。
- 重视需求分析,把想法转化为可验证、有优先级的需求。
- 学习面向对象设计与常见设计模式,理解分层、模块化。
- 尽早动手实践并引入 Git 做版本管理,练习分支、提交规范与代码审查。
- 重视测试与代码质量,区分单元 / 集成 / 系统测试。
- 把 AI 当作"高效助手",核心架构与需求判断由自己完成。
分析:
该指南务实且具备可操作性。尤其"动手实践 + 版本管理"和"把 AI 当助手而非答案"两点,切中了我目前工程能力薄弱的短板。我会把"建立整体视角、以项目为主线"纳入学习计划,边学边做,避免停留在概念层面。
4. 作业要求(Markdown 编写与后台截图)
对应作业要求 4:使用 Markdown 编写作业;在博文中附加后台博文编辑页面的截图(编辑器需切换为 Markdown);本次及之后每次作业随笔最前面加上固定表格。
- 本随笔即使用 Markdown 编辑,无需额外说明。
- 已在文章最前部加入固定表格(见开头)。
- 后台博文编辑页面截图如下:
本报告为《软件工程》第一次个人作业的记录。




浙公网安备 33010602011771号