软件工程入门实践:从大模型API到个人技术主页构建
| 这个作业属于哪个课程 | H202601软件工程与软件工程实践 |
|---|---|
| 这个作业要求在哪里 | 2026秋软件工程个人作业 |
| 这个作业的目标 | 梳理自身技能与不足;体验大模型API调用与前端交互开发;搭建GitHub个人主页;借助AI生成课程学习指南并进行分析 |
| 学号 | 052402111 |
软件工程入门实践:从大模型API到个人技术主页构建
一、关于我:技能与不足
我是林诗怡,福州大学数据科学与大数据技术专业大三在读学生。课余热爱游泳、摄影、旅行,已经走过国内大半国土,喜欢在旅途记录风景,在运动中调整自身状态。对待学习踏实严谨,乐于参加学科竞赛,习惯把理论知识落地解决实际问题,持续探索计算机与数据相关领域。

1.1 当前技能树与自我评估
以下按照实际接触过的任务描述能力,不把简单使用过某个框架等同于精通。
| 能力方向 | 已经掌握的知识与实践 | 仍需深入的部分 |
|---|---|---|
| Python数据开发 | 使用Python完成竞赛数据清洗、统计分析、可视化;能够针对问题完成模型实现、结果评估与报告输出 | 大规模工程化部署、MLOps相关实践 |
| 数据库处理 | 会使用MySQL完成基础查询、数据筛选,参与简单业务数据处理、结果核对 | 索引原理、数据库建模、数据可靠性校验 |
| 编程基础 | 掌握C/C++基础语法,熟悉数据结构相关算法,能够完成常规算法题目编写 | 底层原理深挖、复杂算法调优 |
| 工程协作 | 使用Git完成版本管理,熟悉Markdown文档编写,能够完成项目文档整理 | 完整项目需求拆解、软件测试、多人协作开发 |
1.2 项目经历
主要经历集中在数学建模类学科竞赛:
| 赛事 | 角色 | 成果/收获 |
|---|---|---|
| 美国大学生数学建模大赛(MCM/ICM) | 建模手、编程手 | 完成数据清洗、特征工程与预测建模,撰写全英文论文,提升数据分析和快速解决问题的能力 |
| “电工杯”全国大学生数学建模竞赛 | 队长 | 设计优化方案求解工程问题,统筹团队分工,锻炼建模思维与论文写作能力,获全国三等奖 |
竞赛过程中我逐步掌握:
- 数据预处理与数据分析
- 数学模型建立
- 数据可视化
- Python编程
- 模型评价与优化
- 数学建模论文写作
1.3 最需要加强的三项能力
- 计算机底层基础:完整吃透408计算机学科专业课,夯实计算机底层基础,补齐本科课程深度不足的短板。很多工具会调用使用,但底层原理理解不够透彻。
- 工程实战经验:目前大多是竞赛、课程作业,缺少完整软件项目从需求分析、编码到测试交付的全流程实战。
- 科研与问题思考能力:面对给定题目求解问题比较熟练,但主动发现、提出有价值问题的能力还需要持续锻炼。
1.4 技术偏好与最希望学习的知识
- 最感兴趣:自然语言处理(NLP)与大语言模型(LLM)的轻量化部署,希望让机器理解人类复杂情感。
- 希望深入学习:图神经网络(GNN)、强化学习、MLOps工程化。
二、代码量与本学期目标
| 项目 | 预估数值 |
|---|---|
| 目前累计代码量 | 约15000行 |
| 本学期计划新增代码 | 5000行 |
| 课程结束总目标 | 20000行 |
该数值为个人粗略估算,后续将结合Git提交记录做更准确统计。
三、本课程最期待学习的知识与收获
期待学习的知识
- 软件工程完整开发流程:需求分析、概要设计、详细设计、软件测试、项目交付。
- 工程化规范:UML图绘制、模块化设计、版本管理、单元测试、项目文档撰写。
- 团队软件开发的协作模式,学习多人项目的分工、冲突管理与代码评审。
希望获得的收获
- 建立工程化思维,不再只追求代码跑通,而是写出可维护、易扩展、规范健壮的代码。
- 掌握软件项目文档撰写规范,学会标准化产出设计文档、测试文档。
- 可以独立完成小型软件项目的全流程开发,具备团队协同开发项目的能力。
四、基于 Hugging Face API 与 FLUX 模型的 AI 图像生成系统
4.1 实验目的
本实验旨在学习并掌握 Hugging Face 平台中模型 API 的基本调用方法,通过注册 Hugging Face 个人账号并获取 API Token,在 Python Flask 后端中调用 Hugging Face 推理服务,实现根据用户输入的文本提示词自动生成 AI 图像。
同时,本实验结合前端网页界面,实现用户输入提示词、发送生成请求、后端调用 AI 模型、返回生成图片并展示生成结果的完整流程。
通过本次实验,进一步掌握以下内容:
- Hugging Face API Token 的获取与配置;
- Python 环境及虚拟环境的使用;
- Flask Web 框架的基本使用;
- Hugging Face
huggingface_hub库的使用; - AI 文生图模型的 API 调用;
- 前后端数据交互;
- API 调用过程中错误信息的分析与处理;
- AI 图像提示词(Prompt)的设计与优化。
4.2 实验环境
本次实验使用的开发环境如下:
| 项目 | 环境 |
|---|---|
| 操作系统 | Windows |
| 开发工具 | Visual Studio Code |
| 编程语言 | Python |
| Python 版本 | Python 3.x |
| Web 框架 | Flask |
| AI 平台 | Hugging Face |
| API 库 | huggingface_hub |
| 前端技术 | HTML、CSS、JavaScript |
| AI 图像模型 | FLUX 系列模型 |
4.3 项目功能介绍
本项目实现了一个简单的 AI 图像生成网站。
用户可以在网页中输入英文图片提示词,然后点击 Generate Image 按钮。
系统会按照以下流程工作:
- 用户在网页中输入图片 Prompt;
- 前端 JavaScript 获取用户输入;
- 前端向 Flask 后端发送 POST 请求;
- Flask 后端接收 Prompt;
- 后端调用 Hugging Face API;
- Hugging Face AI 模型根据 Prompt 生成图片;
- 后端将生成图片保存到本地
static文件夹; - 后端返回图片地址及生成信息;
- 前端显示生成的 AI 图像。
整个系统实现了一个完整的:
文本输入 → API 请求 → AI 模型推理 → 图像生成 → 前端展示
的 AI 图像生成流程。
4.4 API 调用实现过程
4.4.1 Hugging Face 账号注册与 API Token 获取
首先,在 Hugging Face 官方网站注册个人账号。
注册完成后,在 Hugging Face 个人设置页面创建 Access Token,用于调用 Hugging Face 的模型推理服务。
为了保证 API Token 的安全性,本项目没有直接将 Token 写入 Python 源代码,而是使用 .env 文件进行保存。
.env 文件内容如下:
HF_TOKEN=你的_Hugging_Face_API_Token
在 Python 程序中,通过 python-dotenv 读取环境变量:
from dotenv import load_dotenv
import os
load_dotenv()
HF_TOKEN = os.getenv("HF_TOKEN")
这样可以避免 API Token 直接暴露在源代码中,提高程序的安全性。
4.4.2 项目目录结构
本项目的目录结构如下:
huggingface-image-generator/
├── venv/
├── templates/
│ └── index.html
├── static/
│ └── generated_image.png
├── .env
├── app.py
└── requirements.txt
各文件的作用如下:
| 文件或文件夹 | 功能 |
|---|---|
| venv | Python 虚拟环境 |
| templates/index.html | 前端网页 |
| static | 保存生成的图片 |
| .env | 保存 Hugging Face API Token |
| app.py | Flask 后端程序 |
| requirements.txt | 项目依赖库 |
项目使用的主要 Python 依赖库,requirements.txt 文件如下:
Flask
huggingface_hub
python-dotenv
4.4.3 创建 Hugging Face API 客户端
首先导入所需要的 Python 库:
import time
import os
from flask import Flask, render_template, request, jsonify
from dotenv import load_dotenv
from huggingface_hub import InferenceClient
然后加载 .env 文件并获取 API Token:
load_dotenv()
HF_TOKEN = os.getenv("HF_TOKEN")
创建 Flask 应用:
app = Flask(__name__)
随后创建 Hugging Face 推理客户端:
client = InferenceClient(
api_key=HF_TOKEN
)
通过 InferenceClient 可以调用 Hugging Face 提供的模型推理服务。
4.4.4 Flask 后端接口设计
项目首页使用 Flask 渲染:
@app.route("/")
def index():
return render_template("index.html")
当用户访问: http://127.0.0.1:5000
时,Flask 会加载 templates/index.html 页面。
4.4.5 图像生成接口
本项目设计了 /generate 接口,用于接收用户输入的提示词并调用 Hugging Face 模型生成图片。
核心代码如下:
@app.route("/generate", methods=["POST"])
def generate():
try:
# 获取前端输入的提示词
data = request.get_json()
prompt = data.get("prompt", "").strip()
# 判断提示词是否为空
if not prompt:
return jsonify({
"success": False,
"message": "请输入图片提示词!"
})
# 记录开始时间
start_time = time.time()
# 调用 Hugging Face 模型生成图片
image = client.text_to_image(
prompt,
model="black-forest-labs/FLUX.1-schnell"
)
# 创建 static 文件夹
os.makedirs("static", exist_ok=True)
# 图片保存路径
image_path = "static/generated_image.png"
# 保存图片
image.save(image_path)
# 计算生成耗时
elapsed_time = round(time.time() - start_time, 2)
# 返回结果
return jsonify({
"success": True,
"image_url": "/static/generated_image.png",
"prompt": prompt,
"model": "black-forest-labs/FLUX.1-schnell",
"status_code": 200,
"time": elapsed_time
})
except Exception as e:
print("错误信息:", str(e))
return jsonify({
"success": False,
"message": str(e)
})
4.5 前端页面设计
前端页面主要由以下几个部分组成:
- AI Image Generator 标题;
- Prompt 输入框;
- Generate Image 按钮;
- 图片生成结果展示区域;
- API Status 状态信息;
- 模型名称;
- 模型生成时间。
用户在 Prompt 输入框中输入图像描述后,点击:
Generate Image
前端会将 Prompt 发送给 Flask 后端。
系统整体流程如下:
用户输入 Prompt
↓ HTML 前端页面
↓ JavaScript 发送 POST 请求
↓ Flask 后端 /generate 接口
↓ Hugging Face API
↓ FLUX.1-schnell 模型
↓ 生成 AI 图像
↓ 保存到 static 文件夹
↓ 返回图片 URL
↓ 网页展示生成结果
4.6 API 调用过程中遇到的问题及解决方法
在实验过程中,并不是第一次调用就成功,而是经历了多个问题的排查和修改。
4.6.1 问题一:API Token 权限不足
第一次调用 Hugging Face API 时,出现了以下错误:
403 Forbidden
This authentication method does not have sufficient permissions
错误信息说明当前 API Token 没有足够权限调用 Hugging Face 的推理服务。
因此重新检查 Hugging Face Token 的权限设置,并重新配置 API Token。
4.6.2 问题二:模型已不再支持
在后续调用过程中,又出现了以下错误:
410 Gone
The requested model is deprecated and no longer supported
错误原因是原来的调用方式已经不再支持该模型。
因此对 Hugging Face API 调用方式进行了修改,重新调整 InferenceClient 的配置。经过修改后,模型调用恢复正常。
4.7 Flask 服务启动
完成代码修改后,在 VS Code 终端中运行:
python app.py
终端显示:
Serving Flask app 'app'
Debug mode: on
Running on http://127.0.0.1:5000
Press CTRL+C to quit
说明 Flask 服务启动成功。
随后在浏览器中访问: http://127.0.0.1:5000
成功打开 AI 图像生成系统。

