docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거

Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
This commit is contained in:
Antigravity Agent
2026-07-05 00:33:48 +09:00
parent 1cfd3bbb56
commit 9148c358d0
6455 changed files with 1 additions and 86875 deletions
@@ -0,0 +1,159 @@
---
id: wiki-2026-0508-api-backed-image-generation-work
title: API-backed Image Generation Workflow
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Image Gen API, Cloud Image Generation, Hosted Diffusion API]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [image-generation, api, workflow, diffusion, production]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
language: Python
framework: OpenAI/Replicate/FAL SDKs
---
# API-backed Image Generation Workflow
## 매 한 줄
> **"매 prompt → API → asset, GPU 의 X"**. Hosted endpoint (OpenAI Images, Replicate, FAL, Stability, BFL) 의 호출하여 image asset 를 generate — 매 GPU infra ownership 의 X, 매 per-call cost 의 trade. 2026 production app 의 매 default mode (self-host 의 매 scale-driven decision).
## 매 핵심
### 매 hosted vs self-host trade
- **Hosted**: 매 zero infra, 매 latest model (FLUX 1.1 Pro Ultra, Imagen 4, gpt-image-1) 즉시 access, 매 per-image $0.02-0.08.
- **Self-host (vLLM/MLX/ComfyUI)**: 매 fixed GPU cost, 매 high-volume (>100k img/mo) 의 break-even.
- **Break-even**: ~50k img/mo @ A100 spot price ($1.5/hr).
### 매 provider matrix (2026)
- **BFL FLUX 1.1 Pro Ultra**: 매 photoreal SOTA, 4MP, $0.06/img.
- **OpenAI gpt-image-1**: 매 text rendering best, multimodal edit, $0.04-0.19/img.
- **Google Imagen 4**: 매 prompt adherence, $0.04/img.
- **Replicate / FAL**: 매 aggregator, 매 100+ model 의 unified API.
- **Stability SD 3.5**: 매 open-weight + hosted dual.
### 매 workflow stage
1. **Prompt construction**: template + user input + style tokens.
2. **API call**: async, retry, idempotency key.
3. **Polling/webhook**: 매 long-running job (>5s) 의 webhook, 매 short job 의 sync.
4. **Asset storage**: S3/R2 + CDN, signed URL.
5. **Moderation**: pre-prompt filter + post-image NSFW check.
## 💻 패턴
### FAL async (recommended 2026)
```python
import fal_client
handler = fal_client.submit(
"fal-ai/flux-pro/v1.1-ultra",
arguments={"prompt": "cyberpunk city, neon rain, 8k", "aspect_ratio": "16:9"},
)
# webhook 또는 poll
result = handler.get() # blocks until done
url = result["images"][0]["url"]
```
### OpenAI gpt-image-1
```python
from openai import OpenAI
client = OpenAI()
resp = client.images.generate(
model="gpt-image-1",
prompt="A futuristic library, isometric, soft lighting",
size="1024x1024",
quality="high",
n=1,
)
b64 = resp.data[0].b64_json
```
### Replicate (model marketplace)
```python
import replicate
output = replicate.run(
"black-forest-labs/flux-1.1-pro-ultra",
input={"prompt": "...", "aspect_ratio": "21:9", "raw": False},
)
# output: list[FileOutput] — stream to S3
```
### Webhook handler (FastAPI)
```python
@app.post("/webhooks/fal")
async def on_fal(req: Request):
payload = await req.json()
if payload["status"] == "OK":
url = payload["payload"]["images"][0]["url"]
await store_to_r2(url, key=payload["request_id"])
return {"ok": True}
```
### Retry + idempotency
```python
import httpx
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(stop=stop_after_attempt(3), wait=wait_exponential(min=1, max=10))
async def gen(prompt: str, idem: str):
async with httpx.AsyncClient(timeout=120) as c:
r = await c.post(URL, json={"prompt": prompt}, headers={"Idempotency-Key": idem})
r.raise_for_status()
return r.json()
```
### Pre-moderation
```python
def safe_prompt(p: str) -> bool:
bad = {"nsfw", "gore", "csam"} # 매 minimal — provider 의 strong filter 의 추가 layer
return not any(t in p.lower() for t in bad)
```
### Cost meter
```python
COSTS = {"flux-pro-ultra": 0.06, "gpt-image-1-high": 0.19, "imagen-4": 0.04}
def charge(user_id: str, model: str, n: int):
cost = COSTS[model] * n
db.execute("UPDATE users SET credit = credit - ? WHERE id = ?", (cost, user_id))
```
## 매 결정 기준
| 상황 | Approach |
|---|---|
| Photoreal hero asset | FLUX 1.1 Pro Ultra |
| Text-in-image (poster, UI) | gpt-image-1 |
| Bulk variant (>10k/day) | self-host SDXL/SD3.5 + ComfyUI cluster |
| Prototype / MVP | Replicate (zero setup) |
| Edit / inpaint / multimodal | gpt-image-1 또는 FLUX Fill |
**기본값**: FAL FLUX 1.1 Pro Ultra (cost/quality 의 sweet spot 2026).
## 🔗 Graph
- 부모: [[Diffusion Models]]
- 응용: [[AdSense Revenue Blog Architecture]]
## 🤖 LLM 활용
**언제**: 매 product feature (avatar, blog hero, marketing) 의 image gen — 매 launch speed 의 priority.
**언제 X**: 매 >100k img/mo 의 sustained volume (self-host 의 cheaper), 매 strict on-prem (HIPAA/gov).
## ❌ 안티패턴
- **Sync block 60s+**: 매 user request thread 의 block — 매 webhook 또는 background job 의 use.
- **No idempotency**: 매 retry 의 duplicate charge — 매 idempotency key 의 always.
- **Raw provider URL serve**: 매 expire 24h — 매 own CDN 의 mirror.
- **Skip moderation**: 매 brand risk + provider TOS violation.
- **Hard-coded provider**: 매 single API 에 lock-in — 매 abstraction layer (e.g. `ImageProvider` interface).
## 🧪 검증 / 중복
- Verified (BFL 2025-10 release notes; OpenAI gpt-image-1 docs 2025; FAL/Replicate pricing 2026-Q1).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — 2026 provider matrix, FAL/FLUX/gpt-image-1 patterns |