2026秋软件工程个人作业(第一次)
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | H202601软件工程与软件工程实践 |
| 这个作业要求在哪里 | 2026秋软件工程个人作业(第一次) |
| 这个作业的目标 | 调用 Hugging Face API 实现图像生成,搭建 GitHub 个人主页,梳理个人技能与学习目标 |
| 学号 | 082403146 |
1.1 准备工作:
本次作业中,我选择使用 Hugging Face 上的图像生成模型,并通过 Python 调用 API 实现文生图功能。为了让调用过程更加直观,我还使用 Gradio 搭建了一个简单的本地网页前端,使用户可以在输入框中输入提示词,然后点击按钮生成图片。

1.2 项目文件结构:
我的项目目录结构如下:

app.py 是主程序文件,负责调用 Hugging Face API 并启动 Gradio 前端。
requirements.txt 用来记录项目依赖。
.env 用来保存 HF_TOKEN。
outputs 文件夹用来保存生成的图片。
1.3 核心代码实现
app.py具体代码如下:
import os
import time
from pathlib import Path
import gradio as gr
from dotenv import load_dotenv
from huggingface_hub import InferenceClient
load_dotenv()
OUTPUT_DIR = Path("outputs")
OUTPUT_DIR.mkdir(exist_ok=True)
client = InferenceClient(
provider="auto",
api_key=os.environ["HF_TOKEN"],
)
MODEL_ID = "XLabs-AI/flux-RealismLora"
def generate_image(prompt):
if not prompt.strip():
raise gr.Error("请输入提示词")
image = client.text_to_image(
prompt=prompt,
model=MODEL_ID,
width=768,
height=768,
num_inference_steps=25,
guidance_scale=7.5,
)
filename = OUTPUT_DIR / f"generated_{time.strftime('%Y%m%d_%H%M%S')}.png"
image.save(filename)
return image, str(filename)
with gr.Blocks(title="Flux RealismLora 图像生成器") as demo:
gr.Markdown("# Flux RealismLora 写实图像生成器")
prompt = gr.Textbox(
label="请输入英文提示词",
lines=6,
value="A realistic photo of a cup of coffee on a wooden table beside a rainy cafe window, natural light, detailed texture, shallow depth of field.",
)
button = gr.Button("生成图片")
image_output = gr.Image(label="生成结果")
path_output = gr.Textbox(label="图片保存路径")
button.click(
fn=generate_image,
inputs=prompt,
outputs=[image_output, path_output],
)
demo.launch()
这段代码主要完成了以下功能:
- 从 .env 文件中读取 Hugging Face Token。
- 创建 Hugging Face InferenceClient。
- 调用文生图模型生成图片。
- 将生成结果保存到本地 outputs 文件夹。
- 使用 Gradio 创建网页前端,方便输入 prompt 并查看生成结果。
1.4 第一次生成结果
第一次我使用了一个比较简单的提示词:
A realistic photo of a cup of black coffee on a wooden table beside a rainy cafe window, soft natural light, water droplets on the glass, detailed texture, shallow depth of field.

这个 prompt 只描述了主要物体和场景,包括咖啡、木桌、雨天、咖啡馆窗边。模型能够生成大致符合要求的图片,但画面细节还不够丰富,例如光线、材质和构图都比较普通。
1.5第二次修改 Prompt
第二次我使用了更完整的英文 prompt,并加入了限制条件:
A documentary photograph of a quiet neighborhood cafe on an overcast morning just after rain. On a worn oak table beside a large window sits one off-white ceramic cup of black coffee on a matching saucer, with a folded newspaper lying to its right. Soft daylight enters from the window, water droplets are visible on the glass, realistic exposure, natural colors, shallow depth of field, no people, no text, no stylized effects.

这一次的提示词更长,也更具体。它不仅描述了主体,还描述了时间、天气、桌面材质、杯子颜色、报纸位置、光线效果和禁止项。生成结果相比前两次更加稳定,也更接近我想要的真实摄影效果。
1.6 API 调用心得
通过这次 Hugging Face API 调用实验,我体会到 AI 模型并不是简单地“输入一句话就一定得到想要的结果”。提示词的设计会明显影响生成图片的质量。越具体、越清晰的 prompt,越容易得到接近期望的结果。
此外,我也学到了 API 调用时需要注意 token 安全。不能把 token 直接写死在代码里,更不能上传到公开仓库或博客中。使用 .env 文件保存密钥是一种比较规范的做法。
在前端实现方面,Gradio 可以快速搭建一个可交互页面,让 API 调用结果更加直观。相比只在命令行中运行程序,网页前端更方便展示,也更适合作为课程作业的展示材料。
2.1 GitHub 个人主页仓库
我的GitHub个人主页:https://github.com/Grim761

