AIGC标识 102401504|第一次软件工程作业

这个作业属于哪个课程 202601 软件工程
这个作业要求在哪里 2026 秋软件工程个人作业(第一次)
这个作业的目标 完成个人主页和技术博客的准备;把指定模型的图像生成调用接入带输入界面的页面;用可复查的文字、代码和图片记录过程,并梳理自己的学习起点。
学号 102401504

第一次软件工程作业:把一次生成调用做成可记录的小页面

说明:文中“软件工程学习指南”由 ChatGPT 按题目要求生成;其余内容依据本次实际实现、运行记录和个人学习计划整理,并已在发布设置中声明 AI 辅助。

1. 本次实现概览

我没有把模型调用停在一个只能在终端运行的脚本上,而是完成了一个名为 Campus Prompt Lab(校园影像提示词实验室) 的小型本地 Web 页面。页面把“想生成一张校园图”的描述拆成五个可调项:主体与地点、天气、光线、镜头视角和补充细节;后端再组织提示词,并调用课程指定模型 XLabs-AI/flux-RealismLora。

GitHub 个人主页:https://github.com/Machenxii

1.1 实现结构

  • 前端:HTML、CSS 和 JavaScript 收集五个场景字段,发起 fetch 请求,并显示图片或可理解的错误信息。
  • 后端:Python + Flask 提供 /api/generate,使用 huggingface_hub.InferenceClient 调用模型。
  • 配置:令牌只保存在本机 .env,源码库只保留 .env.example;不会把 Token 粘贴到博文、代码或截图中。
  • 保存:服务端将成功生成的 PNG 保存到 generated/,首页会显示最近一次成功结果。

核心调用代码如下(省略页面路由和输入校验):

client = InferenceClient(api_key=TOKEN, provider="auto", timeout=180)
image = client.text_to_image(prompt=prompt, model="XLabs-AI/flux-RealismLora")
image.save(output_path, format="PNG")

1.2 提示词的设计和修改过程

我的目标不是做一张带醒目地标的宣传海报,而是一张接近日常通行视角的校园雨后照片。因此没有只写“beautiful campus”,而是按层次补全信息。

层次 最终采用的内容 作用
场景主体 a quiet university bicycle lane in Fuzhou 固定“校园道路 + 自行车”的主要对象
天气 after a light rain 让路面湿润、空气带有雨后感
光线 soft overcast daylight 避免夜景霓虹和过强反光,更接近真实阴天
镜头 eye-level documentary photograph 用平视纪实风格约束画面,避免变成俯拍插画
真实性 photorealistic documentary photography 等描述 强化真实质感与比例
负向细节 no text 尽量避免画面出现难以辨认的伪文字

最终送出的提示词:

a quiet university bicycle lane in Fuzhou, after a light rain,
soft overcast daylight, eye-level documentary photograph,
photorealistic documentary photography, natural materials,
realistic scale, sharp focus, high detail, wet stone pavement,
leafy trees, no text

我先在界面中保留“暖色路灯反射”的选项,后来发现它会让雨后场景偏向夜景;最终成功调用时改为阴天自然光,使画面更符合“日常校园”的目标。这个调整让我意识到,提示词修改不是不断堆形容词,而是在每次结果后判断哪一个限制条件没有生效。

1.3 成功记录与生成结果

下面是本次后端接口实际成功返回的关键信息(Token 已省略):

POST /api/generate
HTTP status: 200
saved file: campus-20260911-214320.png
response image: data:image/png;base64,...

前端页面最终展示的真实生成图如下:

Campus Prompt Lab 的真实生成结果

1.4 过程中的问题与体验

第一次请求时,服务端返回了 Pillow 缺失的提示;我将它补到 requirements.txt 后重新运行,接口得到 HTTP 200 并保存了图像。随后为了测试前端错误反馈再次点击生成,免费推理额度耗尽,页面如实提示“免费推理额度已用尽”,没有继续产生付费调用。

这段经历给我的两点提醒是:

  1. “能请求到模型”不代表应用完整可用,图片解码、异常分类和结果保存都属于交互链路的一部分。
  2. 密钥权限要最小化,错误信息要给用户下一步,而不是只显示一串异常堆栈;同时也不能用伪造截图掩盖额度限制。

2. GitHub 个人主页

我选择“个人资料 README”方案,新建了与 GitHub ID 相同的公开仓库 Machenxii/Machenxii。主页中记录了目前的有效手写代码量、Campus Prompt Lab 的实践方向、2000 行到 6000 行的计划、课程期待和三年规划。

