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

软件工程课程第一次个人作业

这个作业属于哪个课程 202601 软件工程
这个作业要求在哪里 软件工程课程第一次个人作业
这个作业的目标 调用 Hugging Face API 完成图像生成,实现前端交互,并完成个人主页与学习情况总结
学号 102401421

一、Hugging Face API 的调用

本次作业使用 Hugging Face 提供的 Inference Providers,调用模型 XLabs-AI/flux-RealismLora 生成写实图像,并在 Python 调用成功后接入前端页面。

1. API 调用与前端实现

Python 中通过 InferenceClient 调用模型:

import os
from huggingface_hub import InferenceClient

client = InferenceClient(
    provider="fal-ai",
    api_key=os.environ["HF_TOKEN"],
)
image = client.text_to_image(
    prompt,
    model="XLabs-AI/flux-RealismLora",
)
image.save("output.png")

前端获取用户输入的 Prompt,并将其发送到本地接口:

const response = await fetch('/api/generate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ prompt })
});

const imageBlob = await response.blob();
resultImage.src = URL.createObjectURL(imageBlob);

API Token 保存在本地 .env 文件中,由 Python 服务读取,没有直接写入 HTML。

2. API 调用成功记录

首次运行 test_flux.py 后,程序成功返回图片并保存为 output.png。项目中保留的实际记录如下:

调用方式 模型 Provider 生成结果 记录时间或耗时
Python 独立调用 XLabs-AI/flux-RealismLora fal-ai output.png(1,278,182 字节) 2026-09-05 16:13:50
前端第 1 次调用 XLabs-AI/flux-RealismLora fal-ai generation_20260905_180710_489187.png 9.09 秒
前端第 2 次调用 XLabs-AI/flux-RealismLora fal-ai generation_20260905_180759_420286.png 10.08 秒

两次前端调用还被自动写入 generated/generation_log.jsonl。日志只会在模型成功返回图片后生成,因此保存的 PNG 文件和日志记录可以证明 API 已成功调用。三次调用对应的图片在下一节依次展示。

3. Prompt 设计与修改过程

我先将画面主题确定为“上海夜晚街道”,之后逐步加入雨后环境和纪实摄影要求,共展示三次生成结果。

第一次:确定基础场景

A realistic street in ShangHai at night

image

第一次只规定了地点、时间和写实风格。模型成功生成上海夜晚街景,但红色灯笼和招牌较突出,画面偏电影化,人物、天气和构图缺少控制。

第二次:补充环境与光线

第二次加入雨后湿润路面、店铺、少量行人、暖色灯光和蓝色夜间环境光,并强调 photorealistic

image

与第一次相比,第二张图的街道结构更完整,雨后反光和冷暖光线更加明显,行人数量也更自然;但镜头和色彩仍然具有较强的电影感。

第三次:控制镜头与构图

第三次继续增加平视纪实摄影、35 mm 镜头、中景人物、自然透视、平衡曝光和克制调色等要求。最终 Prompt 为:

An eye-level documentary photograph of a quiet street in Shanghai at night just after light rain. Wet pavement reflects warm storefront lights and street lamps, balanced by soft blue ambient night light. Weathered residential buildings and small local shops line both sides of the street. A few pedestrians in ordinary clothing walk naturally in the middle distance. Store signs remain small and softly out of focus. Shot with a 35mm lens, natural perspective, balanced exposure, realistic materials, subtle atmospheric haze, restrained color grading, photorealistic.

image

第三张图的街道纵深、人物位置和冷暖光线关系更加稳定,色彩也比第一次克制,因此被选为最终结果。图中个别招牌字符仍不完全真实,这反映了图像生成模型在文字细节方面的不足。

4. 前端最终生成结果

用户可以在页面中输入 Prompt,点击“生成图片”,随后查看并下载模型返回的图片。页面还会显示服务状态、生成耗时和最近生成记录。下图展示了第三次 Prompt 及其最终结果,历史记录中也保留了第二次和第三次生成。

image

5. 简要操作步骤

  1. Hugging Face 注册账号并创建 API Token。
  2. 将 Token 写入本地 .env 文件,运行 Python 代码验证 API 能够正常返回图片。
  3. 启动本地服务,在前端页面输入 Prompt 并点击生成。
  4. 根据生成效果修改 Prompt,保存最终结果和页面截图。

