| 软件工程 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/join?id=CfDJ8Ow5-In01nBEvFwaadRGjqH6-l7-Yw52SEssRis1tSY93RHdhZabekRIapaAe-n |
|---|---|
| 博客园 | <2026秋软件工程个人作业(第一次)> |
| 这个作业的目标 | 完成 Hugging Face API 调用 Flux 模型并结合前端实现交互图像生成;搭建 GitHub 个人主页;撰写博客随笔梳理个人技能树,借助 AI 生成软件工程学习指南并分析 |
| 学号 | <102401404> |
作业随笔:HuggingFace API 调用 + GitHub 个人主页 + 软件工程个人总结
一、Hugging Face API 调用:XLabs-AI/flux-RealismLora 图像生成
1. 操作步骤
-
访问 huggingface.co,注册个人账号,进入个人设置页面创建 API Token(权限选择 Read),保存密钥,妥善保管不公开。
-
打开模型页面
XLabs-AI/flux-RealismLora,阅读模型说明与推理文档,确认调用方式。 -
编写 Python 后端代码,使用
huggingface_hub库的 InferenceClient 调用模型,传入提示词、负面提示词与图像尺寸参数,生成写实图片。 -
编写前端 HTML 页面,提供提示词输入框、生成按钮与图片展示区域;前端向后端发送请求,后端调用模型接口,实现交互式图像生成。
-
运行项目,填写提示词点击生成,保存 API 调用成功日志截图、前端页面最终生成图像截图。
2. Python 后端调用代码
from huggingface\_hub import InferenceClient
\# 替换为你的HF Token
client = InferenceClient(token="<你的HF\_TOKEN>")
model\_id = "XLabs-AI/flux-RealismLora"
prompt = "<填写你的提示词>"
negative\_prompt = "<填写负面提示词>"
image = client.text\_to\_image(
  prompt,
  model=model\_id,
  negative\_prompt=negative\_prompt,
  width=1024,
  height=1024
)
image.save("result.png")
print("图片生成成功,已保存为 result.png")
3. 前端交互页面 index.html
\<!DOCTYPE html>
\<html lang="zh-CN">
\<head>
  \<meta charset="UTF-8">
  \<title>Flux写实图像生成器\</title>
\</head>
\<body>
  \<h3>Flux RealismLora 写实图像生成器\</h3>
  \<textarea id="prompt" rows="4" cols="60" placeholder="输入提示词,描述你想生成的写实画面">\</textarea>\<br>
  \<button onclick="generateImg()">生成图片\</button>
  \<div>
  \<h4>生成结果:\</h4>
  \<img id="resultImg" width="600"/>
  \</div>
\<script>
async function generateImg(){
  const prompt = document.getElementById("prompt").value;
  const res = await fetch("/generate",{
  method:"POST",
  headers:{"Content-Type":"application/json"},
  body:JSON.stringify({prompt:prompt})
  })
  const blob = await res.blob();
  document.getElementById("resultImg").src=URL.createObjectURL(blob);
}
\</script>
\</body>
\</html>
4. 提示词设计思路与修改过程
一、提示词设计思路与修改过程
初始版本1(第一张图,中文)

提示词:麦当劳的薯条和可乐放在桌子上
✅设计思路:
只描述主体和场景,属于极简基础提示词。只定义画面里有什么物体、摆放位置,没有对物体质感、细节做约束,交由AI自由发挥画面细节。
❌存在问题:
AI生成的薯条形态、可乐气泡、吸管样式不可控。生成的薯条偏饱满新鲜,没有干瘪感;可乐气泡很少,吸管没有红蓝细纹,画面细节不符合预期。
初始版本2(第二张图,中文)
提示词:薯条和可乐放在桌子上
✅设计思路:
去掉品牌“麦当劳”,保留主体和场景,测试移除品牌关键词对画面效果的影响,依旧只限定物体,不添加质感细节。
❌存在问题:
缺少品牌约束,AI不一定会生成麦当劳包装;同时仍然没有限定薯条干瘪程度、可乐气泡、吸管花纹,细节依旧随机,达不到想要的效果。

初始版本3
提示词原文:The McDonald's fries and cola are on the table.
翻译:麦当劳的薯条和可乐放在桌子上
✅提示词设计思路
采用英文基础描述词,保留主体与场景,测试相同语义、不同语言对图像生成API输出效果的影响。
只定义画面主体:麦当劳薯条、可乐摆放在桌面,没有增加质感、气泡、吸管等细节约束,让AI自由渲染光影、物体细节。

