软件工程第一次作业

这个作业属于哪个课程 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

huggingface获取token
用python调用api,开启后端

后端api成功
接着打开前端

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

flux_hf_hub_test

额度用完
然后是对应的代码:

点击查看代码
# -*- 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

github_README

三:个人能力分析

一、技能树梳理与自我评估 已具备的专业知识和能力

  • 编程语言 :熟悉 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 行

三、本课程最期待学习的知识

  1. 软件工程项目管理流程 :从需求分析→设计→开发→测试→上线的完整流程,之前都是写零散的小脚本,没系统学过怎么做一个"正式"的软件
  2. Git 协作与代码规范 :现在只会单人写代码提交,想学多人协作时怎么管理分支、怎么做 Code Review
  3. Web 前后端交互开发 :Flask 后端 + 前端页面怎么配合,这次 HuggingFace API 作业虽然搭起来了,但很多细节还是半懂
  4. 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 主页写漂亮
    第四学年(实战年)

  • 实习或进实验室,积累真实项目经验

  • 准备考研或秋招

  • 持续学习新技术,保持对行业的关注
    通用建议 :

  1. 每年 GitHub 贡献 1000+ 行代码(不是越多越好,要质量)
  2. 每个项目都要有 README 和文档
  3. 学会"先查再问",Stack Overflow 和官方文档是最好的老师
  4. 关注 2~3 个技术博主/公众号,保持技术敏感度 📋 我的分析
    是否合理 :整体框架合理,给出了分阶段的学习路径,覆盖了基础→进阶→方向→实战四个阶段,对本科生很有参考价值。

对我是否有帮助 :

  • 有用的部分 :GitHub 主页建设建议(刚好这次作业在做)、分阶段设定目标(帮我把"未来三年规划"具体化了)
  • 需要调整的部分 :AI 方向的建议比较笼统,没有具体说怎么深入 AI 图像生成或大模型应用;第二学年的内容我已经在做(Flask + 数据结构),但可以更早规划
  • 额外收获 :学到了"每年 GitHub 1000+ 行代码"这个量化指标,可以作为自我监督的参考

五:作业后台

编辑后台

posted @ 2026-09-15 17:54  莳萝莙  阅读(5)  评论(0)    收藏  举报