软件工程第一次作业

软件工程第一次作业

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

1. HuggingFace API 的调用

对应作业要求 1:注册账号获取 API,调用 Flux 模型生成最贴近真实世界的图像;结合前端接口实现交互生成;展示 API 调用成功记录与前端生成图像截图;说明提示词设计思路与修改过程;记录操作步骤并总结体验心得。

1.1 注册与获取 Token

在 Hugging Face 官网注册账号,进入 Settings → Access Tokens 创建 Token,并在代码中通过环境变量 HF_TOKEN 传入,避免硬编码导致泄露。

1.2 后端代码(调用模型)

使用 Python(FastAPI)作为后端,调用 XLabs-AI/flux-RealismLora 模型。代码如下:

import os, io, base64
from fastapi import FastAPI
from pydantic import BaseModel
from huggingface_hub import InferenceClient

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

app = FastAPI()

class GenerateRequest(BaseModel):
    prompt: str
    width: int = 768
    height: int = 768

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

1.3 前端交互(结合前端接口)

前端用 HTML + JS 实现输入提示词、点击生成、展示结果:

<script>
  async function generate() {
    const prompt = document.getElementById('prompt').value;
    const res = await fetch('/generate', {
      method: 'POST',
      headers: {'Content-Type': 'application/json'},
      body: JSON.stringify({prompt})
    });
    const data = await res.json();
    const img = document.getElementById('result');
    img.src = 'data:image/png;base64,' + data.image_base64;
    img.style.display = 'block';
  }
</script>

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

为生成最贴近真实世界的图像,我逐步完善提示词:

  • 初版a portrait of a young woman,人物清晰但质感平淡、光影缺失,真实感不足。

  • 改进版:加入写实、光线、纹理与摄影参数,最终采用:

    A hyper-realistic portrait of a young woman, detailed skin texture, natural morning light, cinematic lighting, shallow depth of field

    通过补充光线(morning light / cinematic lighting)、皮肤纹理(skin texture)、景深(shallow depth of field)等关键词,生成图像的真实感显著提升,达到贴近真实世界的写实效果。

1.5 API 调用成功记录与前端生成图像

API 调用成功记录:

2173b5ad3a813de1d5f8d8c1c1953aa6

前端最终生成图像:

1940d26fea137df7d33963fa1b6f005d

1.6 操作步骤与体验心得

操作步骤:

  1. 注册 Hugging Face 账号,创建 Access Token。
  2. 安装依赖(fastapiuvicornhuggingface_hub)。
  3. 设置环境变量 HF_TOKEN
  4. 编写后端接口 /generate,调用模型生成图像并返回 base64。
  5. 编写前端页面,提交提示词并展示图像。
  6. 启动服务,在浏览器访问并生成图像。

体验与心得:
实践让我体会到 Prompt Engineering(提示词工程)的重要性:模型能力很强,但需要精准的指令才能产出高质量结果。写实类模型对光线、纹理、摄影术语尤为敏感。同时,前后端交互、base64 图像传输、以及 Serverless 推理的冷启动等待,都是本次需要处理的难点。


2. GitHub 个人主页搭建

对应作业要求 2:在 GitHub 上完成个人主页建设,本项目选择方案一(创建与 GitHub ID 同名的仓库,在根目录 README 撰写个人介绍),并包含自我介绍、个人成果与技能评估、未来三年发展规划。

2.1 实现方案

采用方案一:创建与 GitHub 用户名 wlangleah-maker 同名的仓库,并在仓库根目录的 README.md 中撰写个人介绍,作为个人主页展示。

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

  • 自我介绍:王世豪,福州大学计算机与大数据学院,数据科学与大数据技术专业(24 级 1 班),学号 102402134;爱好听音乐。
  • 掌握技能:Python(较熟练)、C 语言、Java、HTML/CSS 网页布局基础。
  • 感兴趣方向:人工智能 / 机器学习、数据分析、软件开发。
  • 未来三年发展规划:近期系统学习《软件工程》课程,补足需求分析、设计、版本管理与协作等工程能力;准备考研,继续深耕人工智能方向,通过课程项目积累实践经验。

f61b079cf434e7e10b4c9ae7e0e9e51c


3. 博客园随笔:技能梳理与学习规划

对应作业要求 3:梳理技能树与技术偏好并自我评估;说明目前代码量与学期目标代码量;写出最期待学习的知识与希望收获;选一个 AI 工具生成软件工程学习指南并分析。

3.1 技能树与技术偏好自我评估(能力 A / B / C 分级)

能力 具体内容 等级
Python 基本语法、数据处理、调用 AI API 较熟练(A)
C 语言 语法、指针、数据结构基础 掌握(B)
Java 面向对象基础,简单应用 掌握(B)
机器学习入门 基础概念与模型初步认识 入门(B-)
工程化能力 需求分析、设计、测试、协作 薄弱(C)

目前最欠缺的是完整的工程化思维与协作能力,这也是本课程最需要补足的部分。

3.2 代码量统计与目标

  • 截至目前的代码量:约 8000 ~ 15000 行(含课程作业与练习)。
  • 学完本课程后目标:提升到约 30000 行有效代码,并通过课程项目锻炼工程规范与协作能力。

3.3 本课程最期待学习的知识与期望收获

  • 最期待学习:完整的软件开发流程、软件需求分析。
  • 期望收获:从"能写代码"提升到"能规范地完成一个项目";掌握 Git/GitHub 协作、测试与文档能力,为将来在 AI 方向深造打基础。

3.4 用 AI 工具生成软件工程学习指南并分析

我使用 DeepSeek 生成了一份学习指南:

DeepSeek 建议:

  1. 先建立软件工程整体视角,理解需求、设计、实现、测试、交付的完整生命周期。
  2. 重视需求分析,把想法转化为可验证、有优先级的需求。
  3. 学习面向对象设计与常见设计模式,理解分层、模块化。
  4. 尽早动手实践并引入 Git 做版本管理,练习分支、提交规范与代码审查。
  5. 重视测试与代码质量,区分单元 / 集成 / 系统测试。
  6. 把 AI 当作"高效助手",核心架构与需求判断由自己完成。

分析:
该指南务实且具备可操作性。尤其"动手实践 + 版本管理"和"把 AI 当助手而非答案"两点,切中了我目前工程能力薄弱的短板。我会把"建立整体视角、以项目为主线"纳入学习计划,边学边做,避免停留在概念层面。


4. 作业要求(Markdown 编写与后台截图)

对应作业要求 4:使用 Markdown 编写作业;在博文中附加后台博文编辑页面的截图(编辑器需切换为 Markdown);本次及之后每次作业随笔最前面加上固定表格。

  • 本随笔即使用 Markdown 编辑,无需额外说明。
  • 已在文章最前部加入固定表格(见开头)。
  • 后台博文编辑页面截图如下:

1f6071daee656135e3929e08bf3289c7


本报告为《软件工程》第一次个人作业的记录。

posted @ 2026-09-08 21:32  Langleah  阅读(9)  评论(0)    收藏  举报