C.W.K.
Stream
Lesson 01 of 04 · published

파일 이름은 증거가 아냐

~12 min · multimodal, vision, bytes, anti-pattern

Level 0신호 없음
0 XP0/32 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"모델한테 'lens.jpg 라는 사진이 있어'라고 말할 순 있어. 그 문장은 사진이 아냐. 모델은 파일 이름을 못 봐."

되는 것처럼 보이는 버그

제일 유혹적인 멀티모달 실패가 이거야. 이미지를 붙이는데, 파이프라인 어딘가에서 코드가 실제 이미지 데이터 대신 User attached: lens.jpg 같은 메시지 — 파일 이름, 어쩌면 크기, 어쩌면 캡션 — 를 모델한테 보내. 모델은 좋은 대화 상대라, 이해한 것처럼 답해: '그 렌즈는 35mm 단렌즈 같네.' 비전이 된 것처럼 보여. 안 됐어. 모델은 lens.jpg 라는 단어를 보고, 실제로 본 적 없는 렌즈에 대해 그럴듯한 답을 즉흥으로 지은 거야. 버그가 안 보이는 건 정확히, 모델이 유능한 척할 만큼 예의 바르기 때문이야.

비전이 실제로 요구하는 것

모델이 이미지를 진짜로 보려면, 세 가지가 adapter 에 함께 닿아야 해:

  • 바이트. 진짜, 디코딩된 이미지 데이터 — 경로도, 모델이 못 가져오는 URL 도, 묘사도 아니라.
  • media type. image/jpeg, image/png 등, 바이트가 올바로 해석되게(다음 레슨들이 이걸 파).
  • 올바른 배치. 이미지가 adapter 가 기대하는 모양으로, 요청의 이미지 파트로 배달돼 — 텍스트에 mention 으로 밀수되는 게 아니라.

그보다 덜하면 비전이 아냐. 파일 이름, 캡션, alt-text, '[여기 이미지]' 토큰 — 이건 이미지에 대한 텍스트고, 이미지에 대한 텍스트는 비전 모델한테 딱 전화로 읽어준 묘사만큼 유용해: 없는 것보단 낫고, 보는 거랑은 범주적으로 달라.

보조 vs 대체

해법은 파일 이름이랑 캡션을 금지하는 게 아냐 — 진짜 바이트랑 나란히 진짜로 유용한 보조 컨텍스트일 수 있어. 규칙은 그것들이 절대 바이트의 대체가 되면 안 된다는 거야. 실제 이미지 데이터를 이미지로 보내고, 파일 이름도 힌트로 넣고 싶으면, 괜찮아. 실패는 힌트가 데이터 대신 다닐 때, 그리고 예의 바른 모델이 그 틈을 너무 잘 덮어서 아무도 눈이 안 떠졌던 걸 눈치 못 챌 때야. '모델이 이미지에 대해 답했다'를 이미지를 봤다는 증거로 0 으로 다뤄; 유일한 증거는 진짜 바이트가 adapter 에 닿은 거야.

Code

이미지에 대한 텍스트는 이미지가 아니다·typescript
// 틀림: 모델이 그림이 아니라 문장을 받음.
const message = {
  role: "user",
  content: `질문: ${q}\n첨부: ${file.name}`, // 그냥 파일 이름 문자열
};
// 모델은 받은 적 없는 이미지에 대해 기꺼이 '답'할 거야.

// 맞음: 진짜 바이트랑 media type 이 이미지 파트로 다님.
const message = {
  role: "user",
  content: [
    { type: "text", text: q },
    { type: "image", mediaType: file.type, data: await file.bytes() },
  ],
};
// 이제 '35mm 렌즈가 보여'가 파일 이름에서 즉흥된 게 아니라 픽셀에 근거해.

External links

Exercise

'모델이 이미지를 봤다'를 '모델이 파일 이름에서 즉흥했다'와 구분하는 테스트를 설계해. 힌트: 파일 이름이 오해를 부르는 이미지를 붙여(sunset.jpg 로 이름 짓되 실은 키보드 사진) 뭐가 있는지 물어. 각 답이 뭘 증명하는지 설명해. 그다음 파이프라인 어디서 이름만이 아니라 진짜 바이트가 adapter 에 닿았다고 단언할지 묘사해.
Hint
모델이 '일몰'이라 하면 파일 이름을 읽은 거; '키보드'라 하면 픽셀을 읽은 거야. 오해 부르는 파일 이름 트릭이 안 보이는 버그를 보이게 만들어. 파이프라인에선 응답이 아니라 adapter 경계에서 이미지 바이트의 존재랑 크기를 단언해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.