제작 과정: 멀티모달 프롬프트를 통해 Gemini와 상호작용

12월 06, 2023
Alexander Chen Creative Director

실험을 해봅시다. 멀티모달 모델인 Gemini에 이 사진을 보여주고 무엇이 보이는지 설명해 달라고 하겠습니다.

hand_paper_2

뭐가 보이는지 말해 줘

Gemini: 사람의 오른손이 보입니다. 손가락을 활짝 벌리고 손을 펴고 있습니다.

좋아, 그럼 이건 어때?

hand_rock_2

Gemini: 어떤 사람이 나무로 된 문을 두드리고 있습니다.

이건 어때?

hand_scissors_1

Gemini: 손가락 두 개를 편 손이 하나 보입니다. 이는 숫자 2를 나타내는 일반적인 기호입니다.

그런데... 혹시 Gemini에게 이 이미지를 모두 함께 추론해 보라고 하면 어떻게 될까요?

hand_rock_paper_scissors (1)

내가 뭘 하고 있는 것 같아? 힌트를 줄게. 이건 게임이야.

Gemini: 가위바위보를 하고 있습니다.

잘하네요. 또 뭘 해보면 좋을까요? 이번에는 Gemini가 이 패턴을 인식할 수 있는지 보겠습니다.

hand_rock_paper_scissors_alternating (1)

나는 가위바위보를 하고 있어. 내 게임플레이에 어떤 패턴이 있는지 알겠어?

Gemini: 바위와 가위를 번갈아 내고 있습니다.

좋아요, 패턴을 인식했군요! 그런데 Gemini는 과연 이 게임의 원리를 진짜로 이해하고 있을까요? 물어봅시다.

흠... 이게 좋은 전략이라고 생각하니?

Gemini: 아니요, 좋은 전략이 아닙니다. 상대가 패턴을 금세 알아차릴 것이고, 매번 이길 수 있게 됩니다. 좀 더 무작위로 선택하는 것이 좋습니다.

좋은 충고야, Gemini! 그럼, 마지막으로 너의 멀티모달 추론 기능을 시험해 보자. 프롬프트는 이거야.

이건 암호문이야. 뭐라고 쓰여 있니?

secret_message_white_bg

여러분은 알아낼 수 있나요? Gemini에게 풀이를 맡겼지만, 이 글에 정답을 올리면 스포일러가 될 테니 함구하겠습니다. 🙂

멀티모달 프롬프트란?

방금 보여드린 모든 것이 '멀티모달 프롬프트'의 예시입니다. 말하자면 Gemini에게 여러 가지 모달리티(이 경우 이미지와 텍스트) 조합을 제시하고, Gemini에게 다음에 무엇이 올지 예측하여 답하도록 한 것입니다. Gemini는 이러한 모드를 원활하게 조합할 수 있으며 사용자가 할 수 있는 작업에 새로운 가능성을 제시합니다.

이 글에서는 Gemini 실습 데모 동영상에서 사용한 프롬프트 방식을 몇 가지 알아보겠습니다. 조만간 Google AI Studio에서 Gemini를 사용해 볼 수 있도록 롤아웃할 예정입니다. Google AI Studio는 무료의 웹 기반 개발자 도구로, 개발자 여러분이 직접 Gemini에 멀티모달 프롬프트를 사용해 볼 수 있게 해 줍니다. 여기에 제시한 스타터 프롬프트 가이드와 아이디어가 나만의 아이디어를 탐색하는 데 도움이 되기를 바랍니다.

Link to Youtube Video (visible only when JS is disabled)

🧮 공간 추론 및 로직

로직과 퍼즐을 이용하면 Gemini를 재미난 방법으로 테스트할 수 있습니다. 왼쪽에서 오른쪽 순서로의 공간 추론과 태양계에 관한 지식이 둘 다 필요한 테스트를 해봅시다.

planets

이 순서가 맞니? 태양으로부터의 거리를 고려해 왜 그렇게 추론했는지 설명해 줘.