❌本次生成结果暴露的问题
-
画面出现两份薯条、两杯可乐,超出预期,AI自主增加物体数量;
-
薯条是饱满新鲜的状态,没有实现“干瘪”效果;
-
可乐缺少充足气泡;吸管是纯白色,不存在红蓝细纹;
-
场景变成餐厅座椅背景,不再是简单桌面。
📌和前两次中文提示词对比
-
第一轮中文:麦当劳薯条可乐放桌上 → 物体数量正常,但细节不可控
-
第二轮中文:薯条可乐放桌上 → 丢失麦当劳品牌包装
-
第三轮英文基础句:主体描述换英文,品牌保留,但AI额外生成多份食物,场景发生改变
迭代结论:
单纯更换提示词语言,如果缺少细节约束,依旧无法稳定控制画面。英文基础句也会出现物体数量
迭代优化版本(英文提示词,最终版)
The McDonald's fries and cola are on the table. The fries look naturally shriveled, cola with abundant bubbles, the straw has thin red and blue stripes.
✅迭代优化思路: -
保留基础主体句子,锁定场景:麦当劳薯条+可乐放置桌面
-
增加物体质感修饰:naturally shriveled 限定薯条自然干瘪收缩,解决薯条太新鲜的问题
-
增加液体细节:abundant bubbles 指定可乐拥有丰富气泡感
-
增加道具细节:the straw has thin red and blue stripes,约束吸管带有红蓝细条纹
-
选用英文提示词:很多图像生成API对英文描述词识别精度更高,细节理解更稳定。
迭代逻辑总结:基础提示词只能控制画面有什么;想要精准控制物体质感、细节特征,必须追加属性描述词,把想要的视觉特征一条条写清楚。
二、API调用操作步骤 -
准备提示词文本:先写中文基础提示词,测试第一轮生成;观察生成图片缺陷,提炼缺失的细节,翻译优化为英文详细提示词。
-
打开AI绘图网页端API界面,在输入框粘贴提示词。
◦ 第一轮输入中文提示词「麦当劳的薯条和可乐放在桌子上」,点击生成,得到第一张图片;
◦ 第二轮输入中文提示词「薯条和可乐放在桌子上」,点击生成,得到第二张图片;
◦ 第三轮粘贴优化后的英文长提示词,提交API请求。
-
API后端接收文本,调用图像模型,根据文字描述渲染图片,返回生成结果展示在页面。
-
结果对比:对比3次输出图片,观察每一轮提示词修改带来的画面变化,记录差异。
-
截图保存:保存每一轮的聊天记录、提示词、生成图片,作为实验材料。
5. 截图展示
Hugging Face API 调用成功日志截图

![HF API调用日志截图]
前端交互页面生成图像截图

![前端页面效果图]
6. API 调用体验与心得
`<AI绘图API调用实验报告(提示词设计、迭代过程、操作步骤、心得)
API调用体验与心得
-
简单提示词只能确定画面大体内容,缺少细节修饰词时,AI会自主脑补细节,随机性很强,很难一次性得到想要的效果。
-
提示词是递进迭代的过程:先搭建主体场景,再针对不满意的地方补充质感、纹理、道具细节,一点点约束画面。
-
不同语言提示词效果有差异:本次测试中,英文词汇对物体质感描述识别更精准,适合写实静物类画面。
-
使用图像生成API,需要学会“把脑海里的画面拆成一条条可描述的特征”,不能只写大体场景,越具体的描述,生成结果越可控。
-
局限性:即使写了详细提示词,AI偶尔还是会出现细节错误(物体变形、细节丢失),需要多次调整关键词反复调试。
`
二、GitHub 个人主页搭建
本次选择方案:方案 1 创建同名仓库 README.md
截图展示
GitHub 个人主页效果截图

![GitHub个人主页截图]
三、课程随笔
软件工程课程学习指nan
一、个人基础盘点
已掌握
熟练C语言,了解C++面向对象;掌握常见数据结构、基础算法;学习过计组、操作系统、计算机网络;能够编写SQL、完成数据表设计;具备基础编码、调试能力。
感兴趣方向:后端开发、底层系统开发、软件架构与工程实践。
现存短板
缺少完整项目经验,工程化、软件架构设计能力薄弱;不熟悉Git、设计模式、UML建模;无团队协作、软件测试、项目部署实战经验。
累计代码量约6000行,以习题、课程小实验为主。目标本学期累计代码量达到10000行,侧重模块化项目代码,而非零散练习题。
二、课程核心学习目标
-
吃透软件完整生命周期:需求分析→概要设计→详细设计→编码→测试→维护。
-
掌握软件建模:能够绘制UML图,完成系统抽象与模块拆分;理解面向对象思想与经典设计模式。
-
熟练工程工具:掌握Git版本控制、团队协作规范。
-
掌握软件测试:单元测试、黑白盒测试方法,主动排查程序漏洞。
-
掌握基础项目管理:任务拆解、工作量评估、进度管控。
-
建立工程化思维:不只实现功能,兼顾代码可维护性、扩展性、健壮性;独立完成中小型软件全流程开发,能撰写规范项目文档,积累团队协作经验。
三、学习执行计划
-
课堂:紧跟软件生命周期、UML、设计模式等核心理论,做好笔记。
-
实践:依托课程大作业、操作系统/数据库实验,产出结构化项目代码,冲刺代码量目标。
-
工具实操:上手Git,练习提交、分支管理,把版本控制融入项目开发。
-
项目训练:练习需求分析、模块拆分,绘制UML图;学习单元测试,养成写完代码同步测试的习惯。
-
团队协作:积极参与小组项目,练习分工沟通、文档撰写。
四、成果验收标准
✅ 能独立完成中小型软件项目全套流程,产出需求文档、设计文档、测试文档
✅ 熟练使用Git进行版本管理,理解多人协作开发模式
✅ 可以使用UML完成系统建模,合理运用基础设计模式优化代码
✅ 代码累计达到10000行,代码结构规范、模块化,具备良好可维护性
四、作业总结
<填写本次作业整体完成情况、遇到的问题与收获>
博客园后台博文编辑页面截图(Markdown 编辑器)

posted on
浙公网安备 33010602011771号