软件工程课程第一次作业

这个作业属于哪个课程 H202601软件工程与软件工程实践
这个作业要求在哪里 软件工程课程第一次个人作业
这个作业的目标 通过 Hugging Face API、GitHub 个人主页建设和博客园随笔实践,了解软件工程开发过程,提高 AI 工具使用、项目开发和软件工程实践能力。
学号 102402111

一、Hugging Face API 图片生成

本次实验使用 Hugging Face 提供的 API 调用 XLabs-AI/flux-RealismLora 模型,实现 AI 写实图片生成,并使用 Flask 搭建简单的前后端交互页面。

整个系统的基本流程为:

输入提示词
    ↓
前端发送请求
    ↓
Flask 后端接收
    ↓
调用 Hugging Face API
    ↓
生成图片
    ↓
保存图片
    ↓
前端显示生成结果

1. API 调用

首先在 Hugging Face 完成账号注册并获取 Access Token。我使用 .env 文件保存 Token。

HF_TOKEN=自己的Hugging Face Token

后端使用 huggingface_hub 中的 InferenceClient 调用模型:

from huggingface_hub import InferenceClient
from dotenv import load_dotenv
import os

load_dotenv()

HF_TOKEN = os.getenv("HF_TOKEN")

client = InferenceClient(
    provider="fal-ai",
    api_key=HF_TOKEN
)

MODEL_ID = "XLabs-AI/flux-RealismLora"

调用模型生成图片:

image = client.text_to_image(
    prompt=prompt,
    model=MODEL_ID
)

生成图片后保存到 Flask 的静态文件目录:

filename = f"{uuid.uuid4().hex}.png"
save_path = os.path.join(GENERATED_DIR, filename)

image.save(save_path)

2. 前后端交互

前端通过 JavaScript 的 fetch() 方法向 Flask 后端发送请求:

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

const data = await response.json();

if (data.success) {
    resultImage.src =
        data.image_url + "?t=" + new Date().getTime();
}

后端接收 Prompt 后调用 Hugging Face API,并将生成的图片保存下来,再将图片地址返回给前端。

这样就实现了:

用户输入 Prompt → Flask 后端 → Hugging Face API → 生成图片 → 前端展示

3. 图片生成提示词

最开始测试时,我使用了比较简单的提示词:

A woman.

图片生成结果截图:

为了让生成结果更加具体,我对提示词进行了修改,增加了人物、真实皮肤纹理、电影感光照、专业摄影、景深和细节等描述。

最终使用的提示词为:

A beautiful young woman standing on a city street at night, photorealistic, realistic skin texture, cinematic lighting, professional photography, shallow depth of field, highly detailed

图片生成结果截图:

通过对 Prompt 进行修改,我发现更加具体的提示词能够对图片的主体、场景、光照和整体风格进行更加明确的描述,生成结果也更加符合预期。

前端运行效果截图:

在 API 调用过程中,我曾经遇到过 402 Payment Required 错误。开始时我检查了代码和 Token,确认 Token 的读取方式没有问题。随后进一步检查了调用的模型名称和 Provider,发现之前的调用方式与当前 Hugging Face Inference Providers 的配置不完全匹配。经过查询和调整,我将模型设置为 XLabs-AI/flux-RealismLora,并在 InferenceClient 中指定 provider="fal-ai",同时使用正确的 API Token 进行调用。修改后重新运行 Flask 后端并测试图片生成,API 可以正常返回生成结果。通过这次排查,我认识到调用第三方 AI API 时,除了检查程序代码,还需要同时关注模型是否可用、Provider 配置、Token 权限以及账户服务状态等问题。


二、GitHub 个人主页建设

为了展示自己的学习情况、技术能力和课程实践,我创建并完善了 GitHub 个人主页。

个人主页主要包括以下内容:

  • 个人基本介绍
  • 兴趣方向
  • 掌握的编程语言和技术
  • 课程学习与项目实践
  • 技术能力与自我评价
  • 当前感兴趣的技术方向
  • 未来两年的学习规划

目前我学习过 C 语言、数据结构、Python、数据库、大数据、机器学习等相关课程,也完成过一些课程实验和项目实践。

在技术方向上,我比较感兴趣的是 Python、人工智能、大数据、Web 开发以及软件工程。通过本课程的学习,我希望能够把之前学习过的不同技术结合起来,提高自己独立完成完整项目的能力。

GitHub 个人主页截图:

通过建设 GitHub 个人主页,我对自己的学习经历和技术能力进行了重新整理。相比单纯保存代码,个人主页能够更加直观地展示自己的学习成果,同时也可以帮助自己发现知识体系中的不足。


三、博客园随笔与个人学习规划

我的技术技能树

