软件工程课程第一次个人作业
| 这个作业属于哪个课程 | 202601软工 |
|---|---|
| 这个作业要求在哪里 | 作业要求 |
| 这个作业的目标 | 完成 GitHub 与博客园账号注册及个人主页搭建;学习调用 HuggingFace API 并结合前端实现交互式图像生成;梳理个人技能树与发展规划;体验 AI 工具在学习中的应用 |
| 学号 | 102301230 |
一. 准备工作
按照作业要求完成账号注册:
- 注册GitHub账号,搭建个人Profile README主页;
- 开通博客园技术博客,完善个人资料,加入软件工程班级圈子;关注老师与助教博客;
- 注册Hugging Face账号,生成Access Token,获取调用API所需密钥。
二、huggingface‑API 调用
- 在hugging face注册账号,然后access tokens
- 编写前后端,同时.env存入token
- 前端请求转发后端调用api 接口,然后模型返回结果至前端
这是app.py的代码
import os
import time
from pathlib import Path
from dotenv import load_dotenv
from flask import Flask, jsonify, render_template, request
from huggingface_hub import InferenceClient
load_dotenv()
HF_TOKEN = os.getenv("HF_TOKEN")
if not HF_TOKEN:
raise RuntimeError("没有找到 HF_TOKEN,请在项目根目录的 .env 文件中配置。")
client = InferenceClient(provider="fal-ai", api_key=HF_TOKEN, timeout=300)
MODEL_ID = "XLabs-AI/flux-RealismLora"
app = Flask(__name__)
OUTPUT_DIR = Path("static/generated")
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
@app.get("/")
def index():
return render_template("index.html")
@app.post("/generate")
def generate():
data = request.get_json(silent=True) or {}
prompt = (data.get("prompt") or "").strip()
if not prompt:
return jsonify({"success": False, "error": "请输入提示词。"}), 400
try:
print(f"[API] model={MODEL_ID}")
print(f"[API] prompt={prompt}")
image = client.text_to_image(prompt=prompt, model=MODEL_ID)
filename = f"{time.strftime('%Y%m%d_%H%M%S')}_{int(time.time()*1000)%1000}.png"
save_path = OUTPUT_DIR / filename
image.save(save_path)
print(f"[API] 生成成功: {save_path}")
return jsonify({"success": True, "image_url": f"/static/generated/{filename}",
"model": MODEL_ID, "provider": "fal-ai", "prompt": prompt})
except Exception as exc:
print(f"[API] 生成失败: {exc}")
return jsonify({"success": False, "error": str(exc)}), 500
if __name__ == "__main__":
print("========================================")
print(" FLUX Realism LoRA Web App")
print(f" Model: {MODEL_ID}")
print(" URL: http://127.0.0.1:5000")
print("========================================")
app.run(host="127.0.0.1", port=5000, debug=True)
这是终端调用

prompt 是:A highly realistic photograph of a university student studying computer science at a modern wooden desk, an open laptop showing code, programming books and handwritten notes, soft natural daylight coming through a window, realistic skin texture, natural colors, subtle shadows, 35mm photography, shallow depth of field, photorealistic, highly detailed

- 体验与心得
先用简单的prompt测试能不能跑通,像'highly realistic','natural daylight','realistic skin texture','photorealistic','highly detailed'通通可以增加真实性
by the way ,前面浪费了几次额度,导致最后只有一张图片,
三.GitHub个人主页搭建
我选择创建与GitHub账号同名仓库,编辑仓库README.md作为个人资料主页。my github
主页包含自我介绍、技能、实践经历、感兴趣方向、希望学习的内容、未来三年发展规划。
然后我同时搞了一个GitHub page,不过很粗糙,click here
四.博客园随笔
然后博客端截图


浙公网安备 33010602011771号