软件工程第一次作业

软件工程第一次个人作业

这个作业属于哪个课程 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 的三层调用架构:

  1. 用户在前端输入提示词并点击「生成图像」按钮;
  2. 前端通过 fetch 将提示词发送给后端的 /api/generate 接口;
  3. 后端校验提示词合法性,使用服务器端保存的 HF_TOKEN 调用 XLabs-AI/flux-RealismLora 模型;
  4. 后端将生成的图片转换为 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 字符)。
image

2.4 提示词设计思路与修改过程

第一版提示词(基础版)

A university student working on a software engineering project in a library.

这一版仅描述了核心人物与场景:一名大学生正在图书馆完成软件工程项目。模型能够生成主题相关的图像,但描述维度单一,人物动作、光线效果、画面氛围随机性较强,真实感与可控性有限。
image

第二版提示词(优化写实版)

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 展示个人信息。该方案操作简单、展示直接,符合基础的个人展示需求。
a3aded8c44641ff2ba155ab328d157c4

四、博客园随笔提交

关于当前技能树、技术偏好、自我评估、代码量、课程期待以及 AI 生成的软件工程学习指南等内容,我已经单独发布在博客园随笔中。

博客园随笔链接及截图如下:https://www.cnblogs.com/zzl299/p/22941435
b6ebe5649ccd63a05764602cfb7986dd

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

posted @ 2026-09-11 23:57  槑孖  阅读(4)  评论(0)    收藏  举报