软件工程第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/15712
这个作业的目标 创建hugging face和GitHub账号,熟悉API调用和模型的使用和markdown编写博客的流程,了解自己的职业规划,为后续课程打下基础
学号 102401521

一. 准备工作

  • GitHub账号:10thcn
  • 博客园账号:10th_cn;
  • 已关注任课老师和助教的博客并加入班级。

二.huggingface-API的调用

1.在 Hugging Face 官网注册了个人账号,并申请了用于模型调用的 Access Token。

api生成

2.模型生成的图片记录
前端页面如下:

前端页面

第一版提示词: A strong man lies leisurely on the beach, basking in the sun
生成的图片:

第一版图片
生成大概符合提示词要求,那么要是我再详细一点的提示词会不会更好?
第二版提示词:A strong handsome muscular man lies leisurely on fine light-colored sand beach, basking in the warm golden sunset sun, fully relaxed, head resting on folded towel, eyes half closed, calm expression, subtle sweat glistening on skin, soft sea wind tousling short hair, turquoise sea with gentle rolling waves, distant sea horizon, sparse soft white clouds, natural golden hour rim light, realistic portrait photography, photorealism, intricate skin texture, natural shadow, high resolution, 8k, ultra-detailed, sharp focus, cinematic color grading

第二版
感觉第二版的图片质量会更好一点,主要是提示词比较详细。
3.api调用成功记录:
api调用

4.核心代码部分
后端部分:
`

点击查看代码
# 1) 引入 Hugging Face 的 gradio 客户端(用于调用社区 Space 上托管的模型)
from gradio_client import Client

# 2) 承载 flux-RealismLora 的社区 Space
SPACE_ID = "DamarJati/FLUX.1-RealismLora"

# 3) 复用连接:避免每次请求都重新建立到 Space 的连接
_client = None

def get_client(token=None):
    global _client
    if _client is None:
        _client = Client(SPACE_ID, token=token or None)
    return _client


# 4) 生成接口:前端把提示词 POST 到这里
@app.route("/api/generate", methods=["POST"])
def generate():
    prompt = request.get_json().get("prompt")          # 拿到前端传来的提示词

    client = get_client()                              # 获取/复用连接

    # ★ 核心:调用模型的 /run_lora 端点,参数依次为:
    #    提示词, 引导强度, 步数, 是否随机种子, 种子, 宽, 高, LoRA 强度
    result = client.predict(
        prompt, 3.2, 28, True, 0, 1024, 1024, 0.85,
        api_name="/run_lora",
    )

    image_path = result[0]                             # 生成的图片(本地文件路径)
    seed       = result[1]                             # 实际使用的随机种子

    # 5) 把图片文件读出来,转成 base64 字符串回给前端展示
    with open(image_path, "rb") as f:
        img_b64 = base64.b64encode(f.read()).decode()

    return jsonify({
        "success": True,
        "image": img_b64,          # base64 图片,前端可直接 <img src="data:image/png;base64,...">
        "seed": seed,
    })
` 前端部分:
点击查看代码
// 点击「生成图像」按钮
generateBtn.addEventListener("click", async () => {
  const prompt = document.getElementById("prompt").value.trim();
  if (!prompt) return;                       // 空提示词直接拦截

  setBusy(true);                             // 按钮变「正在生成…」

  // ★ 核心:把提示词 POST 给后端 /api/generate
  const resp = await fetch("/api/generate", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ prompt }),        // 只传提示词,其余参数后端有默认值
  });
  const data = await resp.json();

  if (data.success) {
    // 把后端返回的 base64 拼成 data URL,显示到 <img>
    const url = `data:${data.mime || "image/png"};base64,${data.image}`;
    document.getElementById("resultImg").src = url;
    document.getElementById("resultImg").hidden = false;
  } else {
    // 显示错误信息
    showError(data.error);
  }

  setBusy(false);
});

三.Github主页搭建

github

四.博客园的随笔

我的随笔

五.使用Markdown编写作业截图

eeeeeee

这就是我的作业,谢谢!

posted on 2026-09-10 15:37  10th_cn  阅读(16)  评论(0)    收藏  举报