6. 使用体验与心得

这次尝试让我认识到,Prompt 越具体,模型对构图、光线和画面风格的控制通常越稳定。同时,Token 不应直接写入前端代码,而应由本地服务通过环境变量读取,以免泄露。

二、GitHub 个人主页搭建

本次我选择创建个人资料自述文件的方案,在与 GitHub ID 同名的仓库 SiJiu123 中,使用 Markdown 编写根目录下的 README.md,将个人介绍展示在 GitHub 个人资料页。

以下是个人资料页中 README 的展示截图:
image

三、随笔

3.1 当前技能与自我评估

  • 编程基础:基本掌握 C、C++ 的基础语法,接触过排序、搜索、贪心和动态规划等算法题,但理解还不够深入。能够看懂 Python 基础语法,使用过 NumPy、pandas 和 csv 进行数据处理。
  • 专业知识:学习过数据结构、计算机网络、计算机组成原理和离散数学,对基础知识有一定掌握。
  • 技术兴趣:对人工智能和机器学习方向比较感兴趣,希望进一步学习模型原理及其应用。
  • 能力不足:还没有独立完成过一个完整程序,缺少需求分析和项目整体设计的经验,将所学知识综合运用到实际开发中的能力还需要提高。

3.2 当前代码量与学期目标

目前编写的代码主要来自课程练习、算法题和数据处理脚本,尚未进行准确的行数统计。对于 AI 辅助生成的代码,我不会直接将其全部计入个人编写的代码量。

本学期希望在现有基础上新增约 5,000 行自己编写的代码。除了代码量,我更希望提高独立实现功能和调试的能力,并完成一个真正能用的软件。

3.3 对软件工程课程的期待

本课程中,我最期待学习需求分析和项目整体设计。我希望了解如何把一个比较模糊的想法整理成明确的功能需求,再将这些需求拆分并逐步实现。

过去的练习更多关注某一道题或者某一部分功能,这次希望能从整体上理解软件的开发过程,积累从想法、设计到实现和测试的完整经历。

3.4 AI 生成的软件工程课程学习指南

使用工具:GPT-6 Astra

以下为 GPT-6 Astra 根据我的学习基础生成的简要指南:

  1. 从需求分析开始
    选择一个具体问题,例如作业管理或个人记账。明确软件面向谁、需要解决什么问题,以及哪些功能必须完成。先写清楚使用流程,避免一开始就堆积功能。

  2. 学习项目整体设计
    将需求拆分为几个模块,明确每个模块负责什么、数据如何传递,以及需要保存哪些信息。先画出简单的流程图,再逐步落实到代码。

  3. 分阶段实现可用功能
    先完成最基本的使用流程,让软件能够运行并解决一个实际问题,再逐步补充功能。对不熟悉的知识按需学习,避免一次引入过多工具。

  4. 养成版本管理与测试习惯
    使用 Git 记录修改,每完成一个相对独立的功能就提交一次。除了正常输入,还要检查空输入、错误输入等情况,并记录发现的问题与修复方法。

  5. 合理使用 AI 辅助开发
    可以让 AI 帮助解释概念、分析报错或比较实现方案。使用生成的代码前,应理解主要逻辑,并通过运行和测试确认效果;关键功能尽量尝试独立实现。

  6. 通过复盘检验学习效果
    完成软件后,整理需求说明、使用方法和测试记录,回顾哪些设计有效、哪些地方返工较多。相比单纯增加代码量,更应关注自己能否解释、修改和维护完成的软件。

3.5 我对学习指南的分析

我认为这份学习指南比较合理,覆盖了从需求分析、整体设计到功能实现、测试和复盘的完整流程。对于还没有独立完成过完整程序的我来说,它能够帮助我理清开发步骤,减少一开始就直接写代码、后面再反复修改的情况。

其中,使用 Git 记录修改、检查异常输入和整理开发文档等建议,也能帮助我逐步养成良好的开发习惯。不过,指南整体上还是比较概括,实际学习时需要结合课程安排和具体任务进一步细化。

四、编辑后台截图

image

posted @ 2026-09-08 11:36  SiJiu0801  阅读(11)  评论(0)    收藏  举报