KO ▾
API 키 받기

Stable Diffusion 프롬프트 생성 LLM: Python 설정 Python 설정

업데이트됨

Stable Diffusion 프롬프트 생성 LLM을 사용해 짧은 단어를 구조화된 전체 프롬프트로 확장하려면 텍스트 모델과 약 30줄의 Python 스크립트만 있으면 됩니다. 모델은 텍스트로 프롬프트를 작성하며 이미지를 렌더링하지 않으므로, 결과를 SDXL이나 사용 중인 이미지 도구로 전달해야 합니다.

빛나는 짧은 단어들이 긴 디테일 리본으로 변해 빈 캔버스로 흘러드는 유리 깔때기
텍스트 역할극 시나리오를 나타내는 빛나는 말풍선이 있는 작은 무대 디오라마

주요 포인트

  • LLM은 텍스트만 생성합니다. 출력물을 자체 SDXL, ComfyUI 또는 Automatic1111 환경에 입력하세요.
  • JSON 모드에서는 정규식 없이 파싱할 수 있는 양성 프롬프트와 음성 프롬프트를 반환합니다.
  • 확장 한 번당 비용은 $0.0001 미만이며, 1,000개 프롬프트 비용은 약 $0.09입니다.
  • 프롬프트를 간결하게 유지하세요: SDXL 텍스트 인코더는 각 청크의 처음 77토큰만 읽습니다.

LLM의 기능과 한계

이미지 모델은 주제, 배경, 렌즈, 조명, 매체, 분위기, 피해야 할 항목 등 구체적이고 밀도 높은 프롬프트에 잘 반응합니다. 대부분의 사용자는 세 단어를 입력해 평범한 결과를 얻습니다. LLM은 짧은 아이디어를 받아 일관된 형식의 긴 버전을 작성해 격차를 메웁니다.

역할 분담을 명확히 하세요. 이 서비스는 text-only API입니다. 이미지, 오디오, 비디오를 생성하지 않으며, 임베딩이나 파인튜닝 기능이 없습니다. 이미지 파이프라인 앞에 위치해 파이프라인이 읽을 지시를 작성합니다. 독립적인 제공업체의 오픈 웨이트 모델 하나를 제공하는 OpenAI 호환 엔드포인트이며, 이미지 모델 벤더의 제품이 아닙니다.

이 모델은 합법적인 성인 사용자를 위해 콘텐츠 거부 없이 응답하도록 조정되었습니다. 호러, 소설의 폭력, 성인 주제 등 다른 곳에서 차단되는 주제를 다루는 아티스트와 게임 개발자에게 중요합니다. 미성년자가 관련된 성적 콘텐츠는 하드 리밋이며 절대 생성되지 않습니다.

단계 1: 키 발급 및 테스트 호출

Google 또는 이메일과 비밀번호로 가입한 후 API 키 페이지를 엽니다. 원클릭 체험은 7일 유효하며 카드가 필요 없는 $0.50 크레딧을 추가합니다. 비용 섹션에서 알 수 있듯이 이는 수천 번의 프롬프트 확장에 충분합니다.

curl로 모든 것이 작동하는지 확인하세요:

curl https://api.sdxlapi.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "system", "content": "You write Stable Diffusion prompts."},
      {"role": "user", "content": "lighthouse in a storm"}
    ]
  }'

Base URL과 키를 변경하면 모든 OpenAI SDK가 작동합니다. 자세한 내용은 문서를 참조하세요.

단계 2: 안정적인 출력을 위한 시스템 프롬프트

시스템 프롬프트가 품질의 원천입니다. 대상 형식, 요소 순서, 길이 제한, 제외 항목을 모델에 지시하세요. 시작점으로 잘 작동하는 버전:

