File size: 6,138 Bytes
5d0bada
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# 🎭 Character Studio — คู่มือภาษาไทย

Space รวมโมเดลสร้างตัวละครหลายตัวไว้ใน UI เดียว ทำงานบน **ZeroGPU**
เลือกโมเดลจากรายการ → พิมพ์ prompt → (ถ้าต้องการ) ใส่รูปต้นแบบ → กด Generate

---

## 1) วิธีนำขึ้น Hugging Face

1. สร้าง Space ใหม่: https://huggingface.co/new-space
   - **SDK = Gradio**
   - **Hardware = ZeroGPU** (Nvidia, dynamic)
2. อัปโหลดไฟล์ทั้งหมดในโฟลเดอร์นี้ (`app.py`, `pipeline_manager.py`, `models.json`,
   `requirements.txt`, `README.md`) ขึ้นไปที่ root ของ Space
   - ผ่านเว็บ (ลากวาง) หรือผ่าน git:
     ```bash
     git clone https://huggingface.co/spaces/<user>/<space-name>
     # คัดลอกไฟล์ในโฟลเดอร์นี้เข้าไป แล้ว
     git add . && git commit -m "init character studio" && git push
     ```
3. ไปที่ **Settings → Variables and secrets** ใส่ค่า (เท่าที่จำเป็น):
   - `HF_TOKEN` — เฉพาะโมเดล gated เช่น FLUX.1-dev
   - `CIVITAI_TOKEN` — เฉพาะเมื่อโหลดจากลิงก์ Civitai

---

## 2) เพิ่ม / ลบ / ปิดโมเดล (แก้ `models.json` อย่างเดียว)

แก้ไฟล์ `models.json` แล้วกดปุ่ม **🔄 Reload models** ใน UI (หรือ restart Space)

### โครงสร้างแต่ละโมเดล

| field | ความหมาย |
|---|---|
| `id` | รหัสไม่ซ้ำ (อังกฤษ-ขีดกลาง) |
| `label` | ชื่อที่โชว์ใน UI |
| `base` | `"sd15"` / `"sdxl"` / `"flux"`**สำคัญมาก** กำหนดว่าโหมดไหนใช้ได้ |
| `type` | `"checkpoint"` (โมเดลเต็ม) หรือ `"lora"` |
| `repo_id` | repo บน HF (สำหรับ checkpoint) หรือ **base checkpoint** (สำหรับ lora) |
| `single_file_url` | ลิงก์ `.safetensors` โดยตรง เช่น Civitai (ใช้แทน repo_id ได้) |
| `lora_repo_id` / `lora_weight_name` | สำหรับ LoRA ที่อยู่บน HF |
| `lora_url` | สำหรับ LoRA จาก Civitai (ลิงก์ download) |
| `lora_scale` | น้ำหนัก LoRA เช่น 0.8 |
| `trigger` | คำ trigger ที่จะเติมหน้า prompt อัตโนมัติ |
| `recommended_prompt` | prompt ตัวอย่าง (โชว์เป็น placeholder) |
| `negative_prompt` | negative เริ่มต้น |
| `default_steps` / `default_guidance` | ค่าเริ่มต้นเวลาเลือกโมเดลนี้ |
| `enabled` | `true`/`false` ปิดชั่วคราวได้โดยไม่ต้องลบ |

### ตัวอย่าง — checkpoint จาก Civitai (SD1.5)
```json
{
  "id": "asian-realistic-v6",
  "label": "AsianRealistic SDLife V6 (SD1.5)",
  "base": "sd15",
  "type": "checkpoint",
  "repo_id": null,
  "single_file_url": "https://civitai.com/api/download/models/130072",
  "default_steps": 28,
  "default_guidance": 6.5,
  "enabled": true
}
```
> ต้องใส่ `CIVITAI_TOKEN` ใน Secrets ด้วย

### ตัวอย่าง — LoRA จาก Civitai (วางบน base SD1.5)
```json
{
  "id": "asian-girls-face",
  "label": "Asian Girls Face (LoRA)",
  "base": "sd15",
  "type": "lora",
  "repo_id": "stable-diffusion-v1-5/stable-diffusion-v1-5",
  "lora_url": "https://civitai.com/api/download/models/67980",
  "lora_scale": 0.8,
  "enabled": true
}
```

### ตัวอย่าง — โมเดลบน HF (SDXL)
```json
{
  "id": "my-sdxl",
  "label": "My SDXL model",
  "base": "sdxl",
  "type": "checkpoint",
  "repo_id": "author/my-sdxl-repo",
  "default_steps": 30,
  "default_guidance": 6.0,
  "enabled": true
}
```

**ลบโมเดล** = ลบ block นั้นออกจาก array `models` หรือตั้ง `"enabled": false`

---

## 3) โหมดรูปต้นแบบ (Input mode)

| โหมด | ทำอะไร | ใช้กับ base |
|---|---|---|
| Text → Image | สร้างจาก prompt อย่างเดียว | ทุก base |
| Image → Image | แปลงรูปเดิม (ปรับ denoise) | ทุก base |
| IP-Adapter | ดึงสไตล์/องค์ประกอบจากรูป | sd15, sdxl |
| Face identity | ล็อกใบหน้าจากรูปต้นแบบ (FaceID) | sd15, sdxl |

> FLUX รองรับเฉพาะ txt2img / img2img (IP-Adapter/FaceID ของ FLUX ยังไม่รวมในเวอร์ชันนี้)

---

## 4) ข้อควรรู้เรื่อง ZeroGPU
- โมเดลใหญ่จะถูกเก็บทีละตัว สลับโมเดล = โหลดใหม่ (ครั้งแรกช้าหน่อย)
- หนึ่งครั้ง generate จำกัดเวลา GPU ~120 วินาที (ปรับใน `@spaces.GPU(duration=...)`)
- โมเดล Civitai/checkpoint เต็มก้อนใหญ่ ดาวน์โหลดครั้งแรกใช้เวลา — ใจเย็น

---

## 5) การใช้งานอย่างรับผิดชอบ
เครื่องมือนี้สำหรับงานสร้างสรรค์ตัวละครต้นฉบับ/งานที่ได้รับอนุญาต
**อย่าใช้โหมด Face identity สร้างภาพบุคคลจริงโดยไม่ได้รับความยินยอม**