软件工程课程第一次个人作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/15712
这个作业的目标 完成huggingface-API的调用以及Github个人主页搭建
学号 102401101

一、准备工作
GitHub:账号为xxxs111,已完善头像、昵称和个人资料。
博客园:账号为ab1573,已申请开通博客并切换为 Markdown 编辑器。
已关注吴越钟、张明圣、王奇蕊,并加入 202601 软件工程班级博客。

二、Hugging Face Flux API 调用

2.1 账号的创建与API获取
本次实验的第一步是获取调用大模型所需的身份凭证(API Token)。
访问 Hugging Face 官网(huggingface.co),点击右上角的 "Sign Up" 进行账号注册。填写用户名、邮箱和密码,完成邮箱验证后即可登录社区。
登录后,点击右上角头像进入 Settings(设置),在左侧导航栏中选择 Access Tokens。点击 Create new token 创建一个新的 Token。
image

2.2 环境准备与依赖安装

本次实验在 Windows 环境下进行,使用 Python 3.12 作为开发环境。
核心依赖库:

· huggingface_hub:用于与 Hugging Face 模型中心进行交互和 API 调用。
· gradio:用于快速构建 Web 前端交互界面。

使用 pip 安装依赖:

pip install huggingface_hub gradio

2.3 核心代码实现

2.3.1 获取 API Token 与初始化客户端
在 Hugging Face 官网注册账号后,在设置中生成 Access Token,并赋予其 Make calls to Inference Providers 权限。使用该 Token 初始化推理客户端,并指定模型为 XLabS-AI/flux-RealismLora。

import gradio as gr
from huggingface_hub import InferenceClient

# 配置区域
HF_TOKEN = "Hugging_Face_Token"
MODEL_ID = "XLabS-AI/flux-RealismLora"

# 初始化 Hugging Face 客户端
client = InferenceClient(model=MODEL_ID, token=HF_TOKEN)

2.3.2 核心生成函数
编写 generate_image 函数,接收用户输入的提示词,进行非空校验后,调用 API 生成图像。

def generate_image(prompt):
    if not prompt.strip():
        return None,
    
    try:
        image = client.text_to_image(prompt)
        return image,
    except Exception as e:
        return None, f

2.3.3 Gradio 前端界面搭建
使用 Gradio 快速构建 Web 界面,包含输入框、生成按钮、状态显示和图像展示区域。

# 构建界面
with gr.Blocks(title="Flux Realism 图像生成器 (软件工程作业)") as demo:
    gr.Markdown("# 🎨 Flux Realism 图像生成器 (软件工程作业)")
    gr.Markdown("输入提示词,调用 Hugging Face 的 `XLabS-AI/flux-RealismLora` 模型生成逼真图像。")
    
    with gr.Row():
        with gr.Column():
            prompt_input = gr.Textbox(label="提示词 (Prompt)", lines=5, placeholder="例如:A cozy coffee shop interior...")
            generate_btn = gr.Button("🚀 开始生成", variant="primary")
            status_output = gr.Textbox(label="状态", interactive=False)
        with gr.Column():
            image_output = gr.Image(label="生成的图像")
            
    # 绑定按钮点击事件
    generate_btn.click(fn=generate_image, inputs=prompt_input, outputs=[image_output, status_output])

# 启动服务
if __name__ == "__main__":
    demo.launch()

2.4、 提示词(Prompt)设计思路与实操记录

2.4.1 提示词设计思路
本次作业要求生成“最贴近真实世界的图像”。XLabS-AI/flux-RealismLora 模型擅长写实风格,因此在设计提示词时,我注重了以下几个要素:

· 主体与场景(Subject & Setting):明确具体的场景(如:雨天下午的温馨咖啡店)。
· 光影氛围(Lighting & Atmosphere):加入“暖色灯光 (warm lighting)”、“逼真的阴影”等描述,提升真实感。
· 镜头与景深(Camera & Depth of Field):使用“景深 (depth of field)”、“照片级真实 (photorealistic)”、“真实纹理 (realistic textures)”等词汇,模拟单反相机的成像效果。
· 英文书写:由于模型对英文的理解更准确,提示词采用全英文编写。

2.4.2 最终采用的提示词

A cozy coffee shop interior on a rainy afternoon, warm lighting, a cup of coffee with steam rising, a laptop on the wooden table, blurred background with people, photorealistic, depth of field, realistic textures.

2.4.3 API 调用成功记录与前端展示
c610e9e41b9578ae95f4e1670dd87d7
.
· 终端成功启动截图:
1da2f34beb4ef01348b9473ca8a0cd4

