软件工程第一次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2026-01SoftwareEngineeringandSoftwareEngineeringPractice |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2026-01SoftwareEngineeringandSoftwareEngineeringPractice/homework/16716 |
| 这个作业的目标 | 调用 HuggingFace Flux 模型生成写实图像,结合前端实现交互生成,记录 API 调用全过程 |
| 学号 | 102302113 |
一:Hugging Face API:生成一张图像
在hugging face官网注册个人账号并获取API,调用Flux模型生成一张最贴近真实世界的图像
注册并且获取了huggingface的token

用python调用api,开启后端

接着打开前端

前期测试的时候生成了一张小猫带墨镜的图像,结果后续生成真实世界图像的时候额度不够用了,只能作罢了
这是小猫的图像,还有失败的结果


然后是对应的代码:
点击查看代码
# -*- coding: utf-8 -*-
"""
Flask 后端:代理 HuggingFace API 请求(解决前端 CORS + 网络拦截问题)
作者:102302113王泽炜
运行: python hf_backend.py
然后浏览器打开: http://127.0.0.1:5001
"""
import os
import io
import base64
from flask import Flask, request, jsonify, send_from_directory
from huggingface_hub import InferenceClient
# ====== 配置 ======
HF_TOKEN = "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"
MODEL_NAME = "XLabs-AI/flux-RealismLora"
PROXY = "http://127.0.0.1:7897"
FRONTEND_DIR = r"C:\Users\莳萝\Desktop"
# ===================
# 设置代理环境变量(让 huggingface_hub 走 ***)
os.environ["HTTP_PROXY"] = PROXY
os.environ["HTTPS_PROXY"] = PROXY
os.environ["http_proxy"] = PROXY
os.environ["https_proxy"] = PROXY
app = Flask(__name__, static_folder=FRONTEND_DIR)
client = InferenceClient(model=MODEL_NAME, token=HF_TOKEN)
@app.route("/")
def index():
"""打开前端页面"""
return send_from_directory(FRONTEND_DIR, "hf_frontend.html")
@app.route("/api/generate", methods=["POST"])
def generate():
"""代理:接收前端 prompt,调用 HF API,返回 base64 图片"""
data = request.json or {}
prompt = data.get("prompt", "").strip()
width = int(data.get("width", 1024))
height = int(data.get("height", 1024))
if not prompt:
return jsonify({"error": "Prompt 不能为空"}), 400
print(f"[代理] 收到请求 prompt={prompt[:50]}... 尺寸={width}x{height}")
try:
img = client.text_to_image(prompt, width=width, height=height)
# 把 PIL Image 转成 base64 传给前端
buf = io.BytesIO()
img.save(buf, format="PNG")
b64 = base64.b64encode(buf.getvalue()).decode("utf-8")
print(f"[代理] 生成成功!")
return jsonify({
"success": True,
"image": f"data:image/png;base64,{b64}",
"prompt": prompt
})
except Exception as e:
print(f"[代理] 失败: {type(e).__name__}: {e}")
return jsonify({
"success": False,
"error": f"{type(e).__name__}: {e}"
}), 500
if __name__ == "__main__":
print("=" * 60)
print("HuggingFace Flux 交互生成 - 后端启动")
print("作者:102302113王泽炜")
print("=" * 60)
print(f"[代理] 已设置: {PROXY}")
print(f"[模型] {MODEL_NAME}")
print("浏览器访问: http://127.0.0.1:5001")
print("按 Ctrl+C 停止服务\n")
app.run(host="127.0.0.1", port=5001, debug=False)
二:GitHub个人主页
这是我的个人主页链接:https://github.com/shiluooo/shiluooo/blob/main/README.md

