软件工程第一次作业
软件工程第一次作业
| 这个作业属于哪个课程 | 202601 软件工程(福州大学) |
|---|---|
| 这个作业要求在哪里 | 2026秋软件工程个人作业(第一次) |
| 这个作业的目标 | 完成 GitHub、博客园、Hugging Face 平台账号注册与基础配置;掌握 Hugging Face API 调用方法,完成 AI 生图模型的调用逻辑设计与前端交互方案;完成 GitHub 个人主页搭建,梳理个人技能体系与三年发展规划 |
| 学号 | 102401328 |
一、准备工作
- GitHub 账号:https://github.com/majc888888
- 博客园账号:https://home.cnblogs.com/u/Jincheng888
- 已关注吴越钟老师、助教张明圣、助教王奇蕊的博客,加入了博客园班级(202601 软件工程)
二、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)

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成功调用的截图:

前端交互页面:

4. 提示词设计思路与修改过程
我们的目标是生成最贴近真实世界的图像。真实感的关键在于让模型模仿相机拍出来的照片,而不是画出来的图。我共迭代了两版提示词:
第一版:(简单的提示词)
A coffee shop in the morning, warm sunlight, a barista making coffee

问题:场景基本符合预期,但缺少写实锚点,无法触发模型写实权重,且画面缺乏真实照片的质感和细节。
第二版(加入摄影参数和材质描述,效果理想):
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

结果:画面具有明显的照片质感,皮肤纹理、光影层次和景深效果均达到写实要求。
5. API调用体验与心得总结
API的调用变简单了,HuggingFace 把复杂的模型部署抽象成了一个 HTTP 请求,一个 URL、一个 Token、一段提示词即可拿到结果,不需要本地部署几十 GB 的模型权重,让普通笔记本也能用上 FLUX 这种大模型。在第一次调用的时候,返回了 503,后面问了AI后才知道这是正常现象,Serverless 推理的模型是按需加载的,冷启动需 20-60 秒,代码已做自动等待重试。提示词的精准度决定了最终的生成效果,结构化的提示词设计能够提升输出的质量。
三、 GitHub个人主页搭建
我选择方案一:创建个人资料自述文件。新建一个名称与GitHub ID相同的仓库,在仓库根目录的README中撰写个人介绍

四、随笔
后台博文编辑页面的截图


浙公网安备 33010602011771号