这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/15712
这个作业的目标 1.注册GitHub、博客园账号,加入课程班级;2.调用Hugging Face Flux‑RealismLora模型API,实现前后端交互AI图像生成;3.搭建GitHub个人主页;4.梳理个人技能树,使用AI生成软件工程学习指南并做分析总结,熟悉Markdown写作
学号 102401307

一、准备工作

1. GitHub账号:完成注册,完善个人基础信息。
2. 博客园账号:注册博客园账号,申请开通个人技术博客,完善昵称、头像,修改编辑器为Markdown编辑器。关注任课老师吴越钟、助教张明圣、王奇蕊的博客;加入班级 202601软件工程 ,完成实名制认证。

二、HuggingFace‑API调用实验

2.1 实验环境

  • 操作系统:Windows
  • 后端:Python Flask
  • 模型: XLabs‑AI/flux‑RealismLora
  • 功能:网页前端输入提示词,后端调用HuggingFace推理API,交互生成真实感图像。

2.2 操作步骤

1. HuggingFace官网注册账号,进入设置页面生成 read 权限Access Token,复制令牌字符串。
2. 项目根目录新建 .env 文件,写入 HF_TOKEN="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" 。

⚠️踩坑:Windows容易生成 .env.txt ,需要关闭文件后缀隐藏,修改文件名;令牌不要带多余空格、不要带上 Bearer 前缀。

3. 登录HuggingFace,打开模型页面,同意模型许可协议。
4. 编写Flask后端代码,封装HuggingFace推理接口,编写简单HTML前端页面,提供输入框、生成按钮。
5. CMD终端执行 python app.py 启动后端服务,浏览器访问  127.0.0.1:5000 打开图像生成网页。
3dc1618566d5a57d0acc3452ad2a91e4
6. 在文本框输入提示词,点击生成图片,等待API返回图像。

2.3 遇到的问题与排错

1. 报错403禁止访问
报错信息: 该认证方法没有足够的权限代表用户向推理斗篷调用推理提供者

  • 原因:token复制有多余字符;token权限不是read;没有同意模型许可协议;修改.env之后没有重启后端服务。
  • 解决:重新生成read权限令牌,确认 .env 文件名正确,网页接受模型license;关闭CMD终端,重新运行 python app.py 启动服务。

2.4 提示词设计思路与修改过程

初始提示词:a cat

改进:
plaintext

photorealistic, a cat sitting on wooden windowsill, natural soft daylight, high detail, realistic fur texture, 8k, sharp focus, DSLR photo

  • 设计思路:
     photorealistic  开启真实照片风格; natural soft daylight 模拟柔和自然光; realistic fur texture 强化物体细节; 8k,DSLR photo 提升画面写实效果,贴合本作业“贴近真实世界图像”的要求。
  • 修改过程:一开始提示词过于简单,生成画面偏卡通;逐步增加光影、材质、相机画质关键词,图像真实感明显提升。

2.5 运行结果

1492ef91179301d3fabe7280c801d4bc
0d836093566c9daf5546528bb0d104e7

2.6 API调用体验与心得

通过本次实验,我了解Hugging Face推理API的工作流程:本地前端收集用户输入,后端携带token向远程模型接口发送请求,接收返回结果展示在网页。
权限问题是高频踩坑点,令牌权限、协议许可、配置文件格式任意一处出错就会403报错,修改配置必须重启服务才能生效。
国内网络访问huggingface速度有限,生成图片需要等待较长时间。同时提示词极大影响AI输出效果,想要贴近真实图像,需要补充光影、材质、相机参数类描述。

核心代码片段

后端 app.py

python

  
from flask import Flask, render_template, request
import requests
import os
from dotenv import load_dotenv

load_dotenv()
app = Flask(__name__)
HF_TOKEN = os.getenv("HF_TOKEN")
API_URL = "https://router.huggingface.co/fal-ai/fal-ai/flux-lora"

@app.route('/',methods=["GET","POST"])
def index():
    image_url = None
    if request.method == "POST":
        prompt = request.form.get("prompt")
        headers = {"Authorization": f"Bearer {HF_TOKEN}"}
        payload = {"prompt":prompt}
        resp = requests.post(API_URL,headers=headers,json=payload)
        res_json = resp.json()
        image_url = res_json["images"][0]["url"]
    return render_template("index.html",image_url=image_url)

if __name__ == '__main__':
    app.run(debug=True)
 

前端templates/index.html

html

<!DOCTYPE html>
<html lang="zh‑CN">
<head>
    <meta charset="UTF‑8">
    <title>Flux AI图片生成</title>
</head>
<body>
    <h1>AI真实图像生成器</h1>
    <form method="post">
        <textarea name="prompt" placeholder="输入图片描述提示词" rows="4" cols="60"></textarea>
        <br>
        <button type="submit">生成图片</button>
    </form>
    {% if image_url %}
        <h3>生成结果</h3>
        <img src="{{image_url}}" style="max‑width:800px">
    {% endif %}
</body>
</html>
 

三、GitHub个人主页搭建

方案1:同名仓库README个人主页

新建仓库,仓库名必须和你的GitHub用户名完全一致。仓库根目录编辑 README.md ,作为个人主页内容。

个人主页内容

1. 自我介绍
我是福州大学计算机专业学生,平时喜欢接触AI图像生成、网络编程,喜欢动手做小型demo,乐于折腾各类开源工具。
2. 个人成果、技能、自我评估
✅已掌握:Python基础、简单Flask后端开发;会使用Markdown;了解Linux基础命令;会简单调用第三方API;掌握基础的git提交操作。
🔍感兴趣方向:AIGC应用开发、后端服务开发。
📚希望学习:软件工程开发流程、项目协作、前端交互开发、大模型应用开发。
3. 未来三年发展规划

  • 短期(在校):学好软件工程课程,多做小型实战项目,熟悉团队协作开发;积累项目代码仓库。
  • 中期:夯实计算机专业基础,积累工程实践经验。
  • 长期目标:希望从事后端或者AI应用开发相关岗位,持续学习新技术。

87a9b1b8c527c5a96ca88e44e216b3df

四、博客园随笔内容

4.1 技能树与自我评估

1. 已经具备能力

  • 会Python基础编程,可以写简单web后端demo;
  • 了解git基础操作,能够完成代码提交;
  • 掌握Markdown基础语法,可以编写技术文档;
  • 了解Linux虚拟机基础操作,能够部署简单程序;
  • 可以调用第三方AI API,完成简单前后端交互小项目。

2. 感兴趣技术方向
AIGC应用开发、Web后端开发。
3. 欠缺能力

  • 大型项目工程化经验不足;
  • 前端页面美化能力薄弱;
  • 团队协同开发流程实践少;
  • 软件测试、规范开发流程不熟悉。

4.2 代码量现状与目标

  • 当前代码量:约几百行,大多课程实验demo。
  • 本学期课程结束希望达到代码量:2000行以上,积累完整小项目。

4.3 课程期待学习知识

希望学习软件开发完整流程:需求分析、设计、编码、测试;学习团队协作开发;学会规范化写文档;掌握项目版本管理;学会工程化思维,不只是写可以跑的代码,更要写可维护、规范的软件。