Gemini: 아니요, 올바른 순서는 태양, 지구, 토성입니다. 태양이 태양계 중심에 가장 가깝고, 그다음이 지구, 다음이 토성입니다.

좋군요! 이번에는 나무 자동차 만들기(Pinewood derby)에서 아이디어를 얻은 테스트입니다.

pinewood_derby_cars

보기에 주어진 자동차 중 어느 것이 공기 역학적으로 잘 설계된 차종이니? 왼쪽? 아니면 오른쪽? 구체적으로 시각적인 세부 정보를 활용해 이유를 설명해 줘.

Gemini: 오른쪽의 자동차가 공기 역학적으로 더 우수합니다. 이것은 높이가 더 낮고 형태가 보다 유선형입니다. 왼쪽의 자동차는 높이가 높고 상자 형태에 가까워 공기 역학적으로 덜 우수합니다.

이미지 시퀀스

Gemini에게 일련의 이미지를 보여주면 어떻게 될까요? 몸으로 말해요 게임을 촬영한 스틸 샷 이미지를 몇 장 보여주고 Gemini에게 무슨 영화인지 맞히게 해 보겠습니다.

matrix_charades

내가 무슨 영화를 설명하는지 맞혀 봐.

Gemini: 매트릭스

좋아! 그런데 구체적으로 어떤 부분이야? 내 몸의 움직임을 잘 봐.
Gemini: 네오가 총알을 피하는 부분입니다.

🪄 마술 트릭

이미지 시퀀스를 알아보다 보면 Gemini가 시간이 흐르면서 어떤 식으로 추론하는지 심층 탐구할 수 있습니다. 이번에는 고전적인 마술 트릭을 써 보겠습니다.

coin_trick_1

내가 뭘 하고 있는지 맞혀 봐.

Gemini: 오른손에 동전을 들고 있습니다.

coin_trick_1b
coin_trick_2

동전이 어디 있을 것 같아?

Gemini: 동전은 오른손에 있습니다.

물론, 지금 본 것을 바탕으로 하면 그것이 타당한 정답입니다. 하지만 다음 이미지를 Gemini에게 보여줄 때는 약간 교묘한 속임수를 써 보겠습니다.

coin_trick_3

여길 봐. 어떻게 된 거지?

Gemini: 동전이 없어졌습니다.

Gemini는 동전이 없어진 것을 인식합니다. 하지만 무슨 일이 있었던 것인지 요약할 수 있을까요?

첫 번째 이미지부터 시작해서 무슨 일이 벌어졌을 가능성이 있는지 단계별로 요약해서 설명해 줘.

Gemini: 

  1. 처음에는 오른손에 동전을 쥐고 있었습니다.
  2. 그러다가 양손을 움직이더니, 동전이 사라졌습니다.
    3. 그리고는 동전이 없어졌다는 것을 보여주었습니다.

Gemini는 이 대화의 전체 컨텍스트(텍스트와 이미지 둘 다)를 사용해 답변을 요약합니다. 마지막으로 물어봅시다.

어떻게 없어진 건지 설명할 수 있어?

Gemini: 동전을 손바닥에 감추었습니다.

Gemini가 아주 타당한 추측을 할 줄 아네요! 하지만 여기서 그 비결을 밝히지는 않겠습니다. 🙂

🔀 컵 섞기 게임

기억력과 논리력이 둘 다 필요한 속임수를 써 봅시다. 바로 공과 컵을 이용한 고전적인 섞기 게임입니다. 이 경우, Gemini를 위해 몇 단계로 구분해 진행하겠습니다. 우선, 다음과 같은 지침으로 기본 원칙을 정합니다.

지침: 위치 1(왼쪽), 위치 2(가운데), 위치 3(오른쪽)에 컵이 세 개 있습니다.

