HiAPI
블로그

튜토리얼

HiAPI API로 recraft/creative-upscale 사용하는 방법: curl 및 Python 요청 가이드

Nov 3, 2026
文章封面图:深青底色上以扁平几何切面构成的水晶矿物剖面,青绿双色点缀,印刷图版风格。

개발자 워크플로에서 recraft/creative-upscale의 역할

recraft/creative-upscale는 이미지 대 이미지 엔드포인트입니다: 기존 이미지를 보내면 모델이 더 크고 모델이 재구성한 버전을 반환합니다. 여기서 핵심 단어는 창의적(creative)입니다. 고전적인 업샘플링 단계(쌍선형, Lanczos 또는 범용 초해상도 모델)는 입력을 가능한 한 충실하게 보존합니다. 창의적 업샘플링은 소스 픽셀에 존재한 적 없는 디테일을 재생성할 수 있게 합니다—가장자리가 재합성되고, 텍스처가 추론되며, 작고 흐릿한 영역이 단순 보간이 아니라 그럴듯해 보이는 콘텐츠로 선명해질 수 있습니다.

이것이 단순한 스케일링 도구와 구별되게 하며, 파이프라인에서 다른 위치를 차지하게 만듭니다.

언제 사용할까

  • 소재 업그레이드. 썸네일이나 구버전 제품 이미지를 더 큰 표시 크기로 보여줘야 하는데, 일반 스케일링은 원래 해상도의 이웃과 비교할 때 흐릿하게 보입니다.
  • 참조 이미지 및 목업 작업. 컨셉 아트, 스토리보드 또는 플레이스홀더 이미지를 저해상도 출처를 드러내지 않고 큰 크기로 보여줘야 할 때.
  • 생성 루프 내 업샘플링. 작은 작업 크기에서 이미지를 생성했고, 더 큰 캔버스에서 전체 생성 흐름을 다시 실행하지 않고 최종 소재를 얻고 싶을 때.

언제 사용하지 말아야 할까

요구 사항이 바이트 단위의 정밀한 충실도라면—아카이브 스캔, 문서, 픽셀 값이 곧 데이터인 텍스처 아틀라스—창의적 모델을 사용하지 마세요. 재생성된 디테일은 재구성이 아니라 합리적인 추측이며, 측정이나 아카이빙 목적에서는 그 추측이 결함입니다. 이런 경우에는 결정적 리샘플러를 사용하고 창의적 모델은 지각적 출력에 남겨두세요.

호출의 형태

이 엔드포인트는 다른 HiAPI 이미지 엔드포인트와 동일한 요청 패턴을 따릅니다: 모델 경로로 인증된 JSON POST 요청을 보내며, 입력 이미지와 파라미터 객체를 포함합니다. 플랫폼의 다른 이미지 모델을 이미 통합했다면 이 멘탈 모델을 그대로 옮길 수 있습니다—통합 인터페이스를 통해 이러한 호출을 라우팅하는 이유가 바로 이것입니다. 작동하는 curl 호출 하나가 이후 접하는 모든 이미지 엔드포인트의 템플릿이 됩니다.

이 단계를 이해하는 유용한 방법: 이미 신뢰하는 이미지(구도, 콘텐츠, 색상이 이미 결정됨)를 소비하고 더 크고 더 세밀한 변형을 반환합니다. 콘텐츠 결정은 업스트림에 속하며, recraft/creative-upscale은 마무리 단계입니다.

사전 조건 및 엔드포인트 설정

첫 요청을 작성하기 전에 네 가지를 준비하세요. 특별한 SDK가 필요 없습니다—전체 통합은 JSON 본문을 사용한 순수 HTTPS 통신입니다.

1. API 키

이미지 모델에 접근할 수 있는 HiAPI API 키가 필요합니다. 기밀 정보로 취급하세요: 스크립트에 붙여넣지 말고 환경 변수에서 로드하며 절대 버전 관리 시스템에 커밋하지 마세요.

export HIAPI_API_KEY="your-key-here"

키는 요청 헤더로 전달되며, URL이나 JSON 본문에는 포함되지 않습니다. 쿼리 문자열에서 제외하면 셸 기록과 프록시 로그에서도 제외됩니다.

2. 기본 URL

기본 URL은 HiAPI API 호스트입니다. 모든 모델 호출은 그 하위의 상대 경로이므로, 변수로 설정하고 모든 스크립트에서 재사용할 수 있습니다:

