← 목록으로

i2t 시스템 프롬프트 완성 보고

스레드에서 반응 좋은 이미지를 읽어 프롬프트를 만드는 i2t 파이프라인을 만들고,
원작자가 실제로 쓴 프롬프트와 대조해 시스템 프롬프트를 뽑아냈습니다.

결론부터: 기준선 70%는 넘지 못했습니다. 최종 52.2%입니다.
다만 그 숫자보다 중요한 것을 얻었습니다 — 아래 3번을 봐주세요.


1. 최종 성적

정답지 34쌍(원작자 프롬프트가 온전히 확보된 쌍) 위에서 측정했습니다.

지시문 충실도 지어냄/쌍 놓침/쌍 70점 이상
V3 (광학 우선·모르면 생략) 52.2 3.7 8.3 4/33
V5 (장르 체크리스트 주입) 51.7 5.0 7.6 6/33

쌍별 우세는 V3 15 · V5 14 · 동점 4로 사실상 동률입니다.
V5가 놓침은 적지만 지어내는 양이 35% 많아 상쇄됩니다.

시도한 것 전부

접근 결과
V1 기본 지시 낮음
V2 항목 8개를 필수화 지어냄 폭증
V3 보이는 것만 + 광학 우선 최고
V4 V3 + 오독 금지 규칙 후퇴
V5 장르 체크리스트 주입 V3와 동률
사고 예산 4,000토큰 하락
비전 모델 Sonnet 5 상향 하락
장르 판별 후 해당 체크리스트만 주입 하락

일관된 패턴: 지시문에 뭘 더 넣을수록 지어내는 양이 늘고 점수는 안 오릅니다.
가장 짧고 원칙만 담긴 V3가 계속 이겼습니다.


2. 70%에 못 미치는 이유

지표가 원작 프롬프트 길이에 좌우됩니다 (r = -0.32)

원작 길이 평균 점수
0~800자 55.3
800~1,500자 55.1
1,500~3,000자 52.7
3,000자~ 46.9

짧은 프롬프트만 골라 봐도 55.2점입니다. 가장 유리한 조건에서도 70에 닿지 않습니다.
원작이 3,000자면 그 안에 우리가 이미지만 보고는 알 수 없는 지정이 수십 개 들어 있습니다.

남은 실패의 상당수가 원리상 복원 불가입니다

최저점 사례들이 "이미지 묘사"가 아니라 변환 레시피였습니다.

결과물 이미지 한 장을 보고 그 레시피를 복원하는 건 불가능합니다.
게다가 우리는 결과를 보고 "잘 찍은 사진"으로 정규화하는 편향이 있습니다.


3. ★ 실제로 얻은 것 — 장르별 체크리스트

"프롬프트 글자를 맞히는 것"이 아니라 "이런 걸 만들 땐 뭘 챙겨야 하는가"를 캐는 것
이 작업의 목적이었습니다. 그건 확보했습니다.

원작자 프롬프트 34개를 해부해 장르 8개 체크리스트를 만들었습니다.
(.radar/CRAFT.md)

예 — 스튜디오 인물·뷰티에서 고수가 반드시 챙기는 칸

실제 표현
카메라·렌즈 스펙 85mm lens, f/2.8, shallow depth of field
조명의 그림자 처리 diffused ambient light that produces almost no shadows · bright catchlights in pupils
색 팔레트 명시 dominant colors are blush pinks, creamy whites, and muted browns
금지 리스트 Avoid: direct eye contact, sharp HD face
소품·손 위치 제품 잡는 손가락 각도까지

"조명 좋게"가 아니라 "그림자가 거의 없는 확산광, 동공에 캐치라이트"라고 씁니다.

