软件工程 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. 操作步骤

  1. 访问 huggingface.co,注册个人账号,进入个人设置页面创建 API Token(权限选择 Read),保存密钥,妥善保管不公开。

  2. 打开模型页面 XLabs-AI/flux-RealismLora,阅读模型说明与推理文档,确认调用方式。

  3. 编写 Python 后端代码,使用 huggingface_hub 库的 InferenceClient 调用模型,传入提示词、负面提示词与图像尺寸参数,生成写实图片。

  4. 编写前端 HTML 页面,提供提示词输入框、生成按钮与图片展示区域;前端向后端发送请求,后端调用模型接口,实现交互式图像生成。

  5. 运行项目,填写提示词点击生成,保存 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(

&#x20;   prompt,

&#x20;   model=model\_id,

&#x20;   negative\_prompt=negative\_prompt,

&#x20;   width=1024,

&#x20;   height=1024

)

image.save("result.png")

print("图片生成成功,已保存为 result.png")

3. 前端交互页面 index.html

\<!DOCTYPE html>

\<html lang="zh-CN">

\<head>

&#x20;   \<meta charset="UTF-8">

&#x20;   \<title>Flux写实图像生成器\</title>

\</head>

\<body>

&#x20;   \<h3>Flux RealismLora 写实图像生成器\</h3>

&#x20;   \<textarea id="prompt" rows="4" cols="60" placeholder="输入提示词,描述你想生成的写实画面">\</textarea>\<br>

&#x20;   \<button onclick="generateImg()">生成图片\</button>

&#x20;   \<div>

&#x20;       \<h4>生成结果:\</h4>

&#x20;       \<img id="resultImg" width="600"/>

&#x20;   \</div>

\<script>

async function generateImg(){

&#x20;   const prompt = document.getElementById("prompt").value;

&#x20;   const res = await fetch("/generate",{

&#x20;       method:"POST",

&#x20;       headers:{"Content-Type":"application/json"},

&#x20;       body:JSON.stringify({prompt:prompt})

&#x20;   })

&#x20;   const blob = await res.blob();

&#x20;   document.getElementById("resultImg").src=URL.createObjectURL(blob);

}

\</script>

\</body>

\</html>

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

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

初始版本1(第一张图,中文)
b4c6c0a79beb311eed29b5697f318a84_720

提示词:麦当劳的薯条和可乐放在桌子上
✅设计思路:
只描述主体和场景,属于极简基础提示词。只定义画面里有什么物体、摆放位置,没有对物体质感、细节做约束,交由AI自由发挥画面细节。
❌存在问题:
AI生成的薯条形态、可乐气泡、吸管样式不可控。生成的薯条偏饱满新鲜,没有干瘪感;可乐气泡很少,吸管没有红蓝细纹,画面细节不符合预期。

初始版本2(第二张图,中文)

提示词:薯条和可乐放在桌子上
✅设计思路:
去掉品牌“麦当劳”,保留主体和场景,测试移除品牌关键词对画面效果的影响,依旧只限定物体,不添加质感细节。
❌存在问题:
缺少品牌约束,AI不一定会生成麦当劳包装;同时仍然没有限定薯条干瘪程度、可乐气泡、吸管花纹,细节依旧随机,达不到想要的效果。
4833552ba556a8ace4b2f00a2c8da07f
初始版本3

提示词原文:The McDonald's fries and cola are on the table.
翻译:麦当劳的薯条和可乐放在桌子上
✅提示词设计思路

采用英文基础描述词,保留主体与场景,测试相同语义、不同语言对图像生成API输出效果的影响。
只定义画面主体:麦当劳薯条、可乐摆放在桌面,没有增加质感、气泡、吸管等细节约束,让AI自由渲染光影、物体细节。

16edd51cdd7610feff21ab878514a3c9_720

❌本次生成结果暴露的问题

  1. 画面出现两份薯条、两杯可乐,超出预期,AI自主增加物体数量;

  2. 薯条是饱满新鲜的状态,没有实现“干瘪”效果;

  3. 可乐缺少充足气泡;吸管是纯白色,不存在红蓝细纹;

  4. 场景变成餐厅座椅背景,不再是简单桌面。

📌和前两次中文提示词对比

  1. 第一轮中文:麦当劳薯条可乐放桌上 → 物体数量正常,但细节不可控

  2. 第二轮中文:薯条可乐放桌上 → 丢失麦当劳品牌包装

  3. 第三轮英文基础句:主体描述换英文,品牌保留,但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.
    ✅迭代优化思路:

  4. 保留基础主体句子,锁定场景:麦当劳薯条+可乐放置桌面

  5. 增加物体质感修饰:naturally shriveled 限定薯条自然干瘪收缩,解决薯条太新鲜的问题

  6. 增加液体细节:abundant bubbles 指定可乐拥有丰富气泡感

  7. 增加道具细节:the straw has thin red and blue stripes,约束吸管带有红蓝细条纹

  8. 选用英文提示词:很多图像生成API对英文描述词识别精度更高,细节理解更稳定。
    迭代逻辑总结:基础提示词只能控制画面有什么;想要精准控制物体质感、细节特征,必须追加属性描述词,把想要的视觉特征一条条写清楚。
    二、API调用操作步骤

  9. 准备提示词文本:先写中文基础提示词,测试第一轮生成;观察生成图片缺陷,提炼缺失的细节,翻译优化为英文详细提示词。

  10. 打开AI绘图网页端API界面,在输入框粘贴提示词。