export HIAPI_BASE_URL="https://api.hiapi.ai"

계정의 표준 기본 URL과 경로 접두사를 확인하려면 플랫폼 API 참조 문서를 참조하고 이를 단일 변수로 저장하세요. 이렇게 하면 호스트나 버전 변경이 한 줄 수정이 됩니다.

3. 모델 식별자

모델 ID는 경로 세그먼트이며 게시된 철자를 정확히 따라야 합니다: recraft/creative-upscale. 슬래시를 포함하며 이는 일부 도구에서 중요합니다—디버깅 섹션에서 자세히 설명합니다. 대소문자와 하이픈이 모두 중요합니다. 잘못된 문자가 있으면 모델을 찾을 수 없다는 오류가 발생하는데, 메시지를 대충 훑어보면 인증 문제로 보일 수 있습니다.

4. 테스트 이미지

디스크에 이미지를 준비하고 정확한 경로와 MIME 유형을 확인하세요. 첫 실행에는 작은 파일을 사용해 실패가 페이로드 크기나 타임아웃 문제가 아니라 요청 문제임을 명확히 하세요. 이후 동일한 이미지를 비교 실행에 재사용하므로 평평한 그라데이션이 아니라 보이는 디테일(직물, 식생, 텍스트 없는 표지판)이 있는 것을 선택하세요.

요청 헤더 체크리스트

여기서부터 모든 요청은 동일한 헤더를 전달합니다:

  • Authorization: Bearer $HIAPI_API_KEY
  • Content-Type: application/json

JSON 본문에 base64 또는 data URI로 이미지를 보내는 경우 이 두 헤더로 충분합니다. 대신 파일을 먼저 업로드해 URL을 얻는 경우 업로드를 별도 호출로 처리하고 생성된 URL을 모델 요청과 별도로 저장하세요.

키, 기본 URL, 모델 ID, 테스트 이미지가 있으면 1분 이내에 실제 호출을 할 수 있습니다.

curl을 사용한 작동하는 요청

다음은 바로 실행 가능한 호출입니다. 이미지 값을 자신의 입력으로 바꾸세요—모델의 입력 모드가 허용하는 것에 따라 공개 접근 가능한 URL 또는 base64로 인코딩된 data URI일 수 있습니다.

curl -sS -X POST "$HIAPI_BASE_URL/v1/models/recraft/creative-upscale" \
  -H "Authorization: Bearer $HIAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "image": "https://example.com/test-input.png"
    },
    "parameters": {
      "upscale": 2
    }
  }' \
  -o response.json

-o를 사용해 응답을 터미널로 스트리밍하지 않고 파일에 쓰면 JSON이 파싱 가능하게 온전히 유지되고 호출이 스크립트화될 수 있습니다.

각 부분의 역할

  • -X POST —— 이 엔드포인트는 POST입니다. GET은 메서드 오류를 반환하며 권한 문제로 오해되기 쉽습니다.
  • URL —— 기본 URL, 그 다음 전체 모델 ID가 포함된 모델 경로. ID 자체에 슬래시가 포함되어 있으므로 경로는 모델 컬렉션 뒤에 두 개의 세그먼트가 있습니다. 하나의 문자열로 유지하고, 문서에서 이것이 예상 동작이라고 설명하지 않는 한 클라이언트 라이브러리가 recraft%2Fcreative-upscale로 재인코딩하지 않도록 하세요.
  • Authorization —— bearer 토큰. 이 명령에서 401이 발생하면 키나 헤더 형식이 잘못된 것이며, 본문의 다른 내용은 아직 검증되지 않았습니다.
  • Content-Type: application/json —— 필수. 없으면 일부 게이트웨이가 본문을 폼 데이터로 취급해 요청이 모델에 도달하지 못합니다.
  • input.image —— 소스 이미지. 반복할 때는 URL을 선호하세요: 명령을 짧게 유지하고 차이가 명확합니다.
  • parameters.upscale —— 업샘플링 제어. 적당한 배수에서 시작해 응답을 확인한 후 올리세요.

두 가지 실용 변형

URL 대신 로컬 파일을 base64로 보내려면:

B64=$(base64 -w0 ./test-input.png)

curl -sS -X POST "$HIAPI_BASE_URL/v1/models/recraft/creative-upscale" \
  -H "Authorization: Bearer $HIAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"input\": { \"image\": \"data:image/png;base64,${B64}\" },
    \"parameters\": { \"upscale\": 2 }
  }" \
  -o response.json

