FLUX.1 Dev LoRA를 API로 실행하려면 가중치 URL과 스케일을 loras 목록에 넣습니다. 주제를 온전히 유지하려면 어댑터 없이 그 장면을 한 번 실행한 뒤, 같은 시드·가이던스·스텝을 그대로 두고 파일만 추가해 LoRA 스케일만 바꾸세요. 무난한 시작값은 스케일 1, 가이던스 3.5, 스텝 28, 정사각형 화면입니다. 사실적인 파일은 가이던스 2.5에서 3 사이일 때 더 나아 보입니다. 대조군 1회와 세 단계 스케일은 이미지 4장, 장당 $0.018, 합계 $0.072입니다. 룩이 가장 강한 결과가 아니라 오브젝트가 그대로 쓸 만한 결과를 남기세요.
직접 다뤄볼 장면은 크림색 린넨 위에 놓인 무광 코발트색의 가상의 물병입니다. 손잡이는 초승달 모양 하나뿐입니다.
어댑터가 무엇을 더해야 할지 정하기
이 장면에 필요한 것은 알아볼 수 있는 물병 하나, 짧은 주둥이, 열린 손잡이, 린넨과의 접촉, 그리고 절제된 도자기 질감을 살린 부드러운 조명입니다. 어댑터가 과장된 광택이나 정교한 장식을 더한다면, 동작은 하고 있어도 이 브리프에는 맞지 않습니다.
성인 캐릭터 버전은 물병을 단추를 잠근 네이비 셔츠를 입은 가상의 35세 성인 한 명으로 바꾸고, 조건을 바꿔도 포즈와 의상을 동일하게 유지하세요.

