软件工程第一次作业

软件工程第一次作业

这个作业属于哪个课程: H202601软件工程与软件工程实践
这个作业要求在哪里: 2026秋软件工程个人作业(第一次)
这个作业的目标: 掌握 HuggingFace 推理 API 的调用,用 Flux 模型实现交互式图像生成;搭建 GitHub 个人主页;梳理技能树、学习目标,并分析与 AI 工具的结合。
学号: 102401433

1. HuggingFace API 的调用

本次作业要求注册 HuggingFace 账号、获取 Token,调用 Flux 写实模型完成真实图像生成,结合前后端实现交互式生图页面,记录提示词优化过程、接口调用过程并总结实验心得。本次我以雨后大学校园石板路为生成主题,完成写实风格 AI 图像生成。

1.1 注册与获取 Token

首先注册 HuggingFace 官网账号,进入 Settings → Access Tokens 创建 read 权限密钥。

1.2 后端代码(调用模型)

本次采用 FastAPI 搭建后端服务,使用 huggingface_hub 官方推理客户端,调用 XLabs-AI/flux-RealismLora 写实模型,接收前端传入的正负提示词,生成图像并以 Base64 格式返回前端展示。

import os
import io
import base64
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
from pydantic import BaseModel
from huggingface_hub import InferenceClient

app = FastAPI()

HF_TOKEN = os.environ.get("HF_TOKEN", "").strip()
MODEL_NAME = "XLabs-AI/flux-RealismLora"
client = InferenceClient(model=MODEL_NAME, token=HF_TOKEN)

class GenerateRequest(BaseModel):
    prompt: str
    negative_prompt: str = ""

@app.get("/", response_class=HTMLResponse)
def index():
    return """此处为前端HTML代码"""

@app.post("/generate")
def generate(req: GenerateRequest):
    try:
        image = client.text_to_image(
            prompt=req.prompt,
            negative_prompt=req.negative_prompt,
            width=768,
            height=768
        )
        buf = io.BytesIO()
        image.save(buf, format="PNG")
        image_base64 = base64.b64encode(buf.getvalue()).decode("utf-8")
        return {"ok": True, "image_base64": image_base64}
    except Exception as e:
        return {"ok": False, "error": str(e)}

1.3 前端交互实现

前端使用原生 HTML+JS 实现交互页面,提供正向提示词、负面提示词输入框,点击生成按钮向后端 /generate 接口发送 JSON 请求,接收 Base64 图像并实时渲染展示,实现完整交互式 AI 生图效果。

1.4 提示词设计思路与迭代过程

本次生成主题为雨后大学石板路写实场景,我对提示词进行了多次迭代优化:

初版提示词:仅简单描述场景stone slab road after rain in university,画面糊成一块,同时并非雨后,而是还在下雨的状态。

优化后最终提示词:补充摄影参数、环境氛围、雨后细节、光影质感。

正向提示词:

photograph of stone slab path in university campus after rain, wet gray stone pavement with water reflections, shallow puddles on ground, scattered fallen leaves, misty soft daylight, damp air, old campus trees on both sides, quiet atmosphere, subtle reflection of tree shadows on wet ground, realistic, cinematic soft lighting, 8k, high detail, depth of field, shot on Sony A7M4

负面提示词:

blurry, ugly, deformed, extra objects, crowd, trash, bright harsh flash, overexposed, dry ground, sunny without rain

通过增加雨后潮湿路面、水洼倒影、柔和天光、校园静谧氛围、摄影景深参数,成功生成贴近真实校园雨后场景的写实图片,同时通过负面词规避模糊、人群、强光、干燥地面等干扰元素。

1.5 API 调用成功记录与生成图像展示

服务启动后访问本地 8000 端口,输入优化后的提示词,点击生成图片,后端接口返回 200 OK,调用模型成功,顺利生成雨后大学石板路写实图片。

终端调用成功日志截图:

终端调用成功日志截图