4.8 第一次 Prompt 测试
4.8.1 第一次测试提示词
第一次测试使用的中文提示词为:
清晨海边栈道,木质栏杆湿润,柔和的自然光,背着双肩包走向远处,海面有薄雾,真实相机拍摄质感
为了提高模型的理解效果,将提示词转换为英文:
A seaside boardwalk in the early morning, a girl wearing a beige trench coat and carrying a backpack, walking toward the distance. Light mist over the sea, wet wooden railings, soft natural lighting, realistic photography, natural camera quality.
4.8.2 第一次生成结果
输入提示词后,点击:
🚀 Generate Image
系统成功调用 Hugging Face API。
最终生成结果显示:
API Status: 200
Model: black-forest-labs/FLUX.1-schnell
Generation Time: 约 8 秒
生成的图像中成功表现出了:
- 清晨海边环境;
- 木质栈道;
- 海面薄雾;
- 湿润的木质地面;
- 穿米色风衣的女生;
- 双肩包;
- 人物向远处行走。
整体生成结果与 Prompt 描述基本一致。

4.9 第二次 Prompt 测试
为了进一步测试 Prompt 的详细程度对生成结果的影响,在第一次提示词的基础上增加了更多摄影风格和画面细节描述。
4.9.1 第二次测试提示词
中文提示词为:
写实摄影风格,清晨海边栈道,一位穿米色风衣的女生背着双肩包走向远处,木质栏杆湿润,柔和自然光,真实相机拍摄质感,细节丰富,色彩克制,浅景深,画面干净
转换为英文:
Realistic photography style, a seaside boardwalk in the early morning, a girl wearing a beige trench coat and carrying a backpack, walking toward the distance. Light mist over the sea, wet wooden railings, soft natural lighting, realistic camera photography, rich details, restrained colors, shallow depth of field, clean composition.
4.9.2 第二次生成结果
输入第二轮 Prompt 后,系统再次成功调用 Hugging Face API。
生成结果如下:
API Status: 200
Model: black-forest-labs/FLUX.1-schnell
Generation Time: 6.41 秒
第二次生成的图像中,人物主体更加突出,整体画面具有更加明显的摄影风格。
从生成结果可以看出:
- 人物主体更加突出;
- 背景具有更明显的景深效果;
- 色彩更加柔和;
- 整体画面更加干净;
- 构图更加具有摄影感;
- 图像细节更加丰富。

