내 이미지 폴더에 이런 프롬프트가 하나 들어 있다:
cinematic portrait, 85mm, (rim light:1.3), deep shadows, masterpiece, best quality, 8k, ultra detailed, trending on ArtStation --ar 2:3 --stylize 400 --no watermark
그건 잘 작동했다. 너무나 안정적으로 작동해서 나는 그걸 더 이상 읽지도 않게 됐고, 급기야 복제하기 시작했다 — 야간 버전, 클로즈업 버전, 어두운 머리카락을 가진 피사체용 버전. 가중치가 빛과 다르게 상호작용했기 때문이다. 그러다 같은 문자열을 더 새로운 모델에 던졌더니, 광이 번지고 과하게 밝은, 어딘가 플라스틱 같은 결과가 돌아왔다. 내가 품었던 아이디어를 찍은 스톡 사진 같았다. 그 프롬프트는 오래전에 이미 그림을 묘사하는 걸 그만두고 있었다. 존재 기간의 대부분 동안, 그건 모델이 더 이상 갖지 않은 일련의 습관과 논쟁하고 있었던 것이다.
나는 지금까지 이걸 충분히 많이 목격했다 — 이미지, 영상, 텍스트에서. 그래서 불편한 쪽의 진실을 그대로 말하겠다. 인터넷이 프롬프트 엔지니어링이라고 부르는 것의 대부분은 방언이다. 방언은 당신 것이 아니다. 당신은 그 문법을 소유하지 않고, 그 환율을 정하지도 못한다. 그리고 벤더가 새 버전을 내놓는 순간, 당신의 라이브러리가 실제로 무엇으로 이루어져 있었는지 알게 된다.
당신이 가진 모든 프롬프트는 두 개의 프롬프트가 겹쳐진 것이다
라이브러리에서 아무 프롬프트나 하나 골라 쪼개 보라. 같은 줄 안에 설명과 방언이 뒤엉켜 있는 걸 발견하게 될 것이다.
| 문자열 | 그 아래의 의도 |
|---|---|
(rim light:1.3) |
피사체를 뒤에서 비추기 |
masterpiece, best quality, 8k, ultra detailed |
싸구려처럼 보이지 않게 하기 |
--stylize 400 --ar 2:3 |
어느 정도 자유를 주기; 인물 사진 크롭 |
You are a world-class line editor |
높은 기준 고수하기 |
Think step by step before answering |
풀이 과정 보여주기 |
오른쪽 열은 명세다. 이걸 사람 아트 디렉터나 카피 에디터, 촬영 감독에게 건네도 원하는 것에 가까운 결과를 얻을 수 있다. 왼쪽 열은 그걸 읽도록 만들어진 구현체에게만 의미가 있다 — 그리고 그 구현체를 대체하는 버전에게는 아무 의미도 없다.
문제의 전부가 한 줄에 담겨 있다: 설명은 자산이고, 방언은 남의 파서 안에 있는 포지션이다. 자산은 가치가 오른다. 포지션은 하룻밤 사이에 재평가된다.
방언은 그저 만료되는 게 아니다. 당신을 거스르기 시작한다.
편안한 가정은, 낡은 요령이 중립이 된다는 것이다 — 언젠가 정리할 때까지 들고 다녀도 되는 무용한 짐. 그러나 대개 그것들은 네 가지 뚜렷한 방식으로 적극적으로 해를 끼친다.
결함 보상. 유통되는 요령의 상당수는 모델이 특정한 것을 못하는 걸 싸우기 위해 발명됐다: 평평한 조명으로 쏠리는 디코더 편향, 서두를 끼워 넣는 경향, 브리프에서 벗어나는 습관 같은 것. 그 주문이 먹히는 건 결함이 거기 있기 때문이다. 결함을 고치면 그 보상은 왜곡으로 바뀐다 — 한때 풍부한 이미지를 만들어내던 태그 수프가 이제 플라스틱 같은 이미지를 만드는 이유가 여기 있고, 한때 어조를 벼려주던 역할극 의상이 이제는 문맥만 잡아먹는 이유도 여기 있다.
과잉 조향. 형용사 한 무더기는 약한 모델에게는 지시로 읽히고 강한 모델에게는 잡음으로 읽힌다. 흔들리는 생성기를 잡아두려고 추가한 제약은, 생성기가 스스로를 잡을 수 있게 되면 방 안에서 가장 시끄러운 존재가 된다. 당신은 개선한 게 아니다. 단어 목록으로 모델 자신의 취향을 다수결로 눌러버린 것이다.
중복된 발판. 이미 중간 작업을 수행하는 모델에 붙인 “Think step by step”, 혹은 애초에 다른 태도를 가진 적 없는 무언가에게 특정 인지 태도를 요구하는 시스템 서두. 치명적이진 않지만, 아무것도 아닌 데 쓴 토큰이고, 업그레이드마다 다시 검증해야 할 항목이 하나 늘어나는 셈이다.
파싱되지 않는 플래그. 같은 문자열을 다른 도구나 인터페이스로 옮기면 매개변수가 더 이상 매개변수로 취급되지 않는다. 소프트웨어에 따라 조용히 버려지거나 문자 그대로의 콘텐츠로 파싱되고, 오류 메시지 하나 없이 프롬프트의 의미가 달라진다. 네거티브 프롬프트 입력란을 더 이상 제공하지 않는 인터페이스는, 거기에 살던 프롬프트의 절반을 그냥 무시한다.
피해는 늘 그렇듯 보이지 않는 방식으로 나타난다: 결과물이 나빠지고, 당신은 모델을 탓하고, 더 똑똑한 모델이 어쩐지 당신의 일을 더 못한다는 결론에 이른다. 올바른 진단은 이렇다. 당신의 프롬프트는 이미 치료된 병에 대한 임시 치료제였던 것이다.
교체를 견디는 것은 명세 — 그리고 취향
프롬프트에서 모델 특정적인 요소를 전부 걷어내면 남는 것은 당신이 실제로 소유한 부분이다: 피사체, 조명, 구도, 매체, 분위기, 배제하는 것. 텍스트 작업이라면: 독자, 목적, 고수하는 기준, 산출물의 형태, 요청하는 수정, 하지 않았으면 하는 것.
그중 이국적인 건 하나도 없다. 그건 그 분야의 어휘다. 바로 그게 핵심이다 — 아트 디렉터가 빛을 두고 쓰는 말, 편집자가 컷을 두고 쓰는 말, 기획 편집자가 브리프를 두고 쓰는 말. 그 말들이 이식되는 이유는, 애초에 모델에게 건넨 말이 아니었기 때문이다. 결과물에게 건넨 말이었다.
두 번째로 이식 가능한 자산은 더 차갑고 덜 재미있다: 결과물이 좋은지 판단하는 능력. 돌아온 결과에 점수를 매길 수 없다면 프롬프트 라이브러리는 무가치하다. 신뢰하는 취향은 모든 업그레이드를 견디며, 새 모델을 위협이 아니라 기회로 만드는 것도 바로 그 취향이다.
이 둘을 합치면 관점의 전환이 된다. 당신은 모델을 배우고 있던 게 결코 아니었다. 자신이 뜻하는 바를 말하는 법, 그리고 돌아온 것을 판단하는 법을 배우고 있었던 것이다.
감사: 두 가지 색, 한 시간, 당신의 라이브러리 전체
모든 걸 다시 쓸 필요는 없다. 무엇이 무엇인지 알면 된다.
- 표본 추출. 카테고리 전반에서 프롬프트 스물다섯 개를 꺼낸다 — 이미지, 영상, 텍스트, 당신이 돌리는 무엇이든. 그보다 적다면 전부 꺼낸다.
- 두 색 표시. 각 프롬프트를 토큰 하나하나 훑으며 의도인지 방언인지 표시한다. 가중치, 플래그, 트리거 단어, 접미사 스택, 역할극 의상, 형식 발판: 방언이다. 유능한 사람이 실행에 옮길 수 있는 것: 의도다.
- 인간 테스트 적용. 재능 있는 프리랜서가 이 프롬프트만 받아서 당신이 원하는 것에 가까운 결과를 만들어낼 수 있겠는가? 그 사람이 주문을 알아야만 한다면, 그것은 방언이다.
- 취약성 점수 매기기. 각 프롬프트의 방언 비중을 어림한다. 5분의 1 미만이면 상당히 이식 가능하다. 3분의 1을 넘으면 모델에 종속된 자산이며 만료되는 것으로 취급해야 한다.
- 정본으로 벗겨내기. 의도만 담은 프롬프트를 마스터로 작성한다. 모델 특정적 조각은 도구별로 분리된 어댑터 파일에 날짜와 함께 보관해서, 방언이 저장하는 대상이 아니라 덧붙이는 대상이 되게 한다.
- 하나를 기억으로 재구성하기. 가장 많이 쓴 프롬프트를 골라 파일을 닫고, 같은 브리프를 처음부터 다시 쓴다. 가까이도 못 간다면, 그 프롬프트는 당신이 한 번도 가진 적 없는 지식을 나르고 있었던 것이다 — 감사가 낳을 수 있는 가장 값진 발견이다.
그런 다음 짧은 브리프 다섯에서 열 개를 폴더에 평가 세트로 보관하고, 마지막으로 실행했을 때 적어둔 판단을 함께 넣어둔다. 새 모델이 나오면 세트를 다시 돌리고, 자기 노트를 읽으면, 날려버린 주말 대신 20분 만에 무엇이 달라졌는지 알게 된다.
앞으로의 백 시간은 어디로 가는가
설명으로: 빛, 구도, 렌즈, 편집 문법, 산문의 리듬, 브리프 작성. 취향으로: 같은 브리프를 자주 돌리고, 왜 한 결과가 다른 것보다 나은지 적어두기. 지루한 인프라로: 의도 마스터, 날짜가 붙은 어댑터, 평가 세트, 변경 이력. 인간 협업자가 명확하다고 느낄 만큼 결과를 정밀하게 명시하는 법을 스스로 익히는 데로.
필요해지기도 전에 플래그 문법을 외우는 데도, 모델 특정적 프롬프트 팩을 자산인 양 수집하는 데도 아니다. 그것들은 자산이라기보다 원료에 가깝다. 그 아래에 깔린 의도를 읽으려고 그걸 읽고, 방언은 발견한 자리에 그대로 두라 — 같은 규율이 공개 컬렉션에도 적용된다. awesome-prompts.com에 있는 것들도 마찬가지인데, 그것들은 붙여넣을 레시피가 아니라 효과에 대한 설명으로 다룰 때 가장 유용하다.
프롬프트가 모델 특정적인지 어떻게 아나?
인간 테스트를 돌려보라. 숙련된 사람이 프롬프트만 읽고 당신이 무엇을 요청하는지 알아내지 못한다면, 그 프롬프트는 의미를 통해서가 아니라 모델의 기벽을 통해 일을 하고 있는 것이다. 두 번째 단서는, 정수와 괄호, 꼬리에 붙은 플래그를 지웠을 때 프롬프트가 여전히 작동하는지다. 무너진다면, 그것들은 하중을 지탱하고 있던 것이다.
오래된 프롬프트는 지워야 하나?
의도는 지우지 마라. 오래된 프롬프트마다 설명을 추출해 마스터로 보관하고, 순수한 방언은 지운다 — 인간에게 아무 의미가 없고 오직 특정 디코더 하나를 살짝 밀어주기 위해서만 존재하는 키워드 더미. “혹시 몰라서” 남겨두는 것이야말로, 믿지도 못하고 점수도 못 매기는 파일 삼백 개를 짊어지게 되는 지름길이다.
그래도 새 모델의 기벽을 익힐 가치는 있지 않나?
있다, 값싸게. 도구가 어떤 식으로 말 걸어주길 바라는지 아는 건 첫 몇 주 동안 실질적인 이점이다. 다만 그 지식은 날짜를 붙여 어댑터 파일에 넣고, 일회용일 거라고 예상하라. 실수는 방언을 배우는 게 아니다. 그것을 간직하려는 부분과 같은 곳에 저장하는 것이다.
얼마나 자주 다시 감사해야 하나?
당신이 의존하는 모델이 바뀔 때, 그리고 더 이상 이해하지 못하는 문자열을 자기가 복사하고 있음을 알아차릴 때. 분기마다면 충분하다. 매달은 근면으로 분장한 미루기다.
라이브러리를 열고, 가장 많이 쓰는 프롬프트 다섯 개를 골라 오늘 밤 두 색 표시를 해보라. 돌아오는 비율은, 지난 3년 중 얼마가 가치를 유지하는 통화에 들어갔고 얼마가 어차피 만료될 게 뻔했던 티켓에 들어갔는지에 대한 꽤 정직한 답이다.