第一次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/15712 |
| 这个作业的目标 | 通过调用 Hugging Face API 并结合前端实现 AI 图像生成,掌握 API 调用和前后端交互方法;完成 GitHub 个人主页建设,梳理自己的技能、兴趣与未来规划;学习使用 Markdown 撰写博客作业,并通过自我评估明确后续学习方向。 |
| 学号 | 102401234 |
准备工作
-
github账号:https://github.com/cht-hyp
-
博客园账号:已申请通过账号 JFanH
-
已关注吴越钟、张明圣、王奇蕊的博客,加入博客园班级(202601 软件工程)
1. huggingface-API的调用
注册账号并创建 Token
- 正常创建账号后,点击右上角头像,进入设置界面,随后 create new token 创建一个api,预设可以选 Full Access,创建一个api,把api_key记下。

- 之后我们可以直接到模型页面

该界面的“View Code Snippets”可以看到调用API的代码

模型的调用
Python Flask 后端接收网页提交的提示词,通过 Hugging Face 官方 huggingface_hub SDK 的 InferenceClient 调用模型,并指定 fal-ai 作为推理提供商。Token 在后端先行配置,不通过网页传递。
调用成功后,后端将图片保存为 PNG 文件,并返回图片访问地址,供浏览器预览和下载。同时保存 JSON 文件,记录提示词、模型、生成时间及耗时,并在终端输出调用成功日志。调用失败时,网页显示相应的错误提示。
启动方式:
点击查看代码
cd 'D:\SE homework\homework1'
.\.venv314\Scripts\python.exe -X utf8 app.py
将API调用接入前端:前端提供提示词输入框和生成按钮。点击按钮后,网页向 Python 后端的 /api/generate 接口发送 POST 请求。后端调用模型并保存图片,将图片地址返回前端,网页随后显示图片并提供下载功能。
点击查看代码
const response = await fetch('/api/generate', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({prompt})
});
const data = await response.json();
启动后,在浏览器访问 http://127.0.0.1:5000 ,输入提示词并点击“生成图片”。
写提示词
初次输入详细中文提示词,让AI润色了一下,结果和预期大相径庭,

考虑到模型对中文理解可能存在偏差,也可能是提示词过长的原因,更换提示词后,输出结果就较理想了


API调用成功的记录:

2. Github个人主页搭建
我的github主页https://github.com/cht-hyp/cht-hyp


3. 博客园随笔
随笔已发布至https://www.cnblogs.com/JFanH/p/22848247

