软件工程入门实践:从大模型API到个人技术主页构建
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2026-01SoftwareEngineeringandSoftwareEngineeringPractice/ |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2026-01SoftwareEngineeringandSoftwareEngineeringPractice/homework/16716 |
| 这个作业的目标 | 梳理自身技能与不足;体验大模型 API 调用与前端交互开发;搭建 GitHub 个人主页;借助 AI 生成软件工程学习指南并进行分析 |
| 学号 | 102402128 |
软件工程入门实践:从大模型API到个人技术主页构建
一、关于我:技能与不足
我是李韩远,福州大学数据科学与大数据技术专业大三在读学生。
课余时间我比较喜欢跑步和旅行。学习方面,我对计算机和数据相关领域比较感兴趣,习惯通过实际操作理解理论知识,希望能够将课堂中学习到的知识应用到实际问题中。
目前我正在学习 Python、C/C++、Java、数据库以及 Web 开发等相关知识,也开始接触人工智能、大模型 API 和软件工程实践。
1.1 当前技能树与自我评估
以下内容按照我实际接触和完成过的任务进行评价,不把简单使用某个工具等同于真正掌握。
| 能力方向 | 已经掌握的知识与实践 | 仍需深入的部分 |
|---|---|---|
| Python | 能够使用 Python 完成数据清洗、统计分析、可视化,也能够调用模型 API 完成简单的 AI 应用 | 大规模工程化开发、代码规范、项目部署、MLOps |
| 数据分析 | 掌握基本的数据处理、统计分析和可视化方法,能够使用相关工具完成数据分析任务 | 更复杂的数据建模、特征工程和实际业务数据分析 |
| 数据库 | 会使用 MySQL 完成基础查询、数据筛选和简单的数据处理 | 索引原理、数据库建模、事务和数据可靠性 |
| C/C++ | 掌握基础语法,学习过数据结构和相关算法,能够完成常规算法题 | 底层原理、复杂算法以及工程实践 |
| Java | 具备 Java 基础,能够完成课程中的基础编程任务 | Java Web、项目开发和框架的深入使用 |
| HTML/CSS/JavaScript | 能够完成简单的网页结构、样式以及 JavaScript 交互 | 前端工程化、组件化开发以及更复杂的前后端交互 |
| Git/GitHub | 已经开始使用 Git 和 GitHub 管理代码,并创建个人 GitHub 主页 | 分支管理、多人协作、Pull Request 和完整项目协作流程 |
| AI 应用开发 | 已经完成 Hugging Face API 调用,并使用 Flask 搭建简单的 AI 图片生成 Web 应用 | 更复杂的大模型应用开发、模型部署和 AI 工程化 |
| 软件工程 | 了解软件工程的基本概念,能够按照任务完成项目实践 | 需求分析、系统设计、软件测试、项目管理和团队协作 |
1.2 最需要加强的三项能力
-
计算机底层基础
目前对一些计算机底层原理的理解还不够深入。虽然能够使用很多工具和框架完成任务,但是对于计算机组成、操作系统、网络等底层知识还需要进一步学习。
-
完整的软件工程实践能力
目前我的实践更多集中在课程作业和竞赛项目,还缺少一个完整的软件项目从需求分析、系统设计、编码、测试到最终部署的全过程经验。
-
科研与问题发现能力
目前面对已经给出的题目,我能够通过查阅资料和实践完成任务,但主动发现问题、提出有价值的问题以及进行深入研究的能力还需要继续提高。
1.3 技术偏好与希望学习的方向
目前我比较感兴趣的方向是人工智能、大语言模型以及 AI 应用开发。
我希望进一步学习:
- 自然语言处理(NLP)
- 大语言模型(LLM)
- 大模型轻量化部署
- 图神经网络(GNN)
- 强化学习
- MLOps
- AI 应用工程化
我希望以后不仅能够调用现成的 AI 工具,还能够理解模型背后的基本原理,并能够独立完成一个较完整的 AI 应用项目。
二、三年发展规划
为了让自己的学习目标更加明确,我根据目前的学习阶段制定了未来三年的发展规划。
| 时间 | 主要目标 | 具体计划 |
|---|---|---|
| 第一年 | 准备考研、夯实基础 | 系统复习数学、英语和专业课;进一步学习数据结构、操作系统、计算机网络、计算机组成原理等基础知识;继续提高 Python、C/C++ 等编程能力;完成课程项目和竞赛实践 |
| 第二年 | 完成毕业论文与实习 | 认真完成毕业论文,学习科研和论文写作方法;寻找与数据分析、人工智能或软件开发相关的实习机会;积累真实的软件项目开发经验 |
| 第三年 | 跟随导师深入学习 | 进入研究生阶段后跟随导师学习,参与科研项目;进一步学习人工智能、大模型等方向;提高科研能力、工程实践能力和独立解决问题的能力 |
第一年:准备考研
第一年的主要任务是考研和夯实专业基础。
我会重点学习数学、英语以及计算机相关专业课程,同时加强数据结构、算法、操作系统、计算机网络等基础知识。
除此之外,我也会继续保持编程练习,通过课程项目和个人项目提高实际开发能力。
第二年:毕业论文与实习
第二年主要完成本科毕业论文,同时争取找到与专业方向相关的实习。
在毕业论文过程中,我希望能够学习更加规范的科研方法,包括资料查找、实验设计、数据分析、论文撰写等。
通过实习,希望能够接触真实的软件开发环境,了解企业中的开发流程、团队协作和项目管理方式。
第三年:跟随导师学习
第三年进入研究生阶段后,我计划跟随导师进行深入学习和科研实践。
重点关注人工智能、大语言模型、数据分析等方向,在导师指导下参与科研项目,逐渐提高独立思考、问题分析和科研实践能力。
三、代码量与本学期目标
目前我的累计代码量大约为 15000 行,这些代码主要来自课程学习、数学建模竞赛、个人实践以及各种实验项目。
| 项目 | 预计数量 |
|---|---|
| 目前累计代码量 | 约 15000 行 |
| 本学期计划新增代码 | 5000 行 |
| 课程结束总目标 | 约 20000 行 |
这里的代码量主要作为一个自我衡量指标,并不单纯追求代码数量。
我希望通过本学期的软件工程课程,让自己的代码从“能够运行”逐渐向“结构清晰、容易维护、方便协作”转变。
同时通过 GitHub 记录自己的项目和代码,让自己的学习过程更加规范。
四、本课程最期待学习的知识与收获
4.1 期待学习的知识
-
软件工程完整开发流程
希望系统了解需求分析、概要设计、详细设计、编码、软件测试和项目交付等完整流程。
-
工程化开发规范
希望学习 UML、模块化设计、版本管理、单元测试、项目文档等软件工程方法。
-
团队软件开发
希望了解多人协作中的任务分工、代码管理、冲突解决和代码评审等内容。
-
项目管理
希望学习如何对一个完整的软件项目进行任务划分、进度管理和质量控制。
4.2 希望获得的收获
通过本课程,我希望能够:
- 建立基本的软件工程思维;
- 不再只追求“代码能运行”,而是更加关注代码的可维护性;
- 掌握规范的软件项目开发流程;
- 学会编写更加规范的项目文档;
- 掌握 Git/GitHub 的基本协作方式;
- 能够独立完成一个小型软件项目的完整开发流程;
- 为以后参与更大型的软件项目和科研项目打下基础。
五、基于 Hugging Face API 与 FLUX 模型的 AI 图片生成系统
5.1 实验目的
本次实验的主要目的是学习 Hugging Face 平台模型 API 的基本调用方法。
通过注册 Hugging Face 账号并获取 API Token,在 Python 后端中调用 XLabs-AI/flux-RealismLora 模型,实现根据用户输入的文字提示词生成 AI 图片。
同时结合 Flask 和 HTML、CSS、JavaScript 完成一个简单的 Web 页面,使用户可以在网页中输入 Prompt,点击按钮后生成图片并显示结果。
通过本次实践,我学习了:
- Hugging Face API Token 的获取与配置;
- Python 环境和相关依赖的安装;
huggingface_hub库的使用;- Flask Web 框架的基本使用;
- 前后端数据交互;
- AI 图片生成 API 的调用;
- API 调用过程中的错误处理;
- Prompt 的设计与优化。
5.2 实验环境
| 项目 | 环境 |
|---|---|
| 操作系统 | Windows |
| 开发工具 | Visual Studio Code |
| 编程语言 | Python |
| Python 版本 | Python 3.12.6 |
| Web 框架 | Flask |
| AI 平台 | Hugging Face |
| 模型 | XLabs-AI/flux-RealismLora |
| 前端技术 | HTML、CSS、JavaScript |
5.3 项目功能介绍
本项目实现了一个简单的 AI 图片生成网页。
用户可以在网页输入英文图片提示词,然后点击“生成图片”按钮。
系统按照以下流程运行:
- 用户在网页输入图片 Prompt;
- 前端 JavaScript 获取用户输入;
- 前端向 Flask 后端发送 POST 请求;
- Flask 后端接收 Prompt;
- 后端调用 Hugging Face API;
- FLUX 模型根据 Prompt 生成图片;
- 后端将生成的图片转换为 Base64 数据;
- 后端将图片数据返回给前端;
- 前端显示生成后的 AI 图片。
整个系统形成了:
文本输入 → API 请求 → AI 模型推理 → 图片生成 → 前端展示
的完整流程。
5.4 Hugging Face API 调用过程
首先在 Hugging Face 官网注册个人账号,并创建 API Token。
为了避免 Token 直接出现在源代码中,我使用 ` 文件保存 Token。
text
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 直接写在 Python 源代码中,提高 Token 的安全性。
5.5 项目目录结构
项目的基本目录结构如下:
software-engineering-homework/
│
├── templates/
│ └── index.html
│
├── .env
├── app.py
├── generate.py
└── generated_image.png
各文件的作用如下:
文件或文件夹 功能
templates/index.html AI 图片生成网页前端
.env 保存 Hugging Face API Token
app.py Flask 后端程序
generate.py 测试 Hugging Face 模型 API
generated_image.png API 生成的图片
5.6 API 调用实现
后端通过 Hugging Face 的 InferenceClient 调用模型:
from huggingface_hub import InferenceClient
client = InferenceClient(
provider="auto",
api_key=HF_TOKEN
)
MODEL_ID = "XLabs-AI/flux-RealismLora"
接收到用户的 Prompt 后调用:
image = client.text_to_image(
prompt=prompt,
model=MODEL_ID
)
生成图片后,将图片转换为 PNG 数据,并通过 Base64 的形式返回给前端。
5.7 前后端交互
前端通过 JavaScript 的 fetch() 向 Flask 后端发送请求。
基本流程为:
用户输入 Prompt
↓
JavaScript 获取输入
↓
POST /generate
↓
Flask 接收 Prompt
↓
调用 Hugging Face API
↓
生成图片
↓
Base64 返回
↓
浏览器显示图片
这种方式实现了前端页面与 AI 模型之间的交互。
5.8 Prompt 设计与优化
在实验过程中,我发现 Prompt 的描述程度会影响生成图片的效果。
最开始使用比较简单的提示词,例如:
A street in Tokyo at night.

这个 Prompt 对图片内容的描述比较简单,因此生成结果的细节有限。
之后增加环境、人物、光照等信息:
A realistic street photograph of Tokyo at night, Japanese buildings
and convenience stores, wet road reflecting neon lights,
a person walking on the street, natural human proportions,
realistic skin texture, photorealistic, cinematic photography,
35mm lens, shallow depth of field, high detail.

通过逐步增加关键词,我认识到 Prompt 并不是简单地描述“想生成什么”,还可以进一步描述:
场景;
人物;
光照;
色彩;
摄影风格;
镜头;
画面细节;
图片整体氛围。
因此,Prompt 的设计和不断修改也是 AI 应用开发中的重要实践。
5.9 实验结果
通过 Flask 启动本地 Web 服务:
打开网页后,可以在输入框中输入 Prompt,并点击“生成图片”。
最终成功实现:
用户输入 Prompt;
前端发送请求;
Flask 后端调用 Hugging Face API;
FLUX 模型生成图片;
图片返回前端;
网页显示生成结果。
【此处插入 Hugging Face API 调用成功截图】
【此处插入 Flask 后端运行截图】
【此处插入网页生成成功截图】
【此处插入最终生成图片】
六、GitHub 个人主页
本次作业中,我创建了与 GitHub 用户名相同的个人主页仓库:
hanyuan6666/hanyuan6666
该仓库使用 README.md 作为个人主页内容。
GitHub 个人主页主要包含:
个人基本介绍;
兴趣爱好;
当前技能;
技术兴趣;
项目实践;
自我评价;
三年发展规划。
通过创建 GitHub 个人主页,我进一步了解了 GitHub Profile README 的使用方式,也开始尝试将个人学习成果进行整理和展示。
GitHub链接:https://github.com/hanyuan6666



七、AI 生成的软件工程课程学习指南
本次作业选择 ChatGPT 作为 AI 工具,让其生成一份简洁的软件工程课程学习指南。
7.1 AI 生成的学习指南




7.2 对 AI 学习指南的分析
我认为这份学习指南总体上是合理的。
首先,它按照软件开发的一般流程进行组织,从软件工程基础开始,逐渐学习需求分析、系统设计、编码、测试,最后通过项目实践进行综合应用。这种学习顺序比较符合软件工程课程的特点。
其次,这份指南比较重视实践。软件工程不仅仅是学习理论知识,如果只停留在概念层面,很难真正理解需求分析、版本管理、测试和团队协作的重要性。因此,通过综合项目将前面学习的知识串联起来是比较有必要的。
不过,这份学习指南也存在一定不足。
第一,内容比较概括,没有结合具体的软件工程工具。例如可以进一步加入 Git、GitHub、UML 工具、测试框架等具体工具。
第二,对于团队开发的内容还不够详细。实际的软件开发通常需要多人协作,因此还应该学习代码评审、Issue 管理、分支策略和冲突解决等内容。
第三,没有针对个人基础进行调整。每个人的编程基础和项目经验不同,学习计划也应该有所区别。
因此,我认为这份 AI 生成的学习指南可以作为课程学习的整体框架,但不能完全替代老师的课程安排和自己的学习计划。
通过这次使用 AI 制定学习指南,我也认识到 AI 更适合帮助我们整理思路、生成学习框架和补充知识,而不是完全代替自己的思考。
八、总结与学习体会
通过本次软件工程个人作业,我对自己的专业能力和不足有了更加清晰的认识。
以前学习编程时,我比较关注代码能不能运行,而通过软件工程课程的学习,我开始意识到一个真正的软件项目还需要考虑需求分析、系统设计、代码规范、版本管理、测试和维护等问题。
本次 Hugging Face API 实践让我第一次比较完整地体验了从 AI 模型 API 到 Web 前端交互的过程。虽然目前完成的只是一个比较简单的 AI 图片生成应用,但它让我认识到,AI 模型与传统软件开发结合之后,可以形成很多新的应用。
同时,GitHub 个人主页的创建也让我开始尝试整理自己的学习成果。
未来我希望继续加强计算机基础和软件工程实践能力,在学习人工智能相关知识的同时,也逐渐提高自己的工程能力,争取能够独立完成更加完整、规范的软件项目。
七、后台博文编辑页面的截图
本截图为博客园随笔后台Markdown编辑页面,本次作业全文采用Markdown语法编写,使用博客园自带Markdown编辑器完成内容撰写与排版,截图用于证明作业是在Markdown编辑模式下完成,满足作业提交格式要求。


浙公网安备 33010602011771号