第一次作业
1.huggingface api 调用
代码仓库 https://github.com/34zkx/class1-huggingface
1.创建api_key

2.创建环境名flux python=3.10并激活,安装requiremen.txt依赖

3.调用api
HuggingFace 提供了 Inference Providers(推理提供商路由),可以通过 HTTP POST 请求直接调用云端模型,无需本地部署。本作业要求的 XLabs-AI/flux-RealismLora 由 fal-ai 提供商托管,实际请求地址为:
https://router.huggingface.co/fal-ai/fal-ai/flux-lora
请求头需携带 Authorization: Bearer {token};请求体为 JSON 格式,包含提示词、尺寸、推理步数、引导系数、seed,以及 fal 端需要加载的 LoRA 权重地址。
补充说明:最初按照旧文档使用
https://api-inference.huggingface.co/models/{model_id},运行时反复出现SSL: UNEXPECTED_EOF_WHILE_READING。排查发现该旧域名目前已无有效 DNS 解析(本地 DNS 还返回了被污染的假 IP),官方现入口为router.huggingface.co。修改调用地址后请求恢复正常。
4.后端采用 Flask 框架,提供两个核心接口:/api/generate(图像生成)和 /api/health(健康检查)。前端页面由 Flask 静态文件服务直接托管。
5.前端采用纯 HTML + CSS + JavaScript 实现,无需构建工具。页面采用左右分栏布局:左侧为提示词输入区,右侧为图像生成结果展示区。
6.启动方法
$env:HF_API_TOKEN = (Get-Content apikey2.txt -Raw).Trim() # 将本地 Token 写入环境(优先 apikey2.txt)
python app.py
浏览器打开http://localhost:5000
核心 API 调用代码
import requests
API_URL = "https://router.huggingface.co/fal-ai/fal-ai/flux-lora"
headers = {"Authorization": f"Bearer {HF_API_TOKEN}"}
payload = {
"prompt": prompt, # 最终使用的英文提示词
"image_size": {"width": 768, "height": 1024},
"num_inference_steps": 30,
"guidance_scale": 3.5,
"seed": 42, # 固定 seed 便于对比提示词
"loras": [{
"path": "https://huggingface.co/XLabs-AI/flux-RealismLora/resolve/main/lora.safetensors",
"scale": 1,
}],
}
resp = requests.post(API_URL, headers=headers, json=payload, timeout=120)
# fal 返回 JSON:{"images": [{"url": "https://..."}]}
image_url = resp.json()["images"][0]["url"]
image_bytes = requests.get(image_url, timeout=120).content
提示词设计思路与修改过程
任务要求生成“最贴近真实世界”的图像,因此提示词整体按真实野生动物摄影的方向设计,而不是概念海报或插画。
第一版(我的第一张图提示词)
A majestic lion standing on a rocky cliff at golden hour, ultra realistic photography,
8k, detailed fur, cinematic lighting, shallow depth of field
负面提示词:
blurry, low quality, cartoon, anime, deformed, ugly, distorted, watermark, text
第一版能生成“看起来像狮子”的图,但仍有明显差距:majestic、ultra realistic photography、8k 都是主观宣传词而不是画面事实,模型容易输出过度锐化、色彩饱和偏高、毛发像塑料、背景悬浮感强等“AI 感”,与任务要求的“贴近真实世界”不符。
第一版生成效果

上图使用“第一版”提示词生成,作为修改前的对照;API 调用成功的终端日志见左侧
修改理由与修改过程
- 删掉
8k、ultra realistic photography这类宣传词,改用真实摄影参数(400mm telephoto lens、f/4、eye-level、natural color),让写实风格由画面语言本身决定。 - 把抽象的
majestic lion改成具体姿态:侧面四分之三构图、微微回头、前爪搭在岩石上,让狮子自己“显得威严”,避免僵硬的正面对着镜头摆拍。 - 把笼统的
rocky cliff at golden hour具体化为非洲稀树草原、岩石台地、暮色薄雾和远处金合欢树,并写明光线方向(侧面低角度暖光、轮廓光、岩石上的长影子),使环境逻辑更自洽。 detailed fur过于笼统,改成“毛发带自然尘土质感、身上有细小伤痕”,给模型具体材质线索,皮毛纹理更容易真实。- 保留
shallow depth of field,并让它与400mm f/4镜头设定一致,形成合理的虚实关系。 - 负面词补充
oversaturated, HDR, plastic, airbrushed, artificial, extra limbs,排除过饱和、塑料感和多余肢体等常见 AI 缺陷。
修改后(用于正式生成的提示词)
A wild male lion photographed on a rocky outcrop at sunset in the African savanna.
The lion stands in three-quarter profile with its head turned slightly toward the camera,
one front paw resting on a sun-warmed rock, mane and coat showing natural dusty fur texture
and small scars. Low warm sunlight comes from the side, casting soft rim light and a long
shadow across the rocks; the background falls into warm haze with scattered acacia trees.
Natural color, realistic anatomy and proportions, photographed with a 400mm telephoto lens
at f/4 from eye level, shallow depth of field, fine fur detail.
修改后的负面提示词
blurry, low quality, cartoon, anime, deformed, ugly, distorted, watermark, text,
oversaturated, HDR, plastic, airbrushed, artificial, extra limbs, mutated hands
最终生成图像

体验与心得
-
HuggingFace 的推理入口已经从旧的
api-inference.huggingface.co迁移到router.huggingface.co(Inference Providers)。旧域名目前没有有效 DNS 解析,本地 DNS 还会返回被污染的假 IP,表现为难以理解的SSL: UNEXPECTED_EOF_WHILE_READING;换用新入口并走代理后请求恢复正常。 -
写实 LoRA 更适合英文提示词,但不要堆
8k、ultra realistic这类宣传词,把它们换成具体的姿态、光线方向、环境、镜头和材质描述后,真实感明显更好。 -
固定 seed 对修改提示词前后的效果对比很有帮助;后端记录 HTTP 状态码和耗时,也方便判断调用是成功、限流还是权限/额度问题。
2.github个人主页搭建



浙公网安备 33010602011771号