api调用
云端图像生成模型调用作业报告
基于 Hugging Face Inference Providers API 接入 flux-RealismLora
一、任务概述
本作业实现一个基于 Hugging Face Inference Providers(fal-ai) 云端 API 的图像生成服务,调用
- 模型:
XLabs-AI/flux-RealismLora(照片级写实 LoRA,搭配基础模型black-forest-labs/FLUX.1-dev) - 服务商:fal-ai(由 Hugging Face 账户统一结算)
- 目标:通过 API 调用方式在本地服务中按提示词生成最接近真实世界的写实图像。
采用API 调用,无需本地 GPU、无需下载模型权重,前端输入提示词 → 后端调用 HF API → 返回图片。
二、API 调用成功记录
在本地 Flask 服务中成功发起调用并返回图片,服务器记录如下(HTTP 200):
[SUCCESS] 2026-09-10 13:33:09 | POST http://127.0.0.1:5000/generate
| model=XLabs-AI/flux-RealismLora via fal-ai | HTTP 200
| prompt=A candid snapshot of an elderly Indian street food vendor stirring
a large steel pot of steaming chai over a wood fire in the late afternoon,
smoke drifting, his weathered hands and worn apron in clear view,
small-town busy market street softly blurred behind him,
warm golden sunlight, subtle film grain
浏览器访问 http://127.0.0.1:5000/log 可直接查看该成功记录。
三、前端页面与最终生成图像

- 前端地址:
http://127.0.0.1:5000/(输入提示词,点击“生成图片”) - 后端返回图片,浏览器直接显示最终生成图像。

四、核心代码
1. 后端调用代码 app.py
# -*- coding: utf-8 -*-
import os
from datetime import datetime
from dotenv import load_dotenv
from flask import Flask, request, send_file, render_template_string
from huggingface_hub import InferenceClient
load_dotenv()
app = Flask(__name__)
# 初始化一次,之后所有请求复用同一个客户端
client = InferenceClient(
provider="fal-ai",
api_key=os.environ["HF_TOKEN"],
)
# 提示词默认增强为“写实照片”风格
DEFAULT_STYLE = (
"realistic photograph, natural lighting, "
"detailed skin texture, 35mm photography, high detail"
)
@app.route("/generate")
def generate():
prompt = request.args.get("prompt", "").strip()
if not prompt:
return "请提供 prompt 参数", 400
full_prompt = f"{prompt}, {DEFAULT_STYLE}"
# ===== 核心:API 调用 =====
image = client.text_to_image(
full_prompt,
model="XLabs-AI/flux-RealismLora",
)
import io
buf = io.BytesIO()
image.save(buf, format="PNG")
buf.seek(0)
# 记录一条“API 调用成功”记录
with open("api_call_log.txt", "a", encoding="utf-8") as f:
f.write(
f"[SUCCESS] {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} | "
f"model=XLabs-AI/flux-RealismLora via fal-ai | HTTP 200 | prompt={prompt}\n"
)
return send_file(buf, mimetype="image/png", download_name="result.png")
2. 依赖 requirements.txt
huggingface_hub
pillow
flask
python-dotenv
3. 配置 .env
HF_TOKEN=hf_****(自填自己的 Token,勿提交 Git)
五、API 调用的操作步骤
- 创建 Token:在 Hugging Face
Settings → Access Tokens → New token,选Fine-grained,勾选Inference > Make calls to Inference Providers,复制hf_...。 - 写配置:将 Token 填入项目
.env的HF_TOKEN。 - 安装依赖:
cd c:\Users\沈文驰\Desktop\新建文件夹 python -m pip install -r requirements.txt - 启动服务:
(日志显示python app.pyRunning on http://127.0.0.1:5000) - 访问前端:浏览器打开
http://127.0.0.1:5000,输入提示词,点击“生成图片”。 - 查看成功记录:服务终端出现
GET /generate?prompt=... HTTP/1.1" 200,同时项目目录生成api_call_log.txt;也可访问http://127.0.0.1:5000/log查看。
调用链路:
前端输入提示词 → 本地 Flask 后端 → Hugging Face InferenceClient(provider=fal-ai)
→ fal-ai 云端推理 → 返回 PNG 图片 → 浏览器显示
六、提示词设计思路与修改过程
1. 设计目标
作业要求“生成最贴近真实世界的图像”,因此提示词不追求炫技,而是还原 真实抓拍的瞬间感,规避 AI 常见的“摆拍感 / 过度精致 / 人物皮肤过于完美”等穿帮点。
2. 设计思路拆解(最终版提示词)
A candid snapshot of an elderly Indian street food vendor stirring
a large steel pot of steaming chai over a wood fire in the late afternoon,
smoke drifting, his weathered hands and worn apron in clear view,
small-town busy market street softly blurred behind him,
warm golden sunlight, subtle film grain
| 关键词 | 作用 |
|---|---|
| candid snapshot | 生活抓拍感,避免摆拍 |
| elderly street food vendor | 有岁月感的人物,天然写实 |
| steaming chai / wood fire / smoke | 生活细节,增加真实氛围 |
| weathered hands / worn apron | 局部特写,凸显真实肌理 |
| market street softly blurred | 浅景深、背景虚化,似随手街拍 |
| warm golden sunlight | 自然光线,暖色调 |
| subtle film grain | 轻微胶片颗粒,增强相片质感 |
(后端还会自动追加 realistic photograph, natural lighting, detailed skin texture, 35mm photography, high detail 风格后缀。)
3. 修改过程(两版对比)
第 1 版(最终采用):街拍场景 —— 赌“生活瞬间感”
- 偏重场景叙事与光影,最不容易像 AI 生成。
第 2 版(备选方案):人物特写 —— 赌“皮肤肌理”
A close-up portrait of a middle-aged Mediterranean woman with sun-weathered
skin, light freckles and a few stray hairs, standing on a cobblestone street
in soft overcast light, shallow depth of field, gaze slightly off-camera,
no makeup, natural skin texture visible
- 该版优点是直接聚焦皮肤细节(freckles / stray hairs / no makeup);但特写对“真实感”更挑剔,因此作为备用。
取舍结论:考虑到仅有的生成次数资源有限,优先选择“生活瞬间感 + 局部特写 + 自然光影”的组合,规避大远景与多人复杂场景,最终获得满意的写实结果。
七、API 调用体验与心得总结
- API 调用门槛低、免 GPU:无需在本地安装 CUDA / 下载数 GB 模型,
huggingface_hub一行client.text_to_image()即完成调用,适合快速原型与课程作业。 - 计费与额度:未配置 Custom Provider Key 时,费用统一由 Hugging Face 账户结算,免费账户有月赠额度;调用一次即产生一条
HTTP 200记录,便于核对成本。费用与额度以所使用服务商当前配置为准。 - 写实类 Prompt 的关键:真实感主要来自“生活抓拍场景 + 皮肤等局部肌理 + 自然光影 + 轻微噪点”,而不是堆砌华丽辞藻。善用“非完美”细节(皱纹、碎发、虚化背景)能显著降低 AI 感。
- 工程要点:
- Token 属敏感信息,置于
.env,不能提交到 Git / 聊天 / 前端。 - 客户端在进程内复用一次,避免每次请求重复建连。
- 用日志/记录文件固化“调用成功”证据,便于作业展示与排查。
- Token 属敏感信息,置于
- 不足与改进空间:当前为单机 Flask 开发服务器,不适合生产;若需高并发可改用 Gunicorn 等 WSGI,或限制请求频率以避免额度超支。
我的github主页


浙公网安备 33010602011771号