主页链接:https://github.com/Machenxii/Machenxii

3. 当前技能树与自我评估

已有基础

能力 当前状态 下一步需要补的部分
C++ 基础编程 能用于课程练习,理解基本控制流、函数和常见数据结构的使用。 把“做出答案”的过程整理成可测试、可解释的小模块。
问题定位 遇到运行失败时会从报错和依赖关系入手,例如本次定位到图片解码库缺失。 学习写最小复现和测试用例,而不是只靠反复修改。
Git 入门 已建立 GitHub 个人主页并用提交记录保存资料更新。 熟悉分支、Issue、代码评审和协作规范。
Python Web 初步实践 本次接触 Flask、JSON 接口、环境变量和前端 fetch。 理解 HTTP 状态码、接口边界、部署和安全配置。

技术偏好与短板

我目前更愿意从“用户能直接看到的小工具”开始学习,因此对前端交互、Web 接口和 AI 能力接入有兴趣。但这次项目也暴露出明显短板:需求还没有被系统化地写成验收标准,设计前缺少 UML 表达,测试覆盖也不足。相比继续堆功能,我更需要学习如何确定边界、安排迭代、记录风险和验证结果。

4. 代码量目标

截至目前,我估计累计手写有效代码约 2000 行。统计时不把框架依赖、自动生成文件和直接复制的代码算入。学期结束前的目标是 6000 行

为避免只追求数字,我准备按周记录三类内容:课程练习、独立小功能、为已有项目做的修复或测试;每周附上一条“本周哪一处比上周更可维护”的说明。目标不只是多写 4000 行,更是让新增代码有清晰的来源和用途。

5. 对软件工程课程的期待

我最期待建立一套能用于实际选择的思考框架:需求不清楚时如何澄清、功能变化时何时适合迭代、怎样用 UML 让他人看懂设计、有限时间内怎样选择测试重点。我希望学期结束时能独立交付一个带需求说明、设计记录、测试证据和复盘内容的小项目,而不是只留下一个能运行的压缩包。

6. 使用 ChatGPT 生成的软件工程学习指南

我选择的 AI 工具是 ChatGPT。我给出的任务是:“为一名以 C++ 课程练习为基础、刚开始接触 Web 项目的大三学生,生成一份 8 周软件工程入门学习指南;每周要有产出物,不要只列概念。”生成的简要指南如下:

  1. 第 1 周:读一个小项目的需求,把模糊说法改成可验收的用户故事和验收条件。
  2. 第 2 周:为项目画用例图和主要流程图,标出输入、输出、异常路径。
  3. 第 3 周:选择瀑布、迭代或 Scrum 中更合适的节奏,并写出选择理由和风险。
  4. 第 4 周:拆分模块,写清每个模块的职责、依赖与接口。
  5. 第 5 周:实现一个最小可运行版本,使用 Git 提交保留每一阶段。
  6. 第 6 周:为主要流程设计正常、边界和错误三类测试,记录实际结果。
  7. 第 7 周:根据测试或同学反馈完成一次小迭代,说明修改了什么、为什么修改。
  8. 第 8 周:写项目复盘:目标是否达成、工时偏差、风险、下一次会如何安排。

对这份指南的判断

这份指南的优点是每周都有可见产物,避免把软件工程理解为只背生命周期名词;它能直接对应本次作业中“接口、过程记录、截图和自我评估”的要求。它的不足是没有给出具体项目规模和每周时间预算,照搬会造成计划过满。对我来说,更合理的执行方式是先用 Campus Prompt Lab 这样的单人小项目跑完一遍,再根据课程任务把用例图、测试记录和复盘逐步补齐。

7. Markdown 编辑说明

本篇文章使用博客园 Markdown 编辑器编写。图片由编辑器的“上传图片”功能插入;图片内容是本次接口成功调用后保存的真实结果。文中没有记录 Token、密码或其他敏感信息。

8. 小结

这次作业让我第一次把“调用一个模型”扩展为一条完整链路:界面输入、提示词组织、服务端调用、图像保存、异常提示和过程记录。后续我会继续补齐需求、设计和测试这些在本次实现里仍然薄弱的部分,用 2000 到 6000 行的过程验证自己是否真的在进步。

posted @ 2026-09-11 22:56  MaChenxi  阅读(13)  评论(0)    收藏  举报