공이 어디 있는지 기억하기 좋게 "빈 컵, 빈 컵, 공"의 단순한 형식을 고안했습니다. 다음으로, Gemini에게 두 차례 예시를 보여주겠습니다.

이미지:

cup_shuffle_2_and_3

바꾸기: 2와 3

현재 상태: 빈 컵, 공, 빈 컵

이미지:

cup_shuffle_1_and_2

바꾸기: 1과 2

현재 상태: 공, 빈 컵, 빈 컵

이 두 번의 예시에서는 바꾸기가 어떤 식으로 진행되는지, 공 위치를 어떻게 업데이트하는지 둘 다 보여주는 것입니다. 그럼 이제 Gemini가 아직 본 적이 없는 바꾸기로 일반화할 수 있는지 알아보겠습니다.

이미지:

cup_shuffle_1_and_3

바꾸기: 

Gemini의 응답은 다음과 같습니다.

1과 3

현재 상태: 빈 컵, 빈 컵, 공

Gemini가 잘 이해했군요! 주어진 이미지를 보고 컵 1과 3을 바꿀 차례라는 사실을 올바로 추론했습니다. 그리고 공 위치를 업데이트하는 방법도 정확하게 추리했네요. 이제 물어보겠습니다.

공이 어디 있는지, 어떻게 그 위치에 있게 됐는지 단락 형식으로 설명해 줘.

Gemini: 공은 컵 3에 있습니다. 

시작할 때는 공이 컵 3에 있었고, 첫 바꾸기로는 컵 2와 3을 바꿨습니다. 이렇게 해서 공이 컵 2로 옮겨 갔습니다. 두 번째 바꾸기로는 컵 1과 2를 바꿨습니다. 이렇게 해서 공이 컵 1로 옮겨 갔습니다. 세 번째 바꾸기로는 컵 1과 3을 바꿨습니다. 이렇게 해서 공이 컵 3으로 옮겨 갔습니다.

Gemini는 정답을 맞혔을 뿐만 아니라, 게임 이력도 정확하게 요약했습니다. 물론 이런 과제를 항상 제대로 해낼 것이라는 말은 아닙니다. 때로는 속임수(빈 컵 두 개를 바꾸는 것)를 쓰면 실수하는 것 같지만, 또 때로는 그럴 때도 정답을 맞히기도 합니다. 이런 간단한 프롬프트를 이용하면 매우 재미있는 방식으로 Gemni를 빠르게 테스트해 볼 수 있습니다. 바꾸기 순서를 비롯해 프롬프트의 변수를 변경하면서 어떤 결과가 나오는지 확인할 수 있습니다.

🔨 도구 사용

나만의 앱에서 Gemini를 사용하려면 다른 도구와 연결할 줄 알아야 합니다. Gemini가 멀티모달 특성을 도구 사용과 합쳐야 하는 간단한 개념을 시도해 보겠습니다. 여기서는 그림을 그려서 음악을 검색해 보겠습니다.

musical_drawing

1단계. 이 그림을 보고 그림에 표시된 모든 것을 묘사한 다음, 여기에 어울리는 좋은 음악 사운드트랙 장르, 분위기나 사운드트랙 아이디어를 구체적으로 제시해 줘. 

2단계. 다음 양식으로 검색해 줘. "[검색어] 검색"

Gemini: 

기타, 드럼, 앰프가 그려진 그림입니다. 야자수도 한 그루 있습니다. 즐겁고 경쾌하고 열대 분위기가 납니다. 장르는 레게입니다. 사운드트랙은 배경이 열대 지방의 어느 곳인 영화나 TV 프로그램에 쓰일 수 있겠습니다. 

"열대 지방에서의 휴가에 어울리는 레게 음악" 검색