前端页面与最终生成效果图:

生成图片1

1.6 操作步骤与体验心得

操作步骤:

1. 注册 HuggingFace 账号,创建 read 权限 Access Token;

2. 安装 fastapi、uvicorn、huggingface_hub、pillow 等依赖库;

3. 通过 PowerShell 设置 HF_TOKEN 环境变量与代理环境变量;

4. 编写 FastAPI 后端接口与前端交互页面,实现文生图功能;

5. 启动服务,输入自定义提示词,完成 AI 图像生成并截图留存。

体验与心得:

我深刻体会到提示词要写准的重要性,简单的场景描述无法产出高质量画面,即使是输入了一大堆提示词,效果也只是差强人意,在调用次数只有三次的现实因素限制下,这一点更是致命了。同时我掌握了环境变量配置、跨域前后端交互、AI 模型 API 调用的完整流程。在调用的过程中遇到的模型延迟 不响应 反复报错 不出图等事故锻炼了我的心态以及排错能力。

2. GitHub 个人主页搭建

2.1 实现方案

本次采用课程要求的方案一:创建与自己 GitHub 用户名完全同名的专属仓库,在仓库根目录编写 README.md 文件,内容自动渲染为 GitHub 个人主页。

2.2 个人主页内容与技能评估

我在 README 中完成了自我介绍、梳理自己掌握的能力、个人学习规划与未来发展方向,页面简洁清晰,符合学生技术主页风格。

GitHub 个人主页截图:

github个人主页

3. 技能树梳理、代码量与学习规划

3.1 技能树自我评估

能力 具体内容
Python 掌握基础语法、脚本编写、第三方库调用,在ai的辅助下尝试了简单后端接口开发与AI API调用
C语言 掌握基础语法、循环、分支、数组、基础数据结构
Web前端 掌握基础HTML、JS语法,可编写简单交互页面
软件工程能力 版本管理、项目规范、需求分析、测试、团队协作较为薄弱

目前我个人最大短板是工程化思维与规范化项目开发能力,只会实现功能,但缺少规范、文档、版本管理、迭代思维,这也是本学期软件工程课程重点补齐的内容。

3.2 代码量统计与学期目标

截至目前个人累计有效代码量约 3000 行

本学期课程目标:累计有效代码量提升至 5000 行,重点练习规范化项目开发、接口开发、版本控制与项目调试能力。

3.3 课程学习期待与收获规划

我最期待通过本课程学习完整软件开发生命周期、需求分析、项目设计、版本管理、软件测试、团队协作等工程化知识。我虽然知道怎么用代码实现简单的功能,却完全没有实际上手去合作做项目的经历,对如何搭建软件缺乏完整认知,希望能在本学期的学习中加深了解。

3.4 AI生成软件工程学习指南与分析

我使用AI工具生成了软件工程学习指南,内容如下:

1. 先建立完整软件生命周期认知:需求、设计、编码、测试、交付、运维;

2. 重视模块化、分层设计、代码规范,拒绝堆砌代码;

3. 熟练掌握Git版本管理,养成规范提交、分支管理的习惯;

4. 以项目驱动学习,在实践中理解架构、接口、调试、测试;

5. 合理利用AI作为辅助工具,辅助查错、优化代码、整理文档,不依赖AI直接生成成品。

个人分析:

这份学习指南非常贴合我目前的短板。我以往学习只注重功能实现,忽略规范与流程。指南中“项目驱动、重视工程规范、合理使用AI”三点对我帮助极大。未来我会以课程作业和课后项目为载体,刻意练习规范化开发、版本管理与文档撰写,把理论转化为实操能力。

4. 作业规范说明

本次随笔使用 Markdown 语法编写,文章头部已添加课程信息表格。

博客园Markdown编辑后台截图:

后台截图

本随笔为《软件工程》第一次个人作业完整记录。

posted @ 2026-09-10 23:06  uzk  阅读(9)  评论(0)    收藏  举报