点击展开随笔
一、已具备的专业知识与能力
-
经典算法与数据结构
- 掌握数组、链表、队列、栈、树、图等核心数据结构,能完成简单算法实现。
- 定位:足以应对笔试基础题,但在复杂场景(如高级动态规划、图论优化)中缺乏实战训练。
-
计算机网络基础
- 熟悉 OSI 七层模型、TCP/UDP 协议、IP 寻址、HTTP 协议基本流程。
- 定位:具备网络通信的概念框架,但不具备网络编程(如 Socket、HTTPS 抓包、WebSocket)实操能力。
-
传统机器学习与模式识别
- 掌握监督学习(感知机、SVM、Fisher 判别、贝叶斯生成式模型)和无监督学习(K-Means)理论。
- 理解决策论中的最小错误率与最小风险权衡。
- 定位:对传统 ML 算法有较深数学理解,但缺乏深度学习的实战经验(CNN、RNN、Transformer 等现代架构仅停留在"简单神经网络"认知层面)。
-
人工智能与最优化算法
- 了解模拟退火、蚁群、蜂群、遗传算法及基础数学优化方法。
- 定位:偏向认知层面,未在实际项目中应用过这些启发式算法。
-
基础编程与实验环境
- Python 略知一二,C/C++ 能写基础算法。
- 熟悉 VS Code、Git(基础 add/commit/push)
- 定位:具备实验环境搭建能力,但工程化程度低(未接触过单元测试、CI/CD、项目结构规范)。
二、感兴趣的技术方向
- 方向一:前后端开发 —— 想将 AI 模型落地为 Web 应用,但对全栈开发目前一窍不通。
- 方向二:AI 工程化落地 —— 未来希望将所学知识变现,需要具备从"模型"到"产品"的工程链路能力。
三、尚欠缺的能力
-
现代深度学习实战经验
- 只会一些基础神经网络原理,未系统学习 CNN、Transformer、生成模型(GAN/扩散模型)的代码实现与调参。
-
前后端工程开发基本为零
- 不懂前端(HTML/CSS/JS/框架),不懂后端(数据库、API 设计、服务器部署),不懂系统设计。
-
过度依赖 AI 辅助编码
- 缺乏独立调试、架构设计和代码审查能力。容易陷入"能跑就行"的陷阱,缺乏对代码质量、可维护性的追求。
-
软件工程规范缺失
- 不太懂 Git 分支管理、代码风格规范、模块化设计、异常处理与日志系统。
截至目前的代码量与希望达到的代码量
-
目前约1.1w行,算上vibe coding的有4.4w行
-
希望达到的代码量约6w行
最期待学习的知识
- 关于前后端一些架构的知识,以及落地到实践的方法
DeepSeek给的软件工程课程学习指南(以下)
结合你"想学前后端"和"想做 CV 项目落地"的目标,我为你规划了一条从"实验型代码"转向"工程型项目"的学习路径。建议按顺序推进,不要跳过基础。
阶段一:工程素养补全(用时 2~3 周,同步进行)
这一阶段不涉及框架,只解决"代码写得太随意"的问题。
| 学习目标 | 具体内容 | 最低完成标准 |
|---|---|---|
| Git 协作与规范 | 学习 Git Flow(分支、PR、commit 规范) | 在 CV 项目中创建 dev 分支,完成一次合并 |
| Python 工程化 | 学习 requirements.txt、虚拟环境(venv/conda)、项目目录规范(src/config/utils 分层) | 重组你 CV 项目的文件夹结构 |
| 代码调试技巧 | 学习使用 pdb 打断点、logging 模块替代 print | 在 Chatbot 项目里加入日志输出 |
阶段二:后端开发入门(用时 1~2 个月,建议优先)
因为你要做"前端交互生成图像"的作业,后端是连接模型与前端的桥梁,必须最先攻克。
| 学习目标 | 具体内容 | 推荐资源 / 实践 |
|---|---|---|
| Web 框架(Flask / FastAPI) | 学习路由、请求体、返回值,重点是写 API 接口 | 把你 Hugging Face 的生成函数,封装成 POST /generate 接口 |
| 数据库基础 | 学习 MySQL 或 SQLite 的 CRUD,了解 ORM(SQLAlchemy) | 给你的图生图应用加一个"历史记录"保存功能 |
| 异步编程概念 | 了解 async/await,解决模型加载耗时阻塞的问题 | 尝试用 FastAPI 的异步接口部署模型 |
关键检验:能通过 Postman/浏览器访问你本地的 API,成功返回一张图片,且后端有日志记录。
阶段三:前端基础与交互(用时 1 个月)
目标不是成为 UI 设计师,而是能看懂前端代码、能调通接口。
| 学习目标 | 具体内容 | 最低完成标准 |
|---|---|---|
| HTML / CSS 基础 | 学会布局(Flex/Grid)、样式调整 | 写一个干净的文本框 + 按钮 + 图片展示区 |
| JavaScript 核心(ES6) | 掌握 fetch 请求、async/await、DOM 操作 | 用 fetch 调用你自己的后端 API |
| 简易前端框架(Vue 或 React 选其一) | 只学组件化与 axios 请求库 | 用 Vue/React 重构之前的交互页面 |
关联作业:你之前的"前端接口交互生成"作业,完全可以使用这个阶段的技术栈完成。
阶段四:系统部署与容器化(用时 2 周)
为了让同学/老师能在线访问你的作业,你需要学习部署。
| 学习目标 | 具体内容 | 最低完成标准 |
|---|---|---|
| Docker 基础 | 写 Dockerfile,将项目打包成镜像 | 让你的 Flux 图像生成应用能在 Docker 容器里跑起来 |
| 云服务器基础 | 了解 Linux 基本命令、nohup / screen 后台运行 | 将服务部署到云服务器(如阿里云/腾讯云轻量服务器),生成公网链接 |
特别建议(针对"依赖 AI"的问题)
- 禁用 Copilot/Cursor 三天:尝试独立写一个简单的 CRUD 接口(比如图书管理系统后端),遇事先查官方文档(MDN、FastAPI 文档),不要复制粘贴。
- 读优秀源码:去 GitHub 找一个小型 Star 数高的 Python Web 项目,读它的 app/ 目录结构,模仿它的分层思想。
- 考研与工程的平衡:考研是长期目标(三年),软件工程是中期技能。建议每天拿出 1.5 小时雷打不动地写工程代码,把学到的数据结构和网络知识在代码中落地(比如用 Socket 写一个简单的聊天室)。
DS给建议的学习路线由易到难,但是最难的是看我能否沉下心来好好动手去做。如果执行到位,应该或多或少都对我有点帮助。

浙公网安备 33010602011771号