짧은 이미지 아이디어를 SDXL용 프롬프트로 변환합니다. 40~60단어로 된 긍정적 프롬프트를 작성하세요: 먼저 주제를, 다음으로 배경, 구도, 조명, 매체 또는 스타일, 분위기를 적습니다. 쉼표로 구분된 구문을 사용하고 완전한 문장은 피하세요. 그런 다음 최대 15개의 짧은 구문으로 된 부정적 프롬프트를 작성하세요. 이미지에 텍스트, 워터마크 또는 캡션을 추가하지 마세요. "prompt"와 "negative" 키가 있는 JSON을 반환하세요.

단어 제한이 중요합니다. SDXL의 CLIP 텍스트 인코더는 프롬프트를 77토큰 단위로 읽으며, 그 이후의 내용은 잘리거나 UI의 청킹 기능으로 처리됩니다. 40~60단어를 목표로 하면 대부분의 프롬프트가 하나의 청크에 들어가고 가장 중요한 정보가 앞에 배치됩니다.

스타일을 일관되게 유지하되 동일한 아이디어의 두 실행이 다르게 나오도록 낮은~중간 온도(0.7~0.9)를 사용하세요. 테스트에 동일한 출력이 필요하면 고정 seed를 전달하세요.

단계 3: Python 스크립트

이 스크립트는 목록에서 아이디어를 읽고 JSON을 요청한 후 프롬프트 쌍을 출력합니다. Base URL이 변경된 공식 OpenAI Python 패키지를 사용합니다.

import json
from openai import OpenAI

client = OpenAI(base_url="https://api.sdxlapi.com/v1", api_key="YOUR_KEY")

SYSTEM = (
    "You turn short image ideas into prompts for SDXL. Write one positive "
    "prompt of 40 to 60 words: subject, setting, composition, lighting, "
    "medium or style, mood, as comma-separated phrases. Then a negative "
    "prompt of up to 15 short phrases. Return JSON with keys "
    "'prompt' and 'negative'."
)

def expand(idea: str) -> dict:
    resp = client.chat.completions.create(
        model="uncensored",
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": idea},
        ],
        response_format={"type": "json_object"},
        temperature=0.8,
        max_tokens=400,
    )
    return json.loads(resp.choices[0].message.content)

for idea in ["lighthouse in a storm", "abandoned greenhouse at dawn"]:
    result = expand(idea)
    print(idea, "->", result["prompt"])
    print("negative:", result["negative"], "\n")

JSON 모드(response_format에 json_object)는 응답을 깔끔하게 파싱하게 합니다. 프로덕션에서는 여전히 json.loads를 try 블록으로 감싸고 실패 시 한 번 재시도하세요. 긴 응답이 max_tokens에서 잘리면 객체 중간에 끝날 수 있기 때문입니다.

단계 4: 이미지 도구로 프롬프트 전송

출력은 일반 문자열이므로 어떤 프런트엔드에서도 사용할 수 있습니다. 로컬 Automatic1111 또는 ComfyUI 설치의 경우 API에 두 필드를 POST하세요. 아이디어 CSV를 반복하는 스크립트의 경우 결과를 파일에 작성하고 배치로 큐에 추가하세요.

  • 아이디어, 프롬프트 및 부정적 프롬프트를 함께 저장하여 생성된 지시문으로 좋은 이미지를 추적할 수 있게 하세요.
  • 일관된 외관의 시리즈가 필요할 때 사용자 메시지에 자체 목록("cinematic photograph", "ink illustration")의 스타일 라인을 추가 필드로 추가하세요.
  • 작동한 프롬프트 짧은 라이브러리를 유지하고, 시스템 프롬프트에 예시로 두세 개를 입력하세요. Few-shot 예시는 형용사보다 스타일을 더 안정적으로 유도합니다.

롤플레이나 게임 프로젝트의 경우 동일한 패턴으로 이야기의 장면을 시각화할 수 있으며, LLM은 마지막 몇 단락을 시각적 설명으로 변환합니다. 텍스트 기반 롤플레이 시나리오 기사는 이야기 측면을 다룹니다.

일반적인 문제 및 해결 방법

거의 모든 프롬프트 생성기 프로젝트에서 몇 가지 문제가 발생합니다.

모델이 설명을 추가함