디버깅 중에 HTTP 상태 코드와 응답 본문을 모두 보려면 -w '\nHTTP %{http_code}\n'를 추가하고 -o를 제거하세요.

이 명령 하나를 템플릿으로 사용하세요. 이미지가 반환되면 이후의 모든 변경—다른 배수, 다른 소스 이미지—은 새로운 통합이 아니라 두 필드를 편집하는 일이 됩니다.

Python에서 동일한 요청

Python 버전은 curl 본문을 복사 붙여넣기한 것이 아니라, 이후 비교 실행이 매번 한 번의 호출로 가능하도록 작은 재사용 함수여야 합니다. 표준 라이브러리만 사용하세요—SDK 불필요.

import base64
import json
import os
import pathlib
import urllib.request

HIAPI_BASE_URL = os.environ["HIAPI_BASE_URL"].rstrip("/")
HIAPI_API_KEY = os.environ["HIAPI_API_KEY"]
MODEL = "recraft/creative-upscale"


def creative_upscale(image: str, upscale: int = 2, timeout: int = 120) -> dict:
    """이미지를 recraft/creative-upscale로 보내고 파싱된 JSON을 반환합니다."""
    payload = {
        "input": {"image": image},
        "parameters": {"upscale": upscale},
    }
    request = urllib.request.Request(
        url=f"{HIAPI_BASE_URL}/v1/models/{MODEL}",
        data=json.dumps(payload).encode("utf-8"),
        headers={
            "Authorization": f"Bearer {HIAPI_API_KEY}",
            "Content-Type": "application/json",
        },
        method="POST",
    )
    with urllib.request.urlopen(request, timeout=timeout) as response:
        return json.loads(response.read().decode("utf-8"))


def as_data_uri(path: str) -> str:
    data = pathlib.Path(path).read_bytes()
    mime = "image/png" if path.lower().endswith(".png") else "image/jpeg"
    return f"data:{mime};base64,{base64.b64encode(data).decode('ascii')}"


if __name__ == "__main__":
    result = creative_upscale(as_data_uri("test-input.png"), upscale=2)
    print(json.dumps(result, indent=2)[:2000])

왜 이런 형태인가

  • 환경 변수에서 설정 로드. 기본 URL과 키는 가져올 때 한 번 읽히므로 파일에 기밀 정보가 없고, 환경 전환은 export 한 번이면 됩니다.
  • 하나의 함수, 하나의 책임. creative_upscale은 이미지 참조와 배수를 받아 파싱된 JSON을 반환합니다. 파라미터에 관한 모든 정보가 호출 지점에서 보입니다.
  • 명시적 타임아웃. 이미지 모델은 텍스트 엔드포인트보다 오래 걸립니다. 너무 짧은 기본값을 상속하지 말고 의도적으로 타임아웃을 설정하며, 느리지만 성공하는 호출이 불필요하게 재시도되지 않을 만큼 충분히 길게 유지하세요.
  • 로컬 파일 헬퍼. as_data_uri 덕분에 요청 로직을 변경하지 않고 URL이나 로컬 경로를 전달할 수 있습니다.

세션 기반 클라이언트를 선호한다면

httpx로 동일한 호출은 두 줄 교체만 하면 됩니다—클라이언트를 생성하고 기본 Authorization 헤더를 설정한 다음 JSON 본문을 post합니다. 중요한 불변 항목은 변하지 않습니다: 모델 ID는 단일 미인코딩 경로 세그먼트로 유지되고, 키는 헤더에 남으며, 본문은 input / parameters 분리를 유지합니다. 이 세 가지를 맞추면 클라이언트가 플랫폼의 다른 어떤 클라이언트와도 교환 가능합니다.

파이프라인에 연결할 때는 파싱된 딕셔너리를 반환해 호출자가 이미지를 어떻게 저장할지 결정하게 하세요—이 분리가 다음 섹션의 응답 처리를 재사용 가능하게 합니다.

업샘플링 및 창의성 파라미터

보내는 값보다 그것을 어디에 보내는지가 더 중요합니다. 위치를 먼저 올바르게 하고 나서 값을 조정하세요.

두 개의 버킷, 하나의 계약