通过搭建 GitHub 个人主页,我熟悉了 GitHub 个人展示页的基本原理,也意识到 GitHub 不仅可以用来存放代码,还可以作为展示个人学习经历和项目能力的平台。
3.1 个人技能树与评估
目前我掌握的技能主要包括以下几个方面:
个人技能树
├─ 编程语言
│ ├─ C / C++
│ ├─ Python
│ └─ JavaScript 基础
│
├─ 开发工具
│ ├─ Git
│ ├─ GitHub
│ ├─ VS Code
│ └─ Markdown
│
├─ 专业基础
│ ├─ 数据结构
│ ├─ 算法基础
│ ├─ 面向对象程序设计
│ └─ 数据库基础
│
├─ Web 开发
│ ├─ HTML
│ ├─ CSS
│ └─ 基础前端交互
│
└─ AI 工具使用
├─ 使用 AI 辅助学习
├─ 使用 API 调用模型
└─ 编写 Prompt
从目前的学习情况来看,我已经具备了一定的编程基础,能够完成基础程序设计任务,也能使用 GitHub、Markdown 等工具进行代码管理和学习记录。
但是我也发现自己还存在一些明显不足:
- 工程实践经验不足。以前更多是在完成单个编程题或小实验,对完整项目开发流程还不够熟悉。
- Git 使用还不够熟练。虽然会进行基本的提交和推送,但对分支管理、协作开发、冲突解决等内容还需要继续练习。
- 前后端开发能力还比较基础。能够理解简单网页,但距离完成一个完整可用的应用还有差距。
- 测试意识不够强。以前写代码更多关注“能不能运行”,对测试用例、异常处理和代码质量考虑不够。
- 表达和总结能力还需要提高。技术博客不仅要记录结果,也要讲清楚过程和思考。
3.3 感兴趣的方向
目前我比较感兴趣的方向包括:
- 人工智能应用开发
- Web 前后端开发
- 软件工程项目管理
- 数据分析与可视化
- 自动化工具开发
通过这次作业,我对“AI + 应用开发”产生了更多兴趣。以前对 AI 的理解更多停留在使用层面,而这次通过 API 调用模型,让我初步理解了如何把 AI 能力接入到自己的程序中。
目前我累计完成的代码量大约为:5000行
其中主要来源包括:
- 算法网站习题
- Python 小程序
- Web 前端基础练习
-数模
本学期我希望代码量能达到7000行。
为了完成这个目标,我计划从以下几个方面努力:
- 认真完成软件工程课程作业和团队项目。
- 每周至少进行一定量的代码练习。
- 在 GitHub 上维护自己的项目仓库。
- 学习用 issue、commit、README 等方式记录开发过程。
- 不只追求代码数量,也关注代码质量、可读性和可维护性。
4.1 AI 生成的软件工程学习指南与分析
AI 给出的学习指南大致如下:
-
打好编程基础
学习至少一门主要编程语言,理解变量、函数、类、数据结构和算法等基础内容。 -
学习软件工程基本概念
理解需求分析、软件设计、编码实现、测试、部署、维护等软件生命周期阶段。 -
掌握版本控制工具
学习 Git 的基本使用,包括 commit、branch、merge、pull request 等操作。 -
重视项目实践
通过课程项目、小型应用或开源项目实践,把理论知识应用到真实开发过程中。 -
学习测试与调试
掌握单元测试、集成测试、调试工具和日志分析方法,提高程序稳定性。 -
提升团队协作能力
学会阅读他人代码,参与代码评审,使用 issue 管理任务,并进行清晰沟通。 -
养成文档习惯
为项目编写 README、接口说明、使用说明和开发记录。 -
阶段性复盘
定期总结自己学到了什么、遇到了什么问题、下一步需要改进什么。
4.2 对 AI 生成内容的分析
我认为 AI 生成的软件工程学习指南整体是比较合理的。它没有只强调编程语言,而是把软件工程看成一个完整过程,包括需求分析、设计、编码、测试、协作和维护。这和我对软件工程课程的初步理解是一致的。
其中我认为最有价值的建议是:
- 重视 Git 和 GitHub 的使用。
- 重视项目实践,而不是只停留在理论学习。
- 重视测试和文档。
- 定期复盘自己的学习过程。
不过,AI 生成的内容也有一些不足。它给出的建议比较通用,没有结合我当前的具体能力水平,也没有给出非常细致的时间安排。例如,它建议学习测试,但没有具体说明应该先学习哪种测试框架,也没有说明如何在课程项目中使用测试。
因此,我认为 AI 可以作为学习规划的辅助工具,但不能完全替代自己的判断。更好的方式是先让 AI 给出总体框架,再结合课程要求、个人基础和实际项目结合 AI 的建议和自己的情况,我准备在本学期重点完成以下几件事: - 熟练使用 Git 和 GitHub,掌握分支、提交、合并和 pull request。
- 在课程项目中主动承担一部分开发任务。
- 每次作业完成后写博客记录过程,而不是只提交结果。
- 学习基本的软件测试方法,尝试为自己的代码编写测试用例。
- 提高代码可读性,减少临时拼凑式代码。
- 通过阅读优秀项目的 README 和源码,学习更规范的项目组织方式。进行调整。
5.1 博客园 Markdown 编辑器使用截图

6.1 总结
通过完成本次个人作业,我熟悉了软件工程课程中常用的几个平台,包括博客园、GitHub 和 Hugging Face。同时,我第一次比较完整地完成了从 API 调用到前端展示的过程。
在 Hugging Face API 调用部分,我学会了如何创建 token、安装依赖、读取环境变量、调用模型并展示生成结果。在 GitHub 个人主页搭建部分,我了解了 GitHub 个人展示页的创建方式。在博客撰写部分,我也进一步练习了 Markdown 的使用。
这次作业让我意识到,软件工程不仅仅是写代码,还包括工具使用、文档记录、版本管理、结果展示和自我总结。接下来我会继续提升自己的工程实践能力,争取在本学期的软件工程课程中完成一个更加完整、规范、有价值的项目。

浙公网安备 33010602011771号