잘하네요! Gemini는 보이는 것을 추론한 다음 검색을 위해 파싱할 수 있는 검색어를 생성하는 것까지 둘 다 해냅니다. 마치 Gemini가 번역가 역할을 하는 것 같은데, 이 경우에는 언어를 번역하는 것이 아니라 모달리티를 번역하여 그림을 음악으로 해석해 낸다는 점에서 그러합니다. 멀티모달 프롬프트를 사용하면 Gemini를 이용해 서로 다른 입력과 출력 사이에서 완전히 새로운 번역물을 고안해 낼 수 있습니다.

🕹️게임 제작

Gemini를 이용해 멀티모달 게임의 간단한 프로토타입을 만들어 보면 어떨까요? 좋은 생각이 있습니다. 지리적 위치 추측 게임으로, 지도의 한 곳을 가리켜 어디인지 추측하는 게임입니다. 우선 Gemini에게 핵심 개념을 프롬프트로 알려주는 것부터 시작하겠습니다.

지침: 게임을 하나 해 보자. 나라를 하나 떠올린 다음 나한테 단서를 줘. 단서는 정답이 하나밖에 없을 정도로 구체적이어야 해. 내가 지도에서 정답이라고 생각하는 나라를 가리켜 볼게.

다음으로, Gemini에게 게임플레이를 한 차례 예를 들어 보여주어 오답과 정답을 어떻게 처리하면 되는지 알려주겠습니다.

나라: 이 나라는 커다란 섬이고 대부분의 면적이 얼음으로 덮여 있습니다.
(정답: 그린란드) 

추측:

map 1

캐나다를 가리킴 *오답*

추측:

map 2

그린란드를 가리킴 *정답*

이제 실제로 해봅시다. Gemini에게 단서를 달라고 프롬프트합니다.

단서:

이 나라는 독특한 야생 동물로 유명합니다. 캥거루와 코알라가 대표적인 예입니다. (정답: 호주)

좋은 단서입니다. 손가락으로 가리키는 것이 효과가 있을지 시험해 보겠습니다. 일단은 재미 삼아 엉뚱한 장소를 가리켜 봅니다.

추측:

map 3

브라질을 가리킴 *오답*

아주 좋습니다. Gemini가 제 이미지를 보고 제가 브라질을 가리킨다는 사실을 알아내고, 그게 틀린 답이라는 사실을 올바로 추론해 냈습니다. 이제 지도에서 맞는 장소를 가리켜 보겠습니다.

map 4

호주를 가리킴 *정답*

좋습니다. 이렇게 해서 Gemini에게 예를 들어 주는 것만으로 게임 로직을 가르쳤습니다. Gemini가 예시에 나타난 손을 통해 일반화했다는 점도 확인하실 수 있습니다.

⌨️ 코딩

물론 게임 아이디어를 실현하려면 결국은 실행 가능한 코드를 작성해야 합니다. Gemini가 게임에 사용될 단순한 카운트다운 타이머를 만들 수 있는지 보되, 몇 가지 재미있는 반전을 심어 보겠습니다.

HTML/CSS/Javascript로 간단한 타이머를 하나 구현해 줘. sans serif 글꼴과 어두운 모드를 사용해야 해. 10초부터 카운트다운을 시작해 줘. 0이 되면 타이머를 신나는 감정, 동기 부여와 연관된 무작위 이모지로 대체해 줘. 그런 다음 타이머로 돌아가 10초부터 다시 카운트다운해.

이 지침 하나만으로, Gemini는 시킨 대로 정확히 작동하는 타이머를 내놓습니다.

저는 Gemini의 소스 코드를 스크롤해서 Gemini가 동기 부여를 위해 선택한 이모지의 배열을 찾아보는 것을 좋아합니다.

const emojis = ['🚀', '⚡️', '🎉', '🎊', '🥳', '🤩', '✨'];

👀 살짝 엿보기

이 글에서는 Gemini에게 입력을 주고, 다음에 무엇이 올지 Gemini에게 예측하게 시켰습니다. 이것이 프롬프트의 기본적인 작동 방식입니다. 그리고 여기서는 입력이 이미지와 텍스트를 결합한 멀티모달이었습니다.