◦ 第一轮输入中文提示词「麦当劳的薯条和可乐放在桌子上」,点击生成,得到第一张图片;

◦ 第二轮输入中文提示词「薯条和可乐放在桌子上」,点击生成,得到第二张图片;

◦ 第三轮粘贴优化后的英文长提示词,提交API请求。

  1. API后端接收文本,调用图像模型,根据文字描述渲染图片,返回生成结果展示在页面。

  2. 结果对比:对比3次输出图片,观察每一轮提示词修改带来的画面变化,记录差异。

  3. 截图保存:保存每一轮的聊天记录、提示词、生成图片,作为实验材料。

5. 截图展示

Hugging Face API 调用成功日志截图

0d9f4407d8007d222163d949ef05b541_720
![HF API调用日志截图]

前端交互页面生成图像截图

cf1e18cc2f167159586939984b87fbc7_720
![前端页面效果图]

6. API 调用体验与心得

`<AI绘图API调用实验报告(提示词设计、迭代过程、操作步骤、心得)

API调用体验与心得

  1. 简单提示词只能确定画面大体内容,缺少细节修饰词时,AI会自主脑补细节,随机性很强,很难一次性得到想要的效果。

  2. 提示词是递进迭代的过程:先搭建主体场景,再针对不满意的地方补充质感、纹理、道具细节,一点点约束画面。

  3. 不同语言提示词效果有差异:本次测试中,英文词汇对物体质感描述识别更精准,适合写实静物类画面。

  4. 使用图像生成API,需要学会“把脑海里的画面拆成一条条可描述的特征”,不能只写大体场景,越具体的描述,生成结果越可控。

  5. 局限性:即使写了详细提示词,AI偶尔还是会出现细节错误(物体变形、细节丢失),需要多次调整关键词反复调试。

`

二、GitHub 个人主页搭建

本次选择方案:方案 1 创建同名仓库 README.md

截图展示

GitHub 个人主页效果截图

0f4891be2ddbcd9d058993836aad2243

![GitHub个人主页截图]

三、课程随笔

软件工程课程学习指nan

一、个人基础盘点

已掌握
熟练C语言,了解C++面向对象;掌握常见数据结构、基础算法;学习过计组、操作系统、计算机网络;能够编写SQL、完成数据表设计;具备基础编码、调试能力。
感兴趣方向:后端开发、底层系统开发、软件架构与工程实践。
现存短板
缺少完整项目经验,工程化、软件架构设计能力薄弱;不熟悉Git、设计模式、UML建模;无团队协作、软件测试、项目部署实战经验。
累计代码量约6000行,以习题、课程小实验为主。目标本学期累计代码量达到10000行,侧重模块化项目代码,而非零散练习题。

二、课程核心学习目标

  1. 吃透软件完整生命周期:需求分析→概要设计→详细设计→编码→测试→维护。

  2. 掌握软件建模:能够绘制UML图,完成系统抽象与模块拆分;理解面向对象思想与经典设计模式。

  3. 熟练工程工具:掌握Git版本控制、团队协作规范。

  4. 掌握软件测试:单元测试、黑白盒测试方法,主动排查程序漏洞。

  5. 掌握基础项目管理:任务拆解、工作量评估、进度管控。

  6. 建立工程化思维:不只实现功能,兼顾代码可维护性、扩展性、健壮性;独立完成中小型软件全流程开发,能撰写规范项目文档,积累团队协作经验。

三、学习执行计划

  1. 课堂:紧跟软件生命周期、UML、设计模式等核心理论,做好笔记。

  2. 实践:依托课程大作业、操作系统/数据库实验,产出结构化项目代码,冲刺代码量目标。

  3. 工具实操:上手Git,练习提交、分支管理,把版本控制融入项目开发。

  4. 项目训练:练习需求分析、模块拆分,绘制UML图;学习单元测试,养成写完代码同步测试的习惯。

  5. 团队协作:积极参与小组项目,练习分工沟通、文档撰写。

四、成果验收标准

✅ 能独立完成中小型软件项目全套流程,产出需求文档、设计文档、测试文档
✅ 熟练使用Git进行版本管理,理解多人协作开发模式
✅ 可以使用UML完成系统建模,合理运用基础设计模式优化代码
✅ 代码累计达到10000行,代码结构规范、模块化,具备良好可维护性

四、作业总结

<填写本次作业整体完成情况、遇到的问题与收获>

博客园后台博文编辑页面截图(Markdown 编辑器)
image

博客园Markdown编辑页面截图

 posted on 2026-09-11 23:59  明晚桃  阅读(7)  评论(0)    收藏  举报