软件工程课程第一次个人作业
| 这个作业属于哪个课程 | H202601软件工程与软件工程实践 |
|---|---|
| 这个作业要求在哪里 | 2026秋软件工程个人作业(第一次) |
| 这个作业的目标 | 1.准备工作,注册与完善博客园账号与GitHub账号,加入博客园班级。2.在hugging face官网注册个人账号并获取API,调用Flux模型交互生成一张最贴近真实世界的图像。3.在GitHub上完成个人主页建设。4.发一篇博客随笔,进行自我评估,代码量,希望学到的知识与收获以及ai生成学习指南。 |
| 学号 | 102402119 |
一、huggingface-API的调用
1.1 API 调用操作步骤
- 注册 Hugging Face 账号,进入个人设置页面生成只读权限 Access Token,复制保存 Token。
- 访问模型页面
XLabs-AI/flux-RealismLora,点击同意模型使用协议,获取模型访问权限。 - 运行程序:
python app.py,启动 Flask 后端服务,访问浏览器地址http://127.0.0.1:5000。 - 在网页提示词输入框填入英文提示词,点击【点击生成图片】,前端发送 POST 请求到后端接口
/api/generate。 - 后端接收提示词,调用 fal-ai 服务商的 Flux 模型 API,远程生成图片,将图片转为 base64 编码返回前端页面展示。
1.2 提示词设计思路与修改过程
最终使用提示词
photorealistic photo, quiet city street at sunrise, soft natural golden sunlight, realistic texture, depth of field, shot on Sony A7M4, 8k, hyper detailed, lifelike
设计思路
作业要求生成贴近真实世界的图像,所以提示词采用写实摄影的描述逻辑,分 4 个层次设计:
- 定义图像类型:
photorealistic photo,指定生成真实照片,而不是动漫、绘画、CG 图,锁定写实风格。 - 定义场景与时间:
quiet city street at sunrise,确定画面主体:日出时分安静的城市街道,明确画面内容。 - 光影与摄影效果:
soft natural golden sunlight, realistic texture, depth of field,描述日出金色柔光、真实材质纹理、景深虚化效果,模拟真实相机拍摄的光学效果。 - 画质与相机参数:
shot on Sony A7M4, 8k, hyper detailed, lifelike,指定相机型号、8K 分辨率、超高细节,强化照片真实感。
修改过程
- 初稿:只简单写
city street, sunrise,画面内容模糊,生成图片细节差、氛围感弱。 - 第二版:增加风格词
photorealistic,补充光影描述,图片开始偏向照片,但缺少质感。 - 第三版:加入相机型号、8k、景深等摄影术语,图片真实度大幅提升。
1.3 程序与API 调用成功记录
后端核心代码:
点击查看代码
prompt = request.get_json().get("prompt", "")
image = client.text_to_image(
prompt=prompt,
model="XLabs-AI/flux-RealismLora",
width=1024,
height=1024,
num_inference_steps=28
)
buf = BytesIO()
image.save(buf, format="PNG")
b64_str = base64.b64encode(buf.getvalue()).decode("utf-8")
return jsonify({"image_base64": b64_str})
前端核心代码:
点击查看代码
const resp = await fetch("/api/generate", {
method:"POST",
headers:{"Content-Type":"application/json"},
body:JSON.stringify({prompt:document.getElementById("prompt").value})
})
const res = await resp.json();
imgEl.src = "data:image/png;base64," + res.image_base64;
imgEl.style.display = "block";
运行app.py启动 Flask 服务后,浏览器提交生成请求,终端打印日志:



1.4 调用体验与心得
- HuggingFace 提供的 API 可以直接调用云端大模型,本地不需要配置高性能显卡,普通电脑就能完成 AI 图像生成,降低使用门槛。
- 前后端分离交互方式:Flask 搭建后端接收前端网页请求,封装 API 调用逻辑;前端页面提供输入框与按钮,实现可视化交互,用户不用修改代码,直接在网页输入提示词生成图片。
- 提示词对生成结果影响极大,想要贴近真实世界的图片,需要加入摄影、光影、画质类描述词;同时要注意模型限制,Flux 模型不支持负面提示词,强行传入会引发异常。
二、Github个人主页搭建
2.1方案选择:
创建个人资料自述文件。新建一个名称与GitHub ID相同的仓库,在仓库根目录的README中撰写个人介绍,并将相关截图放入博客。
2.2主页:
- 自我介绍
- 成果、技能、自评
- 未来三年规划
![image]()
三、个人技能梳理与发展规划
1. 技能树与自我评估
- 已具备的专业知识与能力
- 能力 A:熟练使用 C++ 编写程序,能够实现各类基础及中等难度算法,拥有算法竞赛刷题经历,代码实现与调试能力较强。
- 能力 B:掌握常用数据结构与经典算法思想,能够针对算法问题设计思路并完成编码实现。
- 感兴趣的技术方向:机器学习、人工智能方向。
- 欠缺的能力:面对复杂业务场景,问题抽象、需求分析与建模能力不足;缺乏大型软件工程项目的架构设计与工程化开发经验。
2. 代码量说明
截至目前,累计手写代码约 40000 行,绝大部分为 C++ 算法竞赛习题代码。
完成本学期软件工程课程后,希望总代码量达到 45000 行,新增代码偏向工程化项目,补充工程类开发经验。
3. 本课程期待学习的知识与收获
最期待学习软件需求分析、系统建模、软件设计规范与版本管理相关知识。
希望收获:学会将现实需求抽象为软件模型,掌握完整软件开发流程,提升项目设计能力,弥补自身在问题分析与建模上的短板。
4. AI 生成软件工程学习指南 + 分析
使用 DeepSeek 生成的简要软件工程课程学习指南:
- 课前预习:提前阅读教材对应章节,了解 UML、需求工程等核心概念,标记疑问点。
- 课堂学习:重点跟随老师学习需求分析、系统建模、软件设计方法,积极参与课堂案例讨论。
- 课后实践:完成课程作业与小组项目,练习绘制用例图、类图,使用 Git 管理项目版本。
- 复盘总结:项目结束后复盘缺陷,学习代码规范,体会工程化开发与单纯写算法的区别。
- 拓展阅读:查阅真实开源项目,学习大型软件的架构设计思想。
合理性与帮助分析
这份指南整体合理。它兼顾理论学习与项目实践,强调建模、UML、版本控制,正好可以弥补我在需求分析、建模方面的短板。但内容偏向通用学习路线,没有针对算法背景学习者做专门调整。对我而言,最重要的启发是:软件开发不等于写算法,要重视需求抽象与前期建模,跳出只关注代码实现的思维定式。

浙公网安备 33010602011771号