· 前端交互结果:页面左侧输入提示词,点击“开始生成”后,状态栏返回“✅ 生成成功!”,右侧成功渲染出高质量的逼真咖啡店图像,完美复现了提示词中的光影与景深效果。

2.5、 实验总结与心得体会

2.5.1 遇到的挑战与踩坑记录:

权限与额度问题:初次尝试时遇到了 403 Forbidden 错误,发现是 Token 权限不足且账号免费额度耗尽。通过重新注册账号、生成具有 Inference Providers 权限的新 Token 后解决。

2.5.2 心得体会

通过本次实验,我不仅学会了如何使用 Hugging Face 的 Inference API 调用大模型,还深刻体会到了大模型落地应用的基本流程:鉴权 -> 调用 -> 结果渲染。Gradio 框架极大地降低了 AI 应用前端开发的门槛。同时,我也认识到提示词工程(Prompt Engineering)的重要性,精准的英文描述是生成高质量图像的关键。在遇到网络和 API 报错时,学会了根据错误代码(如 403, 402, SSL Error)反查问题并逐一排查解决,锻炼了解决实际工程问题的能力。

三、GitHub 个人主页

本次作业我选择了方案1:创建个人资料自述文件(Profile README),在 GitHub 上完成了个人主页的搭建。

image

四、博客随笔

image

4.1、 当前技能树、技术偏好与自我评估

结合大三的学习情况,我对自己目前的专业技能进行了梳理和客观评估:

· 能力A(编程基础):了解 Python、C++ 的基础语法,能够编写简单的程序,具备基本的编程逻辑思维。
· 能力B(工具使用):初步学会使用 Git 进行代码版本控制,会使用 VS Code / PyCharm 进行开发。
· 能力C(专业基础):正在学习数据结构、计算机网络、操作系统等计算机核心课程。

技术偏好与感兴趣的方向:
我对 人工智能(AI)与大模型应用开发 非常感兴趣。结合本次软件工程课程作业,我通过调用 Hugging Face API 和 Gradio,初步实现了一个交互式的图像生成器项目,这让我体验到了 AI 技术落地的乐趣。

尚欠缺的能力:
我非常清楚自己目前代码量积累严重不足,独立开发大型项目的能力较弱,对复杂系统的架构设计理解还不够。这也是我接下来需要重点弥补的短板。

4.2、 代码量统计与课程目标

· 截至目前代码量:大概在2000行左右。
· 课程完成后的期望目标:希望在本学期软件工程课程结束后,总代码量能够突破4000行。我期待通过课程项目实践,提升自己的工程编码规范、团队协作能力和解决实际问题的能力。

4.3、 课程期待与收获

· 最期待学习的知识:我最期待学习软件生命周期(SDLC)的全流程管理、需求分析方法、以及如何用工程化的思维去开发和维护一个软件系统。我也非常希望能学好如何将 AI 能力集成到软件工程中。
· 希望获得的收获:希望能在课程结束时,拥有一套属于自己的、规范的软件开发流程方法论,并且能够亲手完成一个功能完善的软件项目。

4.4、 AI 工具生成的“软件工程课程学习指南”及分析

(注:我选择了 AI 工具 DeepSeek 来生成以下指南)

【AI 生成的软件工程课程学习指南】:

  1. 夯实基础:系统复习软件工程三大核心模型(瀑布、敏捷、螺旋),理解它们的适用场景。
  2. 注重实践:不要只停留在书本,要在课程项目中主动承担核心模块的编码和测试工作。
  3. 掌握 UML:熟练掌握用例图、类图、时序图的绘制,这是沟通需求的重要工具。
  4. 学会沟通:软件工程是团队工程,注重团队协作,学习如何撰写清晰的需求文档和项目报告。
  5. 拥抱 AI:在开发过程中善用 GitHub Copilot、ChatGPT 等 AI 工具来提升编码效率,但不可过度依赖,要保持自己的独立思考能力。

【我的分析与反思】:
我认为 AI 生成的这份学习指南逻辑非常清晰,且具有很强的实操性。

· 合理性:指南特别强调了“团队沟通”和“文档撰写”,这非常符合软件工程课程的本质——软件不仅仅是写代码,更是团队协作的产物。
· 对自己的帮助:其中第 5 点“拥抱 AI”对我启发最大。因为我目前代码能力较弱,在接下来的课程项目中,我可以借助 AI 工具来辅助我理解和编写代码,但同时我也会警惕过度依赖,努力提升自己的核心竞争力。总体来说,这份指南非常合理,我会把它作为我本学期学习的行动准则。

posted @ 2026-09-11 13:55  ab1573  阅读(9)  评论(0)    收藏  举报