4.10 两轮 Prompt 生成效果对比
| 对比内容 | 第一轮 | 第二轮 |
|---|---|---|
| Prompt描述 | 基础场景描述 | 增加摄影风格与细节描述 |
| 图像主体 | 明确 | 更加突出 |
| 摄影风格 | 较明显 | 更加明显 |
| 景深效果 | 一般 | 更明显 |
| 画面构图 | 较完整 | 更加干净 |
| 色彩效果 | 自然 | 更加柔和、克制 |
| 生成时间 | 约 8 秒 | 6.41 秒 |
| API状态 | 200 | 200 |

左图为基础描述生成结果,右图为增加摄影风格、细节、景深和构图描述后的生成结果。通过对比可以发现,更详细的 Prompt 能够在一定程度上提升生成图像的风格表现和画面质量。
通过两轮实验可以发现,Prompt 的描述方式会对 AI 图像生成结果产生明显影响。
当 Prompt 中只包含基础场景描述时,模型能够生成符合基本要求的图像。
而在 Prompt 中加入:
Realistic photography style
Rich details
Restrained colors
Shallow depth of field
Clean composition
等描述后,模型能够更好地理解用户对图像风格、构图和摄影效果的要求。
因此,在 AI 图像生成过程中,Prompt 的设计对于生成结果具有重要影响。
4.11 实验总结与心得体会
通过本次实验,我学习并实践了 Hugging Face API 的调用过程,并成功完成了一个基于 FLUX 模型的 AI 图像生成系统。
在实验过程中,我首先学习了 Hugging Face 账号注册和 API Token 的获取方法,并使用 .env 文件保存 API Token,提高了程序的安全性。
随后,我使用 Python 中的 huggingface_hub 库调用 Hugging Face 的模型推理服务,并结合 Flask 框架搭建后端接口,实现了文本提示词到 AI 图像生成的功能。
在开发过程中,也遇到了多个实际问题,例如 PowerShell 执行策略限制、API Token 权限不足、模型调用方式更新以及 Python 代码中存在非法字符等问题。通过查看错误信息、分析错误原因并不断修改代码,最终成功解决了这些问题。
通过两轮不同 Prompt 的测试,我进一步认识到提示词工程在 AI 图像生成中的重要性。更加详细、准确的 Prompt 可以帮助模型更好地理解用户的需求,从而生成更加符合预期的图像。
本次实验不仅让我掌握了 Hugging Face API 的基本调用方法,还让我了解了 Flask 前后端交互的基本流程。整个项目实现了从:
用户输入文本 → 前端发送请求 → Flask 后端处理 → Hugging Face API 调用 → FLUX 模型生成图像 → 返回生成结果 → 网页展示图片
的完整 AI 应用开发流程。
通过本次实验,我对 AI 模型 API 的实际应用有了更加深入的理解,也提高了自己在 Python 编程、Web 后端开发和 API 调试方面的实践能力。
五、 Github个人主页搭建
本次作业选择方案1:创建名称与GitHub ID相同的仓库,在仓库根目录README中撰写个人介绍。
5.1 任务要求
在GitHub上完成个人主页建设,个人主页需要包含:
- 自我介绍,兴趣爱好、个人经历;可配图丰富页面。
- 展示个人成果、技能、专业实践经历,完成自我评估:已掌握的知识能力、感兴趣的技术方向、希望学习的内容。
- 未来三年发展规划(考研/保研/就业/考公等,写明目标与理由)。
5.2 实现步骤
- 注册GitHub账号,创建仓库名与GitHub ID完全相同的特殊仓库;
- 在仓库根目录新建
README.md文件,编写markdown个人主页内容; - 提交代码,仓库首页自动渲染README,作为GitHub个人主页;
- 完善内容:个人介绍、竞赛实践、技能自评、三年规划;
- 截图保存GitHub主页效果,上传图片到博客园。
5.3 GitHub个人主页截图