일러스트이며 FLUX 결과물이 아닙니다. 대상 주체로, 몸통 하나, 손잡이 구멍 하나, 짧은 주둥이를 갖췄습니다.
FLUX.1 Dev에 맞는 파일 고르기
호환되는 파일은 학습 베이스로 FLUX.1 Dev를 명시합니다. 다른 FLUX 릴리스용 LoRA, 편집 전용 아키텍처, SDXL, Z-Image, Qwen-Image용 LoRA는 불러와도 변화가 거의 없습니다. 먼저 베이스를 확인하세요. path에는 가중치 파일로 바로 가는 링크를 넣고, 그 파일을 설명하는 웹페이지는 쓰지 않습니다. 페이지 URL은 제출 시점에 거부되고, 로그인을 요구하는 비공개 저장소도 제출 시점에 거부됩니다.
예를 들어 XLabs 포토리얼리즘 모델 카드는 베이스를 FLUX.1 Dev로 적고 있으며, 아래 코드에서 쓰는 직접 파일 링크는 /resolve/main/lora.safetensors로 끝납니다(약 22 MB). 이 카드는 FLUX.1 Dev의 비상업 라이선스를 파일 자체에 적용합니다. 고객 작업에 결과물을 쓰기 전에 조건을 확인하세요.
카드에 트리거 구절이 적혀 있다면 그대로 정확히 프롬프트 맨 앞에 놓으세요(XLabs 카드에는 없습니다). 권장 강도가 있으면 그 값에서 시작하고, 없으면 아래의 눈금을 사용하세요.
먼저 Playground에서 시도하기
FLUX.1 Dev LoRA 텍스트에서 이미지를 Playground 탭의 Form 보기로 열고, 잔액이 있는 계정으로 로그인해 실행합니다. 먼저 가중치 없는 대조 실행으로 시작하세요.
- 아래 프롬프트를 Prompt에 붙여 넣습니다. FLUX는 길고 구체적인 프롬프트를 따르므로 완전한 문장으로 쓰세요. 네거티브 프롬프트 칸이 없으니 제외 목록을 나열하는 대신("one handle", "no lettering") 원하는 것을 말하세요.
- Aspect ratio를 1:1로 설정합니다.
- Style LoRAs에서 Remove item을 목록이 빌 때까지 누릅니다.
- Advanced parameters를 열어 Prompt adherence를 3.5, Sampling steps를 28, Output format을 PNG, Seed를 17231로 설정합니다.
- 모델을 실행하고 이미지를 저장합니다.
One matte cobalt ceramic pitcher with a rounded body, short spout and one crescent handle on cream linen. Whole vessel visible, open handle against a quiet cream wall, oak stool behind without overlap. Soft daylight from the left, natural ceramic texture, contact shadow. Square composition, no lettering or extra vessels.
이 대조 결과에 손잡이가 두 개이거나 밑부분이 떠 있다면 먼저 장면을 고치세요. 스툴을 손잡이 구멍에서 멀리 옮기거나, 더 뚜렷한 3/4 시점을 요청하거나, 스툴을 없앨 수 있습니다. 프롬프트를 바꾸면 같은 시드로도 이미지가 달라지므로, 이후 실행에서는 텍스트를 완전히 동일하게 유지하세요.
그다음 어댑터를 하나 추가합니다. Add item을 누르고, 가중치로 바로 가는 링크를 LoRA file에 붙여 넣고(접근 가능하고 사용할 권한이 있는 파일), Strength를 1로 설정합니다. 다른 항목은 그대로 둔 채 다시 실행하세요. 강도 1은 파일을 제작자가 학습한 그대로 적용하며, 이 칸은 0부터 4까지 받습니다. 눈금은 0.8, 1.0, 1.2를 실행하세요(0.8이 여전히 너무 강하면 0.5를 추가합니다). 룩이 무거우면 0.8 쪽으로 내립니다. 강한 일러스트 스타일은 1을 조금 넘는 값을 필요로 할 수 있습니다. 하나가 효과를 낸다고 확인하기 전에는 파일 세 개를 쌓지 마세요. 파일에 트리거가 필요하면 LoRA 없이 트리거만 단독으로 실행하세요. 텍스트만으로도 베이스 이미지가 달라질 수 있습니다.
사실적인 파일이 밀랍처럼 보이거나 지나치게 날카로우면, 가장 괜찮았던 강도에서 Prompt adherence를 2.5로 낮추고 같은 시드로 다시 실행하세요. Prompt adherence는 이미지가 프롬프트를 얼마나 엄격히 따르는지 정하는 값이며, 어댑터 강도가 아닙니다.
그다음 코드로 실행하기
같은 대조군과 세 단계 강도를 쓰되, 시드와 나머지 모든 항목을 고정합니다. Python SDK(pip install spicyapi)를 설치하고, 서버 환경에서 SPICY_API_KEY를 설정한 뒤 실행하세요.
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
PROMPT = ("One matte cobalt ceramic pitcher with a rounded body, short spout and one crescent handle "
"on cream linen. Whole vessel visible, open handle against a quiet cream wall, oak stool "
"behind without overlap. Soft daylight from the left, natural ceramic texture, contact "
"shadow. Square composition, no lettering or extra vessels.")
WEIGHTS = "https://huggingface.co/XLabs-AI/flux-RealismLora/resolve/main/lora.safetensors" # XLabs realism, FLUX.1 Dev; swap in your own file
# 4 images x $0.018 = $0.072
for scale in (None, 0.8, 1.0, 1.2): # None = control with no adapter
task = client.create_task(
model="black-forest-labs/flux-1-dev-lora/text-to-image",
input_data={
"prompt": PROMPT,
"aspect_ratio": "1:1",
"loras": [] if scale is None else [{"path": WEIGHTS, "scale": scale}],
"guidance_scale": 3.5,
"steps": 28,
"seed": 17231,
"output_format": "png",
},
idempotency_key=str(uuid.uuid4()),
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"{task['taskId']} ended as {final['state']}: {final.get('errorCode')}")
assets = output_assets(final)
if not assets or any(a.get("pending") or a.get("unavailable") or not a.get("url") for a in assets):
raise RuntimeError(f"Task {task['taskId']} has no ready output; check this task before running more images")
print(scale, assets[0]["url"]) # copy the image to your own storage now생성, 대기, 다운로드, 재시도, 오류 코드는 tasks 가이드와 Python SDK 레퍼런스에 다뤄져 있습니다. 가중치는 작업마다 다시 받아오므로, 큰 파일로 하는 첫 호출은 일반 실행보다 느립니다(호스팅 API로 직접 LoRA 돌리기 참고).
Agent에게 맡기기
어시스턴트가 비교를 실행해야 한다면, 세 가지 공식 도구 모두 가격을 보여 주고 유료 호출 전에 확인을 요청합니다.
- CLI. 한 조건의
input객체를input.json에 넣고 다음을 실행합니다.
``bash spicyapi tasks create --model black-forest-labs/flux-1-dev-lora/text-to-image --input-file input.json --wait ``
CLI 문서도 보세요. npx @spicyapi/cli는 설치 없이 동작합니다.
- MCP 서버. 어시스턴트에 MCP 서버를 추가한 뒤 이렇게 요청합니다. "Run FLUX.1 Dev LoRA with this prompt, seed 17231, no LoRA, then again with this weights link at strength 0.8, 1 and 1.2." 그러면
spicyapi_task_create가 가격 확인을 위해 멈추고, 이어서spicyapi_task_wait를 호출합니다. - Skill.
npx skills add spicyapi-ai/spicy-skill로 Agent Skill을 설치하면, 코딩 어시스턴트가 필드를 추측하지 않고 실제 모델 스키마를 읽습니다.
컨트롤을 헷갈리지 않게 하기
| 컨트롤 | 텍스트에서 이미지 작업의 범위 | 이 비교에서의 용도 |
|---|---|---|
loras(Style LoRAs) | 최대 3개, 각각 path와 scale | 하나부터 시작하세요. 파일 없는 대조군은 []를 씁니다 |
| LoRA 스케일(Strength) | 0~4, 1은 파일을 학습한 그대로 적용 | 다른 설정은 고정하고 이 값만 바꿉니다 |
guidance_scale(Prompt adherence) | 0~20, 기본값 3.5 | 3.5로 두세요. 밀랍 같은 사실감이면 2.5를 시도합니다 |
steps(Sampling steps) | 1~50, 기본값 28 | 조건이 또 바뀌지 않도록 28로 둡니다 |
seed | 0~2147483647 | 실행끼리 비교할 수 있게 17231로 고정합니다 |
| 포맷 | JPEG(기본값), PNG, WebP | PNG |
이 작업은 화면 비율 9종(21:9부터 9:21까지, 모두 약 1 메가픽셀에 가격도 같음)을 제공하지만 해상도나 독립적인 너비·높이 칸, 이미지 입력, 마스크는 없습니다. scale: 0 항목도 파일을 받아 올 수 있으므로 빈 목록 대조군의 대체가 되지 않습니다.
실패한 어댑터 실험 해결하기
| 문제 | 다음에 할 일 |
|---|---|
| 요청이 거부되거나 나중에 실패함 | path가 로그인 없이 .safetensors 파일을 돌려주는지 확인하고, 모델 카드 페이지가 아닌지도 확인하세요. 호스트명을 잘못 입력하거나 파일이 나중에 사라지면 제출은 통과하고 그다음에 실패합니다. |
| 이미지가 거의 변하지 않음 | 파일의 베이스가 FLUX.1 Dev인지, 필요한 트리거가 프롬프트 맨 앞에 있는지 확인한 뒤 스케일을 0.2 올리세요. |
| 스타일이 물건을 압도함 | 스케일을 0.8 또는 0.6 쪽으로 내립니다. |
| 사실적인 룩이 밀랍처럼 보임 | 같은 시드로 가이던스를 2.5로 낮추세요. |
| 손잡이가 뭉개지거나 중복됨 | 스케일을 낮추거나, 이 주체에서는 그 파일을 버리세요. |
| 트리거만으로 그 룩이 나옴 | 그 룩은 파일이 아니라 단어에서 나옵니다. 트리거만 준 이미지에 대해 파일이 무엇을 더했는지만 기준으로 평가하세요. |
| 스타일은 쓸 만한데 제품 형태가 바뀜 | 마스크 편집기(다음 절)를 쓰거나 제품 레이어를 합성하세요. |
용기, 손잡이 가장자리, 벽을 같은 표시 크기로 비교하고, 얼마나 바뀌었는지가 아니라 처리와 쓸 수 있는 구조를 기준으로 고르세요.
원본이 이미지를 이끌어야 할 때 편집기 사용하기
FLUX.1 Dev LoRA 편집은 같은 모델의 두 번째 작업이며, 역시 이미지당 $0.018입니다. image_url과 prompt가 필요하고 같은 loras 목록, 가이던스, 스텝을 받습니다. 새로운 컨트롤은 두 개입니다. strength(0~1, 기본값 0.8)는 결과가 원본에서 얼마나 멀어지는지 정하고, 선택 사항인 mask_url은 흰색은 다시 그려지고 검은색은 유지되는 같은 크기의 흑백 이미지입니다. 원본과 마스크는 각각 10 MB까지이며, 둘 다 파일의 공개 링크를 쓸 수 있습니다.
기본값 0.8에서는 포즈와 레이아웃이 유지되고, 0.95 부근에서는 모델이 거의 전부를 다시 그립니다. 0.8에서 시작해 0.05씩 움직이되, 한 번 실행할 때 strength나 LoRA 스케일 중 하나만 바꾸세요. 원본이 비쳐 보이면 올리고, 형태가 흐트러지면 내립니다. 마스크를 쓴다면 흰 영역이 실제로 바뀌도록 0.9에서 1 사이를 쓰고, 흰 영역에 들어갈 내용만 묘사하세요.
이 브리프에 실용적으로 쓰는 방법: 승인한 물병은 남기고 그 주변만 다시 스타일링합니다. Playground에서 편집 작업을 열고, 대조 이미지를 Input image에 넣은 뒤, 같은 크기 이미지에서 벽과 린넨을 흰색으로, 물병을 검은색으로 칠해 Advanced parameters의 Mask로 추가하고, Transformation strength를 0.95로 설정한 다음, Style LoRAs에 가중치를 추가하세요. 프롬프트는 새 표현만 씁니다. "Cream linen with deep folds and a quiet plaster wall, soft daylight from the left, restrained film grain." 시드, Prompt adherence 3.5, Sampling steps 28은 대조 때와 같게 유지합니다. API 요청에서는 같은 항목이 모델 black-forest-labs/flux-1-dev-lora/edit의 image_url, mask_url, strength, loras입니다.
마스크 가장자리를 페더링해 부드럽게 하거나 물건의 윤곽을 따라가세요. 딱딱한 사각형은 눈에 띄는 이음새를 남깁니다. 편집은 원본 형태를 따르므로 aspect_ratio 칸이 없고, 결과는 약 0.7 메가픽셀로 돌아옵니다(1024 x 1536 원본은 672 x 1008로 돌아옵니다). 텍스트에서 이미지 규격보다 작습니다. 제품 픽셀이 정확히 맞아야 한다면 원래 제품 레이어를 따로 준비한 배경 위에 그대로 두고, 그 합성은 마무리 작업으로 다루세요.