我的技术技能树
                          │
         ┌────────────────┼────────────────┐
         │                │                │
      编程基础          数据技术          AI方向
         │                │                │
    C语言/Python      SQL/Hive/Hadoop    机器学习
    数据结构          HDFS/Spark         AI API
    算法基础          数据处理           图像生成
         │                │                │
         └────────────────┼────────────────┘
                          │
                     软件工程实践
                          │
                  GitHub / Flask / API

目前我已经学习过 C 语言、Python、数据结构、算法、数据库、大数据以及机器学习等相关知识,也开始接触 Flask、GitHub 和 AI API 调用。

从技能树可以看出,我目前接触的技术方向比较多,但也存在一些不足。例如部分知识掌握得还不够深入,不同技术之间缺少系统整合,完整的软件项目开发经验也比较少。

以前完成课程实验时,我更加关注程序能否运行以及实验结果是否正确,而对于需求分析、系统设计、代码规范、版本管理、软件测试和项目维护等软件工程能力掌握得还不够。

因此,我希望通过本课程把之前学习的各种技术逐渐联系起来,提高自己独立完成完整项目的能力。

代码量与课程目标

目前我的代码主要来自平时的课程实验和项目实践,大概已经写了4000行代码,但是完整项目的代码相对较少。

课程结束后,我希望将代码行数增加到8000行-10000行,更重要的是提高代码的规范性、完整性和可维护性,能够从需求分析开始,独立完成一个相对完整的软件项目。

我希望自己能够逐渐完成:

需求分析
   ↓
系统设计
   ↓
代码编写
   ↓
Git 版本管理
   ↓
软件测试
   ↓
项目完善

最期待学习的内容

本课程中我最期待学习的是软件开发流程、需求分析、系统设计、Git 版本控制、软件测试以及完整的项目实践。

希望能够通过这门课程逐渐从“完成课程实验”过渡到“能够独立完成一个完整的软件项目”。

AI分阶段学习指南

为了更加明确自己的学习方向,我使用 DeepSeek 根据自己的实际学习情况制定了一份软件工程学习指南。

结合目前已经学习过 C 语言、数据结构、Python、数据库、大数据和机器学习等课程的基础,我目前比较欠缺的是将这些知识应用到完整软件项目中的能力。

因此,我计划通过开发一个“校园失物招领系统”进行实践。

第一阶段:软件工程基础

学习软件生命周期、需求分析、系统设计、编码、测试和维护等基本知识,同时掌握 Git、GitHub、Markdown 等常用开发工具,了解完整软件开发流程。

实践:分析校园失物招领系统的基本需求,确定系统需要实现的主要功能,并创建 GitHub 仓库。

第二阶段:需求分析与系统设计

重点学习如何分析用户需求、划分系统功能、设计数据库和系统结构,能够完成基本的需求分析和系统设计。。

实践:设计失物发布、拾物发布、信息搜索和信息管理等功能,并确定前端、后端和数据库之间的关系。

第三阶段:项目开发

结合已经学习过的 Python 和数据库知识,学习 Flask、前后端交互和数据库连接等内容,具备完成小型软件项目的能力。

实践:使用 Flask、HTML、CSS 和 JavaScript 开发校园失物招领系统,实现信息发布、查询和管理等主要功能。

第四阶段:测试与优化

学习软件测试、异常处理、Bug 定位和代码优化等内容,提高程序的稳定性和可维护性。

实践:测试信息发布、搜索和删除等功能,并针对错误输入和异常情况进行修改和优化。

第五阶段:独立完成项目

综合前面学习的知识,尝试独立完成一个完整的软件项目。

实践:独立完成校园失物招领系统,将代码、README、项目截图和相关文档整理并上传到 GitHub。

我认为这份学习指南整体比较合理,能够根据我目前的学习基础和不足制定学习计划,按照基础学习、需求分析、项目开发、测试优化到独立完成项目的顺序逐步提高难度。尤其是将“校园失物招领系统”作为实践项目,可以把 Python、数据库、Flask、GitHub 等已经学习过的知识结合起来。通过这份学习指南,我对今后的学习方向更加明确,也认识到自己不仅要学习理论知识,还需要通过完整项目提高实际开发和解决问题的能力。


总结

通过本次作业,我完成了 Hugging Face API 图片生成、GitHub 个人主页建设以及个人技能和学习规划的整理。

其中,Hugging Face API 实验让我体验了 AI 模型与 Web 应用结合的过程;GitHub 个人主页建设让我更加系统地整理了自己的学习成果;AI 学习指南则帮助我重新认识了自己的技术基础和目前存在的不足。

通过这次实践,我认识到软件工程不仅仅是编写代码,还包括需求分析、系统设计、版本管理、软件测试和项目维护等多个方面。今后的学习中,我希望能够减少只完成零散实验的情况,多进行完整项目实践,逐渐提高自己的软件工程实践能力。


附录

附录:博客编辑过程截图

posted @ 2026-09-11 15:58  oqst  阅读(10)  评论(0)    收藏  举报