모든 요청은 다음으로 나뉩니다:

  • input —— 이미지 자체. 작동 대상. 모델 동작에 관한 내용은 여기에 넣지 않습니다.
  • parameters —— 제어 항목. 업샘플링 배수와 창의성 설정이 모두 이 객체에 속하며 서로 형제입니다.

이 분리가 계약입니다. 첫 실행은 모델이 배치를 수용하는지—즉 호출이 최소한 이미지를 반환하는지—확인한 후 값을 최적화하세요. 파라미터가 잘못된 버킷에 있으면 보통 기본값으로 생성된 이미지나 알 수 없는 필드를 지적하는 검증 오류를 받습니다. 어느 쪽이든 배치 오류이지 품질 오류가 아니며, 품질 설정을 좇아도 고쳐지지 않습니다.

업샘플링 배수

배수는 출력 크기를 입력 대비 제어합니다. 추론 방법:

  • 승수이므로 비용과 지연이 함께 증가합니다. 적당한 배수에서 최대값으로 올리는 것은 렌더링 시간에서 선형 단계가 아닙니다. 각 상향 단계를 슬라이더 미세 조정이 아니라 새로운 실험으로 취급하세요.
  • 입력 해상도는 여전히 중요합니다. 창의적 모델은 구조가 어느 정도 있을 때 더 많은 여지를 가집니다. 매우 작은 입력은 모델이 발명할 자유를 더 주며, 때로는 그것이 목표이고 때로는 사고입니다.
  • 목표 크기에 따라 배수를 선택하고 최대값에 따라 선택하지 마세요. 이미지가 위치에 맞으려면 2×가 필요하다면 2×를 요청하세요. 최대값을 요청한 후 축소하면 이득을 버리고 그 비용을 지불하는 것입니다.

창의성 제어

창의성은 모델이 얼마나 대체(확대가 아니라)할 수 있는지를 결정하는 다이얼입니다. 낮은 설정은 더 충실한 업샘플링에 가깝게 작동하고, 높은 설정은 모델이 더 공격적으로 재합성하게 하여 흐릿하거나 블록투성이인 소스를 구할 수 있지만, 원치 않는 디테일을 도입할 수도 있습니다.

이 파라미터를 양쪽 모두 구체적으로 해석되는 충실도 레버로 보세요:

  • 보존 —— 로고, 얼굴, 제품 카탈로그 이미지, 뷰어가 원본과 비교할 수 있는 모든 것.
  • 재생성 —— 컨셉 아트, 배경, 텍스처, 장식적 이미지, 그럴듯함이 정확성보다 중요한 경우.

작업 방법

한 번에 하나의 파라미터를 변경하고, 입력을 고정하며, 값을 출력과 함께 기록하세요. 작은 매트릭스—동일한 이미지의 두 배수, 각 배수의 두 창의성 설정—이면 자신의 콘텐츠에서 이 엔드포인트의 특성을 파악하기에 충분합니다. 다른 사람의 "최적" 값을 빌리지 마세요; 창의적 모델은 입력과 강하게 상호작용하며 사진에 적합한 설정이 평면 일러스트에 적합한 경우는 드뭅니다.

어떤 값이 나쁜 결과를 내는 대신 직접 거부된다면 그것은 계약이 파라미터 도메인을 알려주는 것입니다—추측하지 말고 엔드포인트의 파라미터 참조에서 허용 범위를 확인하세요.

응답 읽기 및 이미지 저장

응답을 방어적으로 파싱하세요. 페이로드 유형은 계약의 일부이지만 URL과 인라인 base64 블록 사이에서 달라질 수 있으며, 클라이언트는 어느 쪽을 받아도 충돌하지 않아야 합니다.

먼저 원시 JSON 확인

파서를 작성하기 전에 -o response.json으로 curl 호출을 한 번 실행하고 파일을 읽으세요. 이미지를 담은 필드를 식별하세요. 보통 다음 중 하나입니다:

  • 생성된 파일을 가리키는 URL, 또는
  • 인라인 문자열, 보통 base64 또는 data URI.

또한 메타데이터로 기록할 가치가 있는 항목—크기, 반환된 모델 ID, 지원 요청에 사용할 식별자—도 찾으세요.

내결함성 저장 함수

import base64
import pathlib
import urllib.request


def extract_image(result: dict) -> str:
    """반환된 형태에 관계없이 이미지 페이로드를 찾습니다."""
    for container in (result, result.get("data"), result.get("output")):
        if isinstance(container, list) and container:
            container = container[0]
        if isinstance(container, dict):
            for key in ("image", "url", "b64_json", "image_url"):
                value = container.get(key)
                if isinstance(value, str) and value:
                    return value
    raise ValueError(f"no image field in response: {sorted(result)}")