"프롬프트입니다"로 시작하는 응답은 파이프라인을 끊습니다. JSON 모드는 이를 대부분 제거합니다. 일반 텍스트로 작업할 경우 "프롬프트만 출력하고 서문 없이"라고 명시하고, 절대 보고 싶지 않은 줄에 대한 정지 시퀀스를 추가하세요.

모든 프롬프트가 동일해 보임

낮은 온도와 엄격한 템플릿은 균일한 결과를 제공합니다. 온도를 1.0으로 높이고 전달하는 스타일 라인을 변경하거나 세 가지 대안을 요청해 하나를 선택하세요. 패널티(frequency_penalty, presence_penalty)는 전달되며 반복된 구문을 분산시킬 수 있습니다.

프롬프트가 이미지 모델에 너무 김

시스템 프롬프트에 단어 제한을 두고 코드에서 길이를 확인하세요. 수동으로 잘라내면 마지막 디테일(보통 가장 중요도가 낮은 부분)이 손실되지만, 모델이 처음부터 짧게 작성하도록 하는 것이 더 좋습니다.

429 오류 발생

분당 또는 동시에 너무 많은 요청을 보냈습니다. 몇 초간 대기 후 재시도하세요. 응답에 Retry-After: 5가 포함될 수 있습니다. 4~8개의 워커로 작은 스레드 풀을 가진 배치 작업은 전체 키의 제한 내에 머무릅니다.

1,000개 프롬프트 비용

가격은 입력 토큰 1M당 $0.15, 출력 토큰 1M당 $0.50입니다. 일반적인 확장은 약 150토큰의 시스템 프롬프트와 15토큰의 아이디어를 보내므로 총 170토큰 입력, 약 120토큰의 JSON 출력을 받습니다.

  • 입력: 170 × $0.15 / 1M = $0.0000255.
  • 출력: 120 × $0.50 / 1M = $0.00006.
  • 프롬프트당: 약 $0.0000855.
  • 1,000개 프롬프트: 약 $0.0855, 또는 $0.09.

더 긴 시스템 프롬프트나 few-shot 예시를 위해 반올림하세요. 예시로 600토큰을 추가하면 입력이 770토큰이 되고, 1,000개 프롬프트의 입력 비용은 약 $0.1155, 출력 비용은 $0.06로 총 약 $0.18입니다. 어쨌든 $0.50 체험금은 수천 번 확장을 커버합니다. 실패한 요청은 요금이 부과되지 않으며, 선불 크레딧은 만료되지 않습니다. 충전($20~$500, 암호화폐)은 요금제 페이지를 참조하세요.

질문과 답변

LLM이 Stable Diffusion 이미지를 직접 생성할 수 있나요?

아니요. 텍스트만 생성합니다. 프롬프트를 SDXL, ComfyUI, Automatic1111 또는 실행 중인 다른 이미지 도구에 전달합니다.

SDXL 프롬프트는 얼마나 길게 작성해야 하나요?

텍스트 인코더가 77토큰 단위로 처리하므로, 핵심 내용을 앞에 두고 40~60단어 정도가 적합합니다.

성인물이나 어두운 주제를 거부하나요?

이 모델은 합법적인 성인 용도에 대해 콘텐츠 거부 없이 답변하도록 조정되었습니다. 미성년자가 등장하는 콘텐츠는 생성되지 않습니다.

어떤 모델 이름을 보내야 합니까?

모델 ID에 uncensored를 사용하고, 기본 URL https://api.sdxlapi.com/v1과 Bearer 토큰으로 키를 전송하세요.

여러 프롬프트를 동시 요청할 수 있나요?

전체 키는 동시 요청 8개와 분당 300개의 요청을 허용합니다. 체험 키는 동시 요청 2개와 분당 60개를 허용합니다. 429 응답은 대기 후 재시도를 의미합니다.

키는 양식 하나만 작성하면 받을 수 있습니다

계정을 생성하고 키를 복사한 후 기본 URL을 변경하세요. 설정은 이것으로 끝입니다.

API 키 받기