三:个人能力分析
一、技能树梳理与自我评估 已具备的专业知识和能力
- 编程语言 :熟悉 Python、C、JavaScript,能用 Python 完成数据处理、图像生成等任务
- 工具使用 :熟练使用 Git 版本控制、VS Code 代码编辑、Markdown 写作
- 框架与库 :Flask(Web 后端)、scikit-learn(机器学习)、HuggingFace Hub(AI 图像生成)
- 工程实践 :能独立完成小项目的开发与调试,能看懂并修改开源代码 感兴趣的技术方向
- 🤖 人工智能与机器学习 :AI 图像生成、大语言模型应用
- 🌐 Web 全栈开发 :前端交互 + 后端 API
- 📊 数据可视化与分析 :聚类分析、图表呈现 还欠缺的能力
- 前端技能薄弱(HTML/CSS 基础水平低,JavaScript 不够熟练)
- 缺少大型项目协作经验(Git 分支管理、Code Review 等还没实际用过)
- 英语技术文档阅读速度慢,查资料依赖中文翻译
二、代码量统计
截至目前的代码量 :大约 1500~3000 行 (主要来自数据聚类实验、医学影像可视化、HuggingFace API 调用项目)
本学期课程后希望达到的代码量 : 6000 行以上 ,其中:
- 软件工程课程相关项目:约 2000 行
- 其他课程实践:约 1000 行
三、本课程最期待学习的知识
- 软件工程项目管理流程 :从需求分析→设计→开发→测试→上线的完整流程,之前都是写零散的小脚本,没系统学过怎么做一个"正式"的软件
- Git 协作与代码规范 :现在只会单人写代码提交,想学多人协作时怎么管理分支、怎么做 Code Review
- Web 前后端交互开发 :Flask 后端 + 前端页面怎么配合,这次 HuggingFace API 作业虽然搭起来了,但很多细节还是半懂
- AI 在软件工程中的应用 :比如用 AI 辅助写代码、生成测试用例、文档生成等
希望获得的收获 :
- 能独立完成一个小型 Web 应用的全流程开发
- 养成良好的编码规范和文档习惯
- 掌握 Git 多人协作的基本流程,为将来参与开源项目做准备
四:GPT-4生成的学习指南
《大数据专业学生学习路线图(本科阶段)》
第一学年(基础年)
-
学好一门编程语言(推荐 Python 或 C),能独立写 500 行以上的小项目
-
掌握 Git 基本操作(commit、push、pull、branch)
-
学会使用 Markdown 写技术笔记,养成"学完就记"的习惯
第二学年(进阶年) -
学习数据结构与算法,刷题(LeetCode 每周 2~3 题)
-
掌握一门 Web 框架(Flask/Django 或 Spring Boot),做一个小网站
-
了解数据库基本概念(SQL + 至少会用 MySQL/SQLite)
第三学年(方向年) -
选择一个方向深入:Web 全栈 / AI / 移动端 / 后端
-
做一个完整的课程项目或开源贡献,写好 README
-
准备实习:整理简历,把 GitHub 主页写漂亮
第四学年(实战年) -
实习或进实验室,积累真实项目经验
-
准备考研或秋招
-
持续学习新技术,保持对行业的关注
通用建议 :
- 每年 GitHub 贡献 1000+ 行代码(不是越多越好,要质量)
- 每个项目都要有 README 和文档
- 学会"先查再问",Stack Overflow 和官方文档是最好的老师
- 关注 2~3 个技术博主/公众号,保持技术敏感度 📋 我的分析
是否合理 :整体框架合理,给出了分阶段的学习路径,覆盖了基础→进阶→方向→实战四个阶段,对本科生很有参考价值。
对我是否有帮助 :
- 有用的部分 :GitHub 主页建设建议(刚好这次作业在做)、分阶段设定目标(帮我把"未来三年规划"具体化了)
- 需要调整的部分 :AI 方向的建议比较笼统,没有具体说怎么深入 AI 图像生成或大模型应用;第二学年的内容我已经在做(Flask + 数据结构),但可以更早规划
- 额外收获 :学到了"每年 GitHub 1000+ 行代码"这个量化指标,可以作为自我监督的参考
五:作业后台


浙公网安备 33010602011771号