2026 / app3.py
digiplay's picture
Rename app.py to app3.py
cccfcfa verified
import os
import gradio as gr
from huggingface_hub import InferenceClient
# 1. 讀取 Token 並檢查
HF_TOKEN = os.getenv("HF_TOKEN")
client = InferenceClient(api_key=HF_TOKEN)
def generate_image(prompt, model_id):
# 安全檢查
if not prompt:
return None, "請輸入描述文字!"
if not model_id:
return None, "請輸入或選擇一個模型 ID!"
if not HF_TOKEN:
return None, "錯誤:請在 Space Settings > Secrets 設定 HF_TOKEN。"
try:
# 使用使用者輸入或選擇的模型 ID
image = client.text_to_image(
prompt,
model=model_id.strip()
)
return image, f"成功!使用模型:{model_id}"
except Exception as e:
error_msg = f"發生錯誤:{str(e)}"
return None, error_msg
# 2. 建立介面
with gr.Blocks() as demo:
gr.Markdown("# 🎨 AI 多模型生圖工具 (2026 版)")
with gr.Row():
with gr.Column():
input_text = gr.Textbox(
label="1. 描述你想看到的畫面",
placeholder="例如:一個穿著太空衣的貓...",
lines=3
)
# 模型選擇區
model_input = gr.Textbox(
label="2. 模型 ID (可手動修改)",
value="black-forest-labs/FLUX.1-schnell",
placeholder="例如: stabilityai/stable-diffusion-xl-base-1.0"
)
# 常用模型快捷鍵 (選了會自動填入上面的輸入框)
model_presets = gr.Radio(
choices=[
"black-forest-labs/FLUX.1-schnell",
"stabilityai/stable-diffusion-3.5-large",
"digiplay/2K"
],
label="常用模型快捷選擇",
value="black-forest-labs/FLUX.1-schnell"
)
# 當點選 Radio 時,自動更新 Textbox 的值
model_presets.change(fn=lambda x: x, inputs=model_presets, outputs=model_input)
run_btn = gr.Button("立即生成 ✨", variant="primary")
status_text = gr.Markdown()
with gr.Column():
output_img = gr.Image(label="生成結果", type="pil")
# 按下按鈕時,同時傳入 prompt 和 model_input
run_btn.click(
fn=generate_image,
inputs=[input_text, model_input],
outputs=[output_img, status_text]
)
# 3. 啟動介面
demo.launch(theme=gr.themes.Soft())