GitHub个人主页访问链接
5.4 实验总结
本次作业我选用方案1搭建GitHub个人主页,创建与GitHub用户名同名仓库,编写README.md实现个人主页展示。页面完整覆盖自我介绍、竞赛实践、技能评估、三年发展规划四项要求。
六、AI生成软件工程学习指南(使用ChatGPT生成)
向ChatGPT输入提示词:
请生成一份简要的软件工程课程学习指南,面向本科数据科学与大数据技术专业学生
ChatGPT生成的学习指南
软件工程课程学习指南
1. 基础理论学习
- 理解软件工程诞生背景:软件危机产生的原因,软件工程的核心思想,区分程序与软件的差别。
- 掌握软件生命周期:可行性研究、需求分析、软件设计、编码实现、软件测试、维护六个阶段。
- 熟悉开发模型:瀑布模型、增量模型、迭代模型、敏捷开发模型,掌握各个模型适用场景、优缺点。
2. 核心建模与设计
- 学会UML基础图:用例图、类图、时序图,读懂并能够独立绘制,用来描述软件需求与模块交互。
- 理解软件设计原则:高内聚低耦合,模块化设计,面向对象设计思想。
3. 软件测试
- 掌握测试分类:单元测试、集成测试、系统测试;黑盒测试、白盒测试基本思路。
- 学会编写测试用例,理解bug管理、缺陷跟踪流程。
4. 工程实践与工具
- Git版本控制:分支管理、提交规范、代码冲突处理。
- 项目文档:学习需求规格说明书、概要设计文档、用户手册的书写规范。
- 小组项目实践:体验敏捷开发、任务拆解、团队沟通协作。
5. 学习建议
- 理论结合实践,不要死记概念,尽量在课程项目中使用学到的软件工程方法。
- 多阅读开源项目,学习成熟项目的代码组织、目录结构与文档写法。
- 重视文档能力,软件工程中,文档和代码同等重要。
对这份指南的合理性分析
-
合理之处
- 覆盖软件工程课程主干知识点:软件生命周期、开发模型、UML建模、软件测试、Git工程工具,完全贴合本科课程大纲。
- 强调理论+项目实践,提醒阅读开源项目,符合软件工程“重工程实践”的特点,对课程学习有很强指导意义。
- 点明文档的重要性,纠正只写代码忽略文档的误区,正好匹配本课程作业要求。
-
存在的不足
- 指南内容偏基础,缺少对前沿内容(AI辅助开发、DevOps)的拓展介绍。
- 没有给出学习时间规划,缺少分阶段学习安排,适合作为知识清单,不能直接当作学习计划表。
- 对于团队协作中风险管控、需求变更管理讲解比较简略。
-
对我的帮助
这份指南可以当作课程预习与复习的知识清单。我可以对照清单自查知识点掌握情况,在课程项目开发时,按照指南规范完成需求文档、UML图、测试用例,规范我的项目开发流程,补齐我欠缺的软件工程规范能力。
七、后台博文编辑页面的截图
本截图为博客园随笔后台Markdown编辑页面,本次作业全文采用Markdown语法编写,使用博客园自带Markdown编辑器完成内容撰写与排版,截图用于证明作业是在Markdown编辑模式下完成,满足作业提交格式要求。

以上就是本次博客的全部内容,我会继续努力的!
浙公网安备 33010602011771号