브리프의 참고 자료: 사진 한 점, 드로잉 한 점, 유약 샘플.
성인 콘텐츠: LoRA가 바꾸는 것과 바꾸지 않는 것
FLUX.1 Dev LoRA는 무검열 경로입니다. SpicyAPI는 플랫폼 콘텐츠 필터를 추가하지 않으며, 성인용 LoRA는 불러와져 그대로 렌더링됩니다. LoRA를 불러온다고 콘텐츠 범위가 정해지는 것은 아니고, 무엇이 돌아올지는 여전히 베이스 모델이 정합니다. 2026년 9월 테스트 기준으로, LoRA 없는 기본 모델은 텍스트에서 암시적인 NSFW 이미지와 상반신 NSFW 이미지를 생성했고, 전신 및 두 사람의 요청은 완화되어 돌아왔습니다. 성인 LoRA를 불러왔을 때 가장 강한 검증으로도 고급 NSFW 이미지는 생성되었지만, 최대 강도의 장면까지는 도달하지 못했습니다. 편집에서는 옷을 입은 인물 사진에 대한 상반신 요청이 strength 0.95(LoRA 유무와 무관)와 마스크를 쓴 1에서는 요청대로 돌아왔지만, 0.85에서는 완화되었으므로 모델을 바꾸기 전에 strength를 올리세요. 단계별 결과는 FLUX는 무검열일까?에 있습니다.
사진풍 스타일 LoRA가 바꾸는 것은 룩이지 콘텐츠 범위가 아닙니다. 가상의 성인이나 서면으로 동의를 확인한 사람만 사용하세요.
다음은 어디로
LoRA 없이 실행한 결과만으로 이미 브리프를 만족한다면 LoRA를 빼고 두세요. 라이브러리 전체에서 새 파일의 깨진 링크와 먹통인 가중치를 점검하려면 호스팅 API로 직접 LoRA 돌리기를, 다른 베이스에서 같은 대조 우선 방식을 보려면 Z-Image Turbo LoRA 같은 시드 테스트를 참고하세요.






