软件工程第一次作业

软件工程第一次作业

这个作业属于哪个课程 202601 软件工程(福州大学)
这个作业要求在哪里 2026秋软件工程个人作业(第一次)
这个作业的目标 完成 GitHub、博客园、Hugging Face 平台账号注册与基础配置;掌握 Hugging Face API 调用方法,完成 AI 生图模型的调用逻辑设计与前端交互方案;完成 GitHub 个人主页搭建,梳理个人技能体系与三年发展规划
学号 102401328

一、准备工作

二、huggingface-API的调用

任务目标:

在 HuggingFace 官网注册个人账号并获取 API Token,通过代码调用 XLabs-AI/flux-RealismLora 模型生成最贴近真实世界的图像,且要结合前端页面实现交互生成

项目结构:

hf-flux-app/
├── app.py              # Flask 后端:调用 HuggingFace Inference API
├── .env                # 配置(HF_TOKEN + 模型 + 通道)
├── requirements.txt    # Python 依赖
└── static/
    └── index.html      # 前端交互页面

操作步骤

1. 注册账号与获取 API Token

打开 HuggingFace 官网:https://huggingface.co ,点击右上角 Sign Up 注册。登录后点击右上角头像 → Settings → 左侧 Access Tokens,点击 Create new token,选择类型为 Fine-grained,点击创建即可。(注意:要保存好Token)

QQ20260911-173356

2. 前端 index.html 的交互逻辑

  • 提示词输入框 + 3 个预设提示词快捷按钮
  • 点击 生成图像 → 通过 fetch("/api/generate") 发 POST 请求
  • 等待期间显示加载动画;成功后渲染 base64 图像,并显示模型名、耗时、请求次数
  • 页面底部 API 调用日志 区域实时记录每次请求与成功/失败结果

3. 后端 API 核心调用逻辑

本项目的图像生成后端基于 Flask 框架开发,通过 Hugging Face 官方 SDK 对接 flux-RealismLora 写实模型。核心调用逻辑本质就是 收请求 → 调模型 → 转格式 → 返结果 四个步骤。

核心精简代码

@app.route("/api/generate", methods=["POST"])
def generate():
    # 1. 读取前端传入的提示词
    prompt = request.get_json()["prompt"]

    # 2. 初始化推理客户端,调用AI模型生成图像
    client = InferenceClient(provider="fal-ai", api_key=HF_TOKEN)
    image = client.text_to_image(
        prompt,
        model="XLabs-AI/flux-RealismLora",
        width=1024,
        height=1024
    )

    # 3. 图像转base64,适配JSON传输
    buf = BytesIO()
    image.save(buf, format="PNG")
    img_b64 = base64.b64encode(buf.getvalue()).decode()

    # 4. 返回前端可直接渲染的图片数据
    return jsonify({"image": f"data:image/png;base64,{img_b64}"})

详细代码放在了GitHub上


下面是API成功调用的截图:

QQ20260911-180031

前端交互页面:

QQ20260911-144315

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

我们的目标是生成最贴近真实世界的图像。真实感的关键在于让模型模仿相机拍出来的照片,而不是画出来的图。我共迭代了两版提示词:

第一版:(简单的提示词)

A coffee shop in the morning, warm sunlight, a barista making coffee

QQ截图20260911143824

问题:场景基本符合预期,但缺少写实锚点,无法触发模型写实权重,且画面缺乏真实照片的质感和细节。

第二版(加入摄影参数和材质描述,效果理想):

A photorealistic close-up portrait of an elderly craftsman in his workshop, 
warm golden hour light streaming through a dusty window, visible skin texture 
with wrinkles and pores, wearing a worn leather apron, holding a wooden plane, 
shot on 85mm f/1.8 lens, shallow depth of field, natural color grading, 
8k ultra-detailed, documentary photography style

QQ截图20260911144058

结果:画面具有明显的照片质感,皮肤纹理、光影层次和景深效果均达到写实要求。

5. API调用体验与心得总结

API的调用变简单了,HuggingFace 把复杂的模型部署抽象成了一个 HTTP 请求,一个 URL、一个 Token、一段提示词即可拿到结果,不需要本地部署几十 GB 的模型权重,让普通笔记本也能用上 FLUX 这种大模型。在第一次调用的时候,返回了 503,后面问了AI后才知道这是正常现象,Serverless 推理的模型是按需加载的,冷启动需 20-60 秒,代码已做自动等待重试。提示词的精准度决定了最终的生成效果,结构化的提示词设计能够提升输出的质量。

三、 GitHub个人主页搭建

我选择方案一:创建个人资料自述文件。新建一个名称与GitHub ID相同的仓库,在仓库根目录的README中撰写个人介绍

QQ20260911-223728

四、随笔

技能树与自我评估

后台博文编辑页面的截图

QQ20260911-224446

posted @ 2026-09-11 22:56  MaJincheng  阅读(10)  评论(0)    收藏  举报