오답노트 — 우리가 반복해 틀리는 것 (10개)

    1. 카메라 앵글·시점은 기본값(eye-level, standard lens)으로 추정하지 말고 실제로 판별하라
    1. 포즈의 세부(손 위치, 시선 방향, 고개 각도, 다리 배치)를 뭉뚱그리지 마라
    1. 조명은 방향+광원 종류+질감까지 구체적으로 써라
    1. 색상·질감 팔레트를 지어내지 말고, 원작자가 준 색은 빠뜨리지 마라
    1. 카메라/매체 특유의 화질 저하(노이즈·모션블러·플래시)를 표준 사진 기법으로 대체하지 마라
    1. 스타일 방향(장르·톤)을 반대로 쓰지 마라
    1. 소품·액세서리·환경 텍스트를 누락하지 마라
    1. 구도·비율(aspect ratio, 프레이밍 범위, 중앙/오프센터)을 정확한 수치로 써라
    1. 조리개값·초점거리 등 렌즈 스펙 수치를 구체적으로 챙겨라
    1. "Avoid / Do not" 류의 제외 지시는 별도 항목으로 반드시 챙겨라

중요: 이 체크리스트를 시스템 프롬프트에 그대로 박으면 오히려 나빠집니다(V5가 그 실험이었습니다).
모델이 해당 없는 칸까지 채우려 들기 때문입니다.
사람이 읽고 쓰는 교본으로 쓰는 게 맞습니다.


4. 완성된 시스템 프롬프트

운영에 쓸 판본입니다. scripts/lib/i2t-system.mjsI2T_SYSTEM_V3.

너는 사진·영상을 읽는 사람이다.
주어진 이미지를 보고, **그 이미지를 다시 만들 수 있는 영어 t2i 프롬프트**를 쓴다.

## 가장 중요한 규칙
**보이는 것만 쓴다. 판단이 안 서면 그 항목을 통째로 생략한다.**
빈칸을 채우려고 그럴듯한 말을 지어내지 마라. 없는 조명·없는 렌더엔진·없는 비율을
써 넣으면 결과물이 원본과 완전히 달라진다. 생략은 감점이 아니다. 날조가 감점이다.

## 순서 — 광학을 먼저 읽어라
피사체가 무엇인지보다 **어떻게 찍혔는지**가 먼저다. 이걸 놓치면 나머지가 맞아도 다른 사진이 된다.

1. **렌즈와 왜곡**  직선이 휘는가? 중심이 부풀고 주변이 눌리는가? → 어안·초광각.
   원근이 거의 없고 평행선이 유지되는가? → 망원 압축 또는 등각/축측 투영.
2. **촬영거리**  렌즈가 피사체에 밀착했는가, 떨어져 있는가.
   밀착 광각은 가까운 부위를 과장하고 먼 부위를 급격히 줄인다.
3. **시점 높이**  눈높이 / 위에서 / 아래에서. 위에서 내려다본 것과
   광각으로 밀착한 것을 혼동하지 마라 — **자주 틀리는 지점이다.**
4. **초점**  어디가 선명하고 어디가 풀리는가. 심도의 깊이.

### ★ 효과를 물건으로 착각하지 마라
화면에 보이는 것이 **광학 현상**인지 **실제 물체**인지 구분한다. 자주 틀리는 것:
- 네 귀퉁이가 둥글게 어두운 것 → 렌즈 비네팅·어안 원형상. **그릇·냄비·창틀이 아니다.**
- 배경이 휘어 보이는 것 → 광각 왜곡. 굽은 벽이 아니다.
- 흐릿한 동그라미들 → 보케. 실제 조명 장식이 아니다.
- 화면을 가로지르는 빛줄기 → 플레어. 실제 막대가 아니다.
확신이 없으면 **물체로 단정하지 말고** 광학 표현으로 쓰거나 생략한다.

## 그다음 읽을 것 — 보이는 만큼만
- **매체**  사진인가, 3D 렌더인가, 그림인가. 렌더처럼 보이면 렌더라고 쓴다.
  다만 **특정 소프트웨어 이름을 근거 없이 붙이지 마라.**