def save_image(payload: str, out_path: str = "upscaled.png") -> pathlib.Path:
    path = pathlib.Path(out_path)
    if payload.startswith("data:"):
        payload = payload.split(",", 1)[1]
        path.write_bytes(base64.b64decode(payload))
    elif payload.startswith("http://") or payload.startswith("https://"):
        with urllib.request.urlopen(payload) as response:
            path.write_bytes(response.read())
    else:
        path.write_bytes(base64.b64decode(payload))
    return path

요점은 이것이 유일하게 올바른 파서라는 것이 아니라, 함수가 가정(data:, http(s)://, 순수 base64)을 명시하고 어느 것도 맞지 않으면 명확한 오류를 던진다는 것입니다. 응답 형태가 바뀌면 이미지를 소비하는 모든 스크립트가 아니라 한 함수만 업데이트하면 됩니다.

curl 흐름에서 안전하게 저장

curl -sS -X POST "$HIAPI_BASE_URL/v1/models/recraft/creative-upscale" \
  -H "Authorization: Bearer $HIAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d @request.json -o response.json

python - <<'PY'
import json
from save_image import extract_image, save_image
result = json.load(open("response.json"))
print(save_image(extract_image(result), "out.png"))
PY

유지할 가치가 있는 두 가지 습관: 매 실행마다 새 파일 이름에 쓰기를 하면 실패나 부분 쓰기가 좋은 결과를 덮어쓰지 않습니다; 저장 후 출력 크기 검증——HTTP 200 성공이지만 크기가 예상과 다르면 파라미터가 적용되지 않은 것이며, 이는 파이프라인의 세 단계 후보다 여기서 발견하기 쉽습니다.

일반적인 실패 디버깅

대부분의 첫 실행 실패는 지루합니다. 이 목록을 순서대로 처리하세요; 대부분의 경우를 포괄합니다.

401 / 403 —— 인증

  • 키가 명령을 실행하는 동일한 셸에 로드되었나요? echo $HIAPI_API_KEY가 비어 있지 않은 값을 출력해야 합니다.
  • 헤더가 정확히 Authorization: Bearer <key>인가요—공백과 Bearer 단어를 포함해서?
  • 키가 헤더가 아니라 URL이나 JSON 본문에 들어갔나요? 다시 옮기세요.
  • 키가 이미지 모델로 제한되어 있나요? 일부 제품 영역에 유효한 키가 이 엔드포인트에는 적용되지 않을 수 있습니다.

404 —— 모델 또는 라우트를 찾을 수 없음

거의 항상 모델 ID 문제입니다. 게시된 식별자 recraft/creative-upscale과 문자 단위로 비교하세요: 슬래시, 소문자, creative-upscale의 하이픈이 모두 중요합니다. 관련 함정은 클라이언트 URL 이스케이프입니다—요청 라인에서 recraft%2Fcreative-upscale이 보이고 호출이 404라면 HTTP 계층이 슬래시를 인코딩한 것입니다; 경로 세그먼트를 건드리지 않도록 구성하세요.

또한 경로 접두사를 중복하지 않았는지 확인하세요(예: 기본 URL이 이미 버전 세그먼트로 끝나는데 경로가 그것을 반복하는 경우). 기본 URL에 변수를 사용하면 쉽게 발견할 수 있습니다.

400 —— 요청은 이해되었지만 거부됨

추측하지 말고 메시지를 읽으세요. 일반적인 원인:

  • 이미지 입력 형식 오류. 잘린 base64(보통 셸 변수가 잘렸거나, 스키마가 전체 data URI를 기대하는데 data:image/png;base64, 접두사가 누락된 경우), 또는 공개적으로 접근할 수 없는 URL.
  • 파라미터가 범위를 벗어나거나 잘못 배치됨. 모델이 수용하지 않는 배수, 또는 upscale을 parameters 내부가 아니라 최상위에 보낸 경우.
  • 콘텐츠 유형 누락. Content-Type이 text/plain이거나 완전히 없으면 JSON 본문이 파싱 불가능한 문서가 됩니다.

413 / 422 / 타임아웃 —— 크기와 시간

매우 큰 소스 이미지는 모델이 실행되기 전에 검증에 실패할 수 있습니다. 입력을 적당히 축소해 재시도하고, 전체 해상도 파일을 보내기 전에 요청 형태가 합리적인지 확인하세요. 타임아웃의 경우 느림과 실패를 구분하세요: 클라이언트 타임아웃을 한 번 늘려 호출이 이후 성공하면 수정은 클라이언트 구성에 속하며 페이로드 문제가 아닙니다.

빠른 분류 규칙

오류가 인증, 모델 또는 입력 형식을 언급하면 업샘플링 로직에 도달하지 못한 것입니다—아직 창의성이나 배수 값은 관련이 없습니다. 래퍼를 고치고 가능한 가장 작은 요청(작은 테스트 이미지, 기본 파라미터)으로 재시도한 후에야 설정을 변경하기 시작하세요. 이 순서로 디버깅하면 파라미터를 조정해 깨진 헤더를 보상하는 고전적 실수를 방지할 수 있습니다.

반복 가능한 비교 테스트 구축

창의적 업샘플링은 판단에 크게 의존하므로 기억 대신 고정 장치를 사용하세요. 목표는 "이 설정이 실제로 유용한가?"에 오래된 파일을 다시 눈으로 보지 않고 답하는 작은 테스트 하네스입니다.

고정 입력

  • 버전 관리에 체크인된 테스트 이미지 하나. 복구 가능한 디테일—직물, 식생, 건물 가장자리—이 있는 것을 선택하세요. 스크립트 옆에 커밋해 모든 실행과 팀 구성원이 동일한 소스를 사용하게 하세요.
  • 고정 파라미터. 배수와 창의성 값은 머리나 채팅 메시지가 아니라 스크립트의 목록에 존재합니다.
  • 고정 모델 ID. 요청 헤더 체크리스트와 같은 이유: recraft/creative-upscale을 한 번 상수에 철자하세요.

최소 매트릭스 실행기

import itertools, json, pathlib

FACTORS = [2, 4]
CREATIVITY = ["preserve", "regenerate"]  # 문서에서 정확히 허용된 값을 사용하세요

src = as_data_uri("fixtures/test-input.png")
out_dir = pathlib.Path("runs"); out_dir.mkdir(exist_ok=True)

for factor, mode in itertools.product(FACTORS, CREATIVITY):
    result = creative_upscale(src, upscale=factor, creativity=mode)
    name = f"f{factor}-{mode}"
    save_image(extract_image(result), out_dir / f"{name}.png")
    (out_dir / f"{name}.json").write_text(json.dumps(result, indent=2))
    print(name, "ok")

코드보다 두 가지 세부 사항이 더 중요합니다. 첫째, 각 이미지 옆에 원시 JSON 응답을 저장하세요—결과가 이상해 보일 때 응답은 파라미터가 적용되었는지 조용히 무시되었는지 알려줍니다. 둘째, 파라미터 값으로 파일 이름을 지정하세요—그러면 디렉터리 목록이 매트릭스가 되어 어떤 파일이 어떤 설정에서 나왔는지 의심할 필요가 없습니다.

고정된 방식으로 비교

  • 예상 표시 크기로 출력을 보세요, 확대해서가 아니라. 400%에서 인상적인 창의적 디테일이 사용자가 실제로 보는 크기에서는 부자연스러울 수 있습니다.
  • 실행의 일부로 프로그래밍 방식으로 크기를 확인하세요. 불일치는 배수가 적용되지 않았다는 뜻이며, 미학 문제가 아니라 자신의 요청에 대한 버그 보고입니다.
  • 자산 범주에 따라 선택한 정의된 기준—소스에 대한 충실도 대 지각적 선명도—으로 판단하세요. 다음 사람이 "더 나음"이 무엇을 의미하는지 알 수 있도록 기준을 매트릭스 옆에 적어 두세요.

매트릭스가 안정되면 하네스는 회귀 테스트가 됩니다: 클라이언트 코드를 변경한 후 재실행하고 이전 실행 디렉터리와 비교하세요. 이 가이드의 모든 호출은 플랫폼의 다른 이미지 엔드포인트와 동일한 요청 형태를 공유하므로, 여기서 구축한 실행기는 다음에 통합할 모든 모델로 일반화할 수 있습니다.

영구 AI 아티팩트로 빌드 시작하기

API 키를 받아 태스크 기반의 하나의 API로 이미지, 비디오, 오디오 모델을 호출하세요.

API 문서 보기