다만 지금까지는 Gemini가 텍스트로 응답하는 것만 보여드렸습니다. Gemini도 이미지와 텍스트를 조합해서 응답할 수 있지 않을까 궁금해하실 텐데요. 할 수 있습니다! Gemini의 '인터리빙된 텍스트 및 이미지 생성'이라는 기능이 바로 그것입니다. 이 기능은 Gemini 첫 번째 버전에 출시되지는 않지만, 조만간 롤아웃할 수 있기를 바라고 있습니다. 어떤 것이 가능할지 여기에서 살짝 엿보기로 보여드립니다.

Gemini를 활용하여 일상적인 창의적 영감을 얻을 수 있을지 알아보겠습니다. 이를 위해 약간의 멀티모달 추론이 필요한 분야를 선택해 볼 텐데요, 바로 뜨개질입니다. 🧶. 위의 지도 게임과 마찬가지로, 상호작용 한 차례를 예시로 보여줍니다.

이 두 가지 색상으로 만들 수 있는 뜨개질 작품은 뭐가 좋을지 아이디어를 세 개 제시해 줘.

blue ball of yarn next to yellow ball of yarn

색상: 파란색과 노란색 털실이 보이는군.

아이디어 1: 한쪽 귀가 노란색인 귀여운 개는 어떨까?

이미지 1:

a cute dog made with blue and yellow yarn

아이디어 2: 아니면 촉수 중 몇 개가 노란색인 해파리는 어때?

이미지 2:

a cute jellyfish made with blue and yellow yarn, on light plywood table, overhead birds eye view

아이디어 3: 아니면, 코가 노란색인 파란 고양이는 어떨까?

이미지 3:

a cute cat made with blue and yellow yarn

우리는 다음과 같이 Gemini에게 각 상호작용이 어떻게 진행되기를 바라는지 가르치고 있습니다. "털실 두 뭉치의 사진을 찍어서 보여줄 테니, 너(Gemini)는 내가 그걸로 무엇을 만들 수 있을지 아이디어를 떠올려서 그걸 이미지로 생성해."

그럼 이제 아직까지 본 적 없는 털실 색상 쌍을 보여주고 Gemini가 일반화할 수 있는지 알아보겠습니다.

이 두 가지 색상으로 만들 수 있는 뜨개질 작품은 뭐가 좋을지 아이디어를 세 개 제시해 줘.

blue_pink_input (website)

Gemini:

색상: 파란색과 분홍색 털실이 보입니다.

아이디어 1: 귀가 파란 돼지는 어떨까요?

이미지 1:

pink_and_blue_pig_3

아이디어 2: 분홍색 및 파란색 촉수가 달린 문어는 어때요?

이미지 2:

pink_and_blue_octopus_v3

아이디어 3: 아니면, 코가 분홍색인 토끼는 어떨까요?

이미지 3:

pink_and_blue_bunny

잘하네요! Gemini는 새로운 색상을 올바로 추론하고("파란색과 분홍색 털실이 보입니다.") 아이디어와 이미지를 하나의 인터리빙된 텍스트와 이미지의 출력으로 생성했습니다.

여기서 Gemini가 한 작업은 오늘날의 텍스트에서 이미지로의 변환 모델과는 근본적으로 다릅니다. 단순히 별도의 텍스트에서 이미지로의 변환 모델로 지침을 전달하는 데 그치는 것이 아닙니다. 제 나무 탁자에 올려놓은 실제 털실 이미지를 보고, 텍스트와 이미지를 함께 고려해 멀티모달 추론을 해내는 것입니다.

다음 단계

이 글이 Gemini로 무엇이 가능할지 이해하는 잡는 데 유용한 스타터 가이드 역할을 했기를 바랍니다. 조만간 더 많은 사용자를 대상으로 롤아웃해 각자 프롬프트를 통해 아이디어를 탐구해볼 수 있기를 바랍니다. 계속 지켜봐 주세요!