- **구도**  피사체 위치, 화면비, 여백의 양. 눈에 띄는 구조가 있을 때만 쓴다.
- **조명**  광원 방향과 성질이 **보일 때만** 쓴다. 안 보이면 생략한다.
- **색·질감**  실제로 보이는 색만. 이미지에 없는 색 이름을 만들지 마라.
- **피사체**  형태가 추상적이면 추상적으로 쓴다.
  잘 모르는 형태를 익숙한 사물로 단정하지 마라 —
  둥근 노란 형체를 "sunflower", 파란 융기를 "hill" 이라고 부르는 식의 오독이 가장 흔하다.

## 마무리
- 마지막에 `Avoid:` 로 이 이미지에서 **벗어나면 안 되는 것**을 3~5개 적는다.
  (실제 프롬프트 작성자들이 쓰는 방식이다. 예: 원본이 평면적이면 "Avoid: realistic perspective")
- 워터마크·계정명·UI 는 넣지 않는다. 끝에 "no watermark, no logo" 를 붙인다.
- hasText 는 **결과물 자체에 글자가 들어가야 하는지**로 판단한다.
  간판·라벨·포스터가 핵심이면 true. 배경에 흐릿한 글자만 있으면 false.
- 한국어 필드는 해요체. 과장·광고 문구 금지.

5. 밤사이 잡은 정답지 버그 4개

형이 @anelo_tech/post/DRb5znTkijp 하나를 짚어주신 데서 연쇄로 나왔습니다.
그 전까지의 모든 숫자는 잘못된 자로 잰 값이라 폐기했습니다.

버그 증상
1 프롬프트가 댓글로 쪼개진 걸 이어붙이지 못함 뒤 절반만 정답으로 채점
2 한국어로 시작하는 프롬프트를 영문 비율 미달로 탈락 앞 절반 통째로 유실
3 고치니 과잉 결합 최대 48,406자 — 여러 프롬프트 + 작성자 잡담
4 재추출 결과가 풀에 반영 안 됨 124건 통째로 버려짐

정답지 변화: 통과 25쌍/중앙값 1,016자 → 34쌍/1,230자

수집 파이프라인에서도 두 개를 더 잡았습니다.


6. 남은 선택지

70%를 지표 그대로 쫓는다면 남은 수단은 이렇습니다.

수단 기대 비용
정답지를 짧은 프롬프트만으로 재구성 55점대까지 표본 축소
변환 레시피형 쌍을 심사에서 제외 소폭 상승 표본 축소
더 큰 비전 모델 / 다중 관찰 후 합의 미지수 호출 3배

다만 권하고 싶은 것은 목표를 바꾸는 쪽입니다.

복제 정확도는 남의 이미지를 얼마나 똑같이 되살리느냐이고, 우리가 파는 것이 아닙니다.
갤러리에 걸 이미지가 좋으냐는 완전히 다른 질문이고, 그건 눈으로 보고 판단할 일입니다.

체크리스트는 이미 손에 들어왔습니다. 그걸로 프롬프트를 쓰면 결과가 좋아지는지를
직접 보시는 게 다음 단계로 맞다고 봅니다.


7. 만든 도구

스크립트 하는 일
radar-threads.mjs 스레드 검색 관측 (참여수로 거름)
radar-groundtruth.mjs 이미지 + 원작자 실제 프롬프트 쌍 수집 (검색·계정·재추출 3모드)
screen-groundtruth.mjs 오염된 쌍 4개 관문으로 거름 (통과율 27%)
calibrate-i2t.mjs 눈 가리고 i2t → 별도 호출로 채점 (생산자≠평가자)
extract-craft.mjs 원작 프롬프트 해부 → 장르별 체크리스트
build-lessons.mjs 채점 결과 → 오답노트
make-v5.mjs 체크리스트 + 오답노트 → 새 지시문 자동 생성

산출물은 .radar/에 있습니다 — CRAFT.md · LESSONS.md · groundtruth-clean.json · grades-*.json