软件工程第一次作业
软件工程第一次个人作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/15712 |
| 这个作业的目标 | 掌握 Hugging Face API 调用、GitHub 个人主页搭建、Markdown 写作,梳理个人技能树与发展规划 |
| 学号 | 102401233 |
一、准备工作
- GitHub 账号:已完成注册并完善个人信息,头像、昵称、个人简介均已设置,账号地址:【 https://github.com/Zzl299 】
- 博客园账号:已完成注册并申请开通博客,设置了个人昵称与头像,编辑器已切换为 Markdown 模式
- 关注与班级加入:已关注任课老师与两位助教的博客,完成实名制加入 202601 软件工程班级博客
二、Hugging Face API 调用:Flux 真实感图像生成
2.1 账号与 Token 准备
我在 Hugging Face 官网注册账号并创建了用于本次作业的 Fine-grained Access Token。为了避免密钥泄露,我没有将 Token 写入前端代码或提交到 Git 仓库,而是保存在本地 .env 文件中,由后端服务读取调用。
2.2 项目实现思路
本项目采用 浏览器前端 → Node.js/Express 后端 → Hugging Face Inference API 的三层调用架构:
- 用户在前端输入提示词并点击「生成图像」按钮;
- 前端通过
fetch将提示词发送给后端的/api/generate接口; - 后端校验提示词合法性,使用服务器端保存的
HF_TOKEN调用XLabs-AI/flux-RealismLora模型; - 后端将生成的图片转换为 Base64 数据返回前端,前端负责图像展示与下载功能。
这种架构避免了 Token 暴露在浏览器端,同时便于统一处理参数校验、错误信息与请求日志。后端调用模型的核心代码如下:
const client = new InferenceClient(process.env.HF_TOKEN);
const image = await client.textToImage({
model: "XLabs-AI/flux-RealismLora",
provider: "fal-ai",
inputs: prompt,
parameters: {
num_inference_steps: 28,
guidance_scale: 7.5
}
});
2.3 API 调用成功记录
启动项目后,后端服务运行于 http://localhost:3000。终端日志显示模型为 XLabs-AI/flux-RealismLora、推理提供商为 fal-ai,并成功记录了两次生成请求,分别对应两版不同长度的提示词(76 字符与 166 字符)。

2.4 提示词设计思路与修改过程
第一版提示词(基础版)
A university student working on a software engineering project in a library.
这一版仅描述了核心人物与场景:一名大学生正在图书馆完成软件工程项目。模型能够生成主题相关的图像,但描述维度单一,人物动作、光线效果、画面氛围随机性较强,真实感与可控性有限。

第二版提示词(优化写实版)
A realistic photo of a university student working on a software engineering project in a bright library, natural window light, detailed desk, candid moment, 35mm lens.
在第二版中,我补充了多维度的写实增强描述:
realistic photo:明确写实摄影风格,锚定模型输出方向bright library:细化环境属性,明确明亮的图书馆场景natural window light:加入自然窗光,让光影更贴近真实世界detailed desk:丰富桌面细节,提升画面真实度candid moment:引导人物状态偏向自然抓拍,减少摆拍感35mm lens:模拟摄影镜头效果,强化照片质感
![image]()
迭代思路总结
本次提示词迭代遵循「基础场景描述 → 补充风格 / 光影 / 细节 / 镜头维度 → 提升图像真实感与可控性」的路径。我认识到,高质量的提示词不能只描述 “画什么”,更要描述 “画面应该如何呈现”,通过风格、光影、镜头等维度的补充,能帮助模型更精准地理解需求,输出更符合预期的写实图像。
2.5 调用体验与心得
这次实践让我完整经历了账号注册、Token 配置、接口文档阅读、前后端代码编写、返回结果处理、提示词迭代优化的全流程。我认识到,完成一个 AI 应用并不只是调用一次模型接口,还要综合考虑密钥安全、输入校验、错误处理与交互体验。
将 Token 保存在服务端环境变量中,能有效降低密钥泄露风险;在终端记录模型、提供商与请求时间,有助于确认调用状态、排查问题。通过这个小项目,我开始跳出 “只写代码片段” 的习惯,转向围绕一个完整需求,实现一个可运行、可验证、可说明的小型软件系统,也真切体会到大模型 API 为应用开发带来的效率提升。
三、GitHub 个人主页搭建
我选择个人资料自述文件(Profile README)方案,创建与 GitHub ID 同名的公共仓库,通过根目录的 README.md 展示个人信息。该方案操作简单、展示直接,符合基础的个人展示需求。

四、博客园随笔提交
关于当前技能树、技术偏好、自我评估、代码量、课程期待以及 AI 生成的软件工程学习指南等内容,我已经单独发布在博客园随笔中。
博客园随笔链接及截图如下:https://www.cnblogs.com/zzl299/p/22941435

后台博文编辑页面的截图如下:



浙公网安备 33010602011771号