짧은 답변
- 이미지를 볼 수 있는 기능과 이미지를 생성할 수 있는 기능은 서로 다른 능력입니다. 거의 모든 현대적인 챗 모델은 이미지를 읽을 수 있습니다(보통 이것이 멀티모달의 의미입니다). 하지만 이미지를 생성할 수는 없으며, 이는 별도의 전용 이미지 모델 범주입니다.
- Gemini 이미지 제품군만이 하나의 엔드포인트에서 텍스트와 이미지를 함께 반환합니다 —
gemini-3-pro-image(Nano Banana Pro),gemini-3.1-flash-image(Nano Banana 2) 및 그 계열은 동일한 응답에서 텍스트 파트와 이미지 파트를 교차하여 반환합니다. - 그 외는 모두 오케스트레이션입니다: 챗 모델과 독립형 이미지 엔드포인트가 함께 동작하거나,
gpt-5.5와 Responses 기본 내장image_generation도구를 함께 사용하여 모델이 언제 그릴지 결정하도록 합니다.
먼저 들어가는 이미지와 나오는 이미지를 구분하십시오
대부분의 혼란은 “multimodal”이라는 단어에서 비롯됩니다. API 맥락에서는 이것이 기본적으로 입력 측을 뜻하며, 즉 “모델에 이미지를 넣을 수 있다”는 의미이지, “모델이 이미지를 생성해 준다”는 의미가 아닙니다. 이 두 가지는 서로 다른 모델 풀, 서로 다른 엔드포인트, 그리고 서로 다른 과금 방식을 사용합니다.이미지를 얻는 네 가지 경로
A. 독립형 이미지 엔드포인트 — 거의 모든 경우에 이 항목을 선택하십시오
A. 독립형 이미지 엔드포인트 — 거의 모든 경우에 이 항목을 선택하십시오
data[0].url를 반환하며, GPT-Image 패밀리는 data[0].b64_json를 반환합니다.
이 경로는 대화 텍스트를 전혀 반환하지 않습니다 — chat endpoint가 아닙니다.전체 모델 표: 이미지 및 동영상 생성 모델.
모델별 엔드포인트, timeout 및 출력 형식 차이:
이미지 API 참고 사항 및 모범 사례.B. Gemini 이미지 패밀리 — 텍스트와 이미지를 네이티브로 함께 반환하는 유일한 항목
B. Gemini 이미지 패밀리 — 텍스트와 이미지를 네이티브로 함께 반환하는 유일한 항목
gemini-3-pro-image, gemini-3.1-flash-image 등)는 네이티브 Gemini 엔드포인트를 사용하며,
candidates[0].content.parts는 이질적 배열입니다. 이미지 부분만 포함할 수도 있고, 텍스트 부분과 이미지 부분이
번갈아 포함될 수도 있습니다. 이 패밀리만이 실제로 한 번의 호출에서 둘 다 제공합니다.미리 알아두어야 할 함정이 하나 있습니다: part의 개수도 순서도 보장되지 않습니다. 테스트에서
다음 세 가지 구성이 관찰되었습니다:parts[0]이나 parts[1]을 하드코딩하면 간헐적으로 실패합니다. 올바른 방법은 필드 존재 여부로 필터링한 뒤 마지막 inlineData을 취하는 것입니다(복잡한 prompt의 경우 모델이 여러 이미지를 반환하며, 마지막 것이 최종 버전입니다):C. Responses 네이티브 image_generation 도구 — 에이전트가 그릴지 여부를 스스로 결정하게 하십시오
C. Responses 네이티브 image_generation 도구 — 에이전트가 그릴지 여부를 스스로 결정하게 하십시오
POST /v1/responses을 gpt-5.5와 함께 호출하고 네이티브 image_generation 도구를 추가하십시오:output 배열의 image_generation_call 항목 안에 base64로 반환됩니다.
이것이 OpenAI 측에서 “그리는 chat model”에 가장 가까운 것입니다.네이티브 도구 이미지 생성을 참조하십시오.D. 이미지 모델의 Chat 엔드포인트 — 대화형처럼 보이지만 여전히 이미지 모델입니다
D. 이미지 모델의 Chat 엔드포인트 — 대화형처럼 보이지만 여전히 이미지 모델입니다
gpt-image-2-all와 gpt-image-2-vip는 /v1/chat/completions를 통해 호출할 수 있으며, 이미지는 choices[0].message.content 안에 Markdown 링크로 포함됩니다.“말도 하고 그림도 그리는 하나의 chat endpoint”처럼 보이지만, 그림을 그릴 수 있는 chat model은 아닙니다 —
내부적으로는 여전히 chat schema로 감싼 이미지 모델이며, 일반적인 대화 기능은 없습니다.
또한 기본 이미지로 마지막 user 메시지의 image_url만 읽습니다; assistant 기록의 이미지는 무시됩니다.이 경로는 더 이상 권장되지 않습니다 — 새로운 통합은 경로 A를 사용해야 합니다.“채팅과 그림 그리기” 제품 구축: 권장 구조
대부분의 에이전트와 제품이 실제로 필요한 것은 하나의 마법 같은 엔드포인트가 아니라 명확한 오케스트레이션 체인입니다:채팅 모델이 의도를 분류하게 하십시오
gpt-5.5, claude-opus-5, gemini-3-pro 등)을 사용해 사용자
입력을 처리하고 이번 턴이 대화인지 이미지 요청인지 판단하게 합니다. 도움이 된다면 구조화된 플래그를
반환하도록 하면 됩니다.채팅 모델이 이미지 prompt를 작성하게 하십시오
이미지 엔드포인트를 호출하십시오
/v1/images/generations를 사용합니다. 반환된 url 또는 b64_json를 가져와 자체
오브젝트 스토리지에 저장합니다.이미지를 대화에 다시 반영하십시오
모델이 이미지를 지원하는지 확인하는 방법
1. 모델 상세 페이지를 확인합니다
/models/<model-name>을 열고 상단의 사양 표에 있는 입력 방식 행을 확인합니다 — 여기에
“image”가 표시되면 해당 모델은 비전 입력을 지원합니다. 가장 빠른 확인 방법입니다.2. 확신이 없으면 직접 테스트합니다
3. 오류 문자열을 확인합니다
Model do not support image input
(문법은 그쪽의 것이며, 오타가 아닙니다). 이 줄이 보이면 해당 모델은 이미지를 지원하지 않으므로 다른 모델로 전환합니다.흔한 오해 다섯 가지
1. 멀티모달 모델은 이미지를 생성할 수 있습니다
1. 멀티모달 모델은 이미지를 생성할 수 있습니다
gpt-5.5은/는 설계
목업을 읽을 수는 있지만, 스스로 이미지를 출력할 수는 없습니다 — 이미지를 얻으려면 도구 호출(경로 C)이나
별도의 이미지 엔드포인트 호출(경로 A)이 필요합니다.2. 이미지 모델을 채팅 모델처럼 사용할 수 있습니다
2. 이미지 모델을 채팅 모델처럼 사용할 수 있습니다
gpt-image-2을/를 지원
챗봇 뒤에 두지 마십시오. chat 엔드포인트를 수락하는 -all / -vip 변형도
내부적으로는 여전히 이미지 모델입니다.3. responseModalities에 TEXT를 포함하면 텍스트 파트가 보장됩니다
3. responseModalities에 TEXT를 포함하면 텍스트 파트가 보장됩니다
responseModalities: ["TEXT", "IMAGE"]을/를 선언한다고 해서 응답에 텍스트
파트가 보장되는 것은 아닙니다; 모델이 이미지 하나만 반환할 수도 있습니다. 하지만 반대 방향은 유용합니다:
["IMAGE"]을/를 명시적으로 선언하면 불필요한 텍스트 파트가 줄어듭니다.4. parts[0]과 parts[1] 사이를 바꾸면 깨진 이미지 추출이 해결됩니다
4. parts[0]과 parts[1] 사이를 바꾸면 깨진 이미지 추출이 해결됩니다
[0]
또는 [1]에 들어가므로, 어느 쪽을 택하든 일부 요청에서는 놓치게 됩니다. 인덱스를 바꾸면 어떤 요청이
실패하는지만 바뀔 뿐입니다. 필드 존재 여부로만 필터링하는 방식만 안정적입니다.5. /v1/images/generations에 참조 이미지를 전달하면 편집이 수행됩니다
5. /v1/images/generations에 참조 이미지를 전달하면 편집이 수행됩니다
image / image_url /
images을/를 생성 엔드포인트에 보내면 정상 이미지와 함께 200이 반환되지만, 참조 이미지는 조용히
버려지고 평소처럼 과금됩니다 — 반환되는 것은 단순한 텍스트-투-이미지 결과입니다.이미지 편집은 반드시 /v1/images/edits을/를 거쳐야 하며(그리고 Grok Imagine은 거기에서 추가로 multipart/form-data이/가 필요합니다 — JSON을 보내면 즉시 400이 반환됩니다).