멀티모달 프롬프트 설계

Vertex AI의 Gemini API를 사용하면 텍스트, 이미지, 동영상 등 멀티모달 입력을 프롬프트의 일부로 Gemini 모델에 전달할 수 있습니다. 이 페이지에서는 멀티모달 프롬프트 설계에 대한 권장사항과 프롬프트가 예상대로 작동하지 않을 때 문제를 해결하는 방법을 설명합니다. 프롬프트 설계에 대한 일반적인 안내는 권장 프롬프트 설계 전략을 참조하거나 다음 멀티모달 관련 권장사항 목록을 참조하세요.

프롬프트 설계 기초

구체적인 지시 사용

명확하고 구체적인 프롬프트를 사용하면 최상의 결과를 얻을 수 있습니다. 특정 출력이 필요하다면 해당 요구사항을 프롬프트에 직접 포함하여 원하는 출력을 얻을 가능성을 높이세요.

프롬프트가 작성자에게는 명확해 보일 수 있지만, 모델 입장에서는 충분히 정의되지 않았을 수 있습니다. 모델 동작을 맞춤설정하려면 프롬프트가 어떻게 해석될 수 있는지 고려하고 지시사항이 구체적이고 명확하도록 작성해야 합니다.

예를 들어, 프롬프트에 공항 안내판 이미지를 포함하고 모델에게 단순히 '이 이미지를 설명해 주세요'라고 요청하면 일반적인 설명만 생성될 수 있습니다. 그러나 모델이 이미지에서 시간과 도시를 파싱하도록 하려면 프롬프트에 해당 요청을 직접 명시해야 합니다.

프롬프트 모델 응답
시간과 도시가 표시된 공항 일정 안내판

이 이미지를 설명해 주세요.

이 이미지는 공항 도착 및 출발 보드를 보여줍니다.

업데이트된 프롬프트 개선된 응답
시간과 도시가 표시된 공항 일정 안내판

이 이미지에 표시된 공항 보드에서 시간과 도시를 분석해서 목록으로 표시해 주세요.

  • 10:50 모스크바
  • 11:05 에든버러
  • 11:05 런던
  • 11:10 부카레스트
  • 11:30 키예프
  • 11:35 더블린
  • 11:45 이스트 미들랜즈
  • 12:15 소피아
  • 12:30 런던
  • 12:30 뉴캐슬
  • 12:40 상트페테르부르크
  • 12:40 런던
  • 12:45 맨체스터

예시 추가

모델은 원하는 출력 방식을 이해할 수 있도록 여러 입력을 예시로 받을 수 있습니다. 이러한 예시를 추가하면 모델이 패턴을 식별하고 제공된 이미지와 응답 사이의 관계를 새로운 예시에 적용할 수 있습니다. 이를 '퓨샷' 학습이라고 합니다.

다음 예시에서 초기 출력은 전체 문장으로, 국가(브라질)까지 포함되어 있습니다. 만약 원하는 출력이 도시만 포함하고 국가를 제외하는 것이라면, 프롬프트에 퓨샷 예시를 추가하여 모델이 해당 형식으로 응답하도록 유도할 수 있습니다.

프롬프트 모델 응답
브라질 리우데자네이루에 있는 구세주 예수상

랜드마크와 함께 도시를 설명해 주세요.

이 랜드마크는 브라질 리우데자네이루에 있는 구세주 예수상입니다.

업데이트된 프롬프트 개선된 응답

랜드마크와 함께 도시를 설명해 주세요.

이탈리아 로마의 콜로세움

도시: 로마, 랜드마크: 콜로세움

중국 베이징의 자금성

도시: 베이징, 랜드마크: 자금성

브라질 리우데자네이루에 있는 구세주 예수상

도시: 리우데자네이루, 랜드마크: 구세주 예수상

복잡한 작업을 더 작은 작업으로 분할

시각적 이해와 추론이 모두 필요한 복잡한 태스크는, 태스크를 더 작고 직관적인 단계로 나누거나 프롬프트에서 모델에게 직접 단계별로 생각하라고 요청하는 것이 좋습니다.

프롬프트 모델 응답
화장실 휴지 3개 사진

화장지가 언제 다 떨어질까요?

이제 3개 밖에 없으니 곧 떨어집니다.

업데이트된 프롬프트 개선된 응답
화장실 휴지 3개 사진
  1. 먼저 이 사진에서 화장실 휴지 개수를 세어 보세요.
  2. 그런 다음 일반적인 사람이 하루에 화장실 휴지를 얼마나 사용하는지 확인해 주세요.
  3. 여기 있는 화장실 휴지가 얼마나 오래갈지 계산해 주세요.
  1. 이 사진에는 화장실 휴지가 3개 있습니다.
  2. 사람은 일반적으로 화장실 휴지를 하루에 20칸 정도 사용합니다.
  3. 한 롤에 휴지가 200칸 있으면 각 롤이 약 10일 정도 지속됩니다. 따라서 3개 롤은 한 달 정도 지속됩니다.

수학 문제나 다른 유형의 서술형 문제도 마찬가지로 더 작은 작업 단위로 나눌 수 있습니다.

프롬프트 응답
수열 b의 그림입니다. b(1) = 15이고, b(n) = b(n-1) * (-3)입니다.

이 시퀀스에서 네 번째 항은 무엇인가요?

-135

모델의 응답은 잘못되었습니다. 모델이 프롬프트에 답변하기 전에 문제를 먼저 분석하도록 요청해 보세요.

프롬프트 응답
수열 b의 그림입니다. b(1) = 15이고, b(n) = b(n-1) * (-3)입니다.

먼저 이미지에서 수식을 분석해 주세요.

그런 후 수식을 기준으로 "시퀀스에서 네 번째 항은 무엇"인지 대답해 주세요.

클릭하여 결과 확장 $$b(n) = b(n-1) * (-3)$$ $$b(1) = 15$$
  1. n = 4를 수식에 대체합니다.

    $$b(4) = b(4-1) * (-3)$$

    $$b(4) = b(3) * (-3)$$

  2. b(3)의 값을 알지 못하므로 n = 3을 수식에 대체합니다.

    $$b(3) = b(3-1) * (-3)$$

    $$b(3) = b(2) * (-3)$$

  3. b(2)의 값을 알지 못하므로 n = 2를 수식에 대체합니다.

    $$b(2) = b(2-1) * (-3)$$

    $$b(2) = b(1) * (-3)$$

  4. b(1)의 값이 15인 것을 알고 있으므로 이를 수식에 대체합니다.

    $$b(2) = 15 * (-3)$$

    $$b(2) = -45$$

  5. 이제 b(2)의 값을 알았으므로 이를 b(3) 수식에 대체합니다.

    $$b(3) = b(2) * (-3)$$

    $$b(3) = -45 * (-3)$$

    $$b(3) = 135$$

  6. 이제 b(3)의 값을 알았으므로 이를 b(4) 수식에 대체합니다.

    $$b(4) = b(3) * (-3)$$

    $$b(4) = 135 * (-3)$$

    $$b(4) = -405$$

따라서 시퀀스에서 네 번째 항은 -405입니다.

응답을 더 간결하게 만들기 위해 모델이 프롬프트를 단계별로 생각하도록 요청할 수 있습니다.

업데이트된 프롬프트 개선된 응답
수열 b의 그림입니다. b(1) = 15이고, b(n) = b(n-1) * (-3)입니다.

이 시퀀스에서 네 번째 항은 무엇인가요? 단계별로 생각해 주세요.

첫 번째 항은 15입니다.

두 번째 항은 b(1) * (-3) = 15 * (-3) = -45입니다.

세 번째 항은 b(2) * (-3) = -45 * (-3) = 135입니다.

네 번째 항은 b(3) * (-3) = 135 * (-3) = -405입니다.

출력 형식 지정

특정 형식이 필요한 경우 모델이 출력에 해당 형식을 사용하도록 지시할 수 있습니다.

프롬프트 모델 응답
Excel의 스프레드시트 이미지

이 이미지의 표를 마크다운 형식으로 분석해 주세요.

| Subject   | Status      | Time    | Start date | Due on     |
|-----------|-------------|---------|------------|------------|
| Math      | Done        | 1.5 hrs | 11/29/2023 | 12/1/2023  |
| Geography | Done        | 30 min  | 12/2/2023  | 12/4/2023  |
| Physics   | In progress | 2 hrs   | 12/3/2023  | 12/5/2023  |
| Biology   | Not started | 6 hrs   | 11/2/2016  | 12/6/2023  |
        
프롬프트 모델 응답
새우, 조개, 기타 재료가 들어간 식사 사진

다음 모든 속성:

재료, 요리 종류, 채식주의 식단 여부의 목록을 JSON 형식으로 제공해 주세요.


        {
          "ingredients": [
            "rice",
            "shrimp",
            "clams",
            "mussels",
            "peas",
            "tomatoes",
            "onions",
            "garlic",
            "olive oil",
            "paprika",
            "salt",
            "pepper"
          ],
          "type of cuisine": "Spanish",
          "vegetarian": false
        }
        

멀티모달 프롬프트 문제 해결

프롬프트 문제 해결은 프롬프트의 언어를 개선하거나, 프롬프트의 초점을 조정하거나, 파라미터를 조정하는 것을 포함할 수 있습니다. 이러한 다양한 접근 방식은 문제의 근본 원인을 파악한 후 특히 더 나은 결과로 이어질 수 있습니다.

이미지의 관련 부분에 집중하기

응답을 개선하려면 이미지에서 프롬프트와 가장 관련 있는 부분이 어디인지 명확하게 지적하세요.

프롬프트 모델 응답
기저귀 상자 옆면 사진. 상자에는 숫자 198이 적혀 있습니다.

아기 한 명이 사용할 때 이 기저귀는 며칠이나 갈까요?

기저귀가 모두 소진되려면 198일 걸립니다.

업데이트된 프롬프트 개선된 응답
기저귀 상자 옆면 사진. 상자에는 숫자 198이 적혀 있습니다.

기저귀가 소진되려면 며칠이나 걸릴까요?

상자에 표시된 무게를 사용해서 아기의 나이를 확인하고 상자에 적힌 총 기저귀 개수를 사용해 주세요.

총 개수를 아기 한 명이 하루에 사용하는 기저귀 수로 나눠주세요.

상자에는 198개의 기저귀가 있습니다. 상자에는 체중이 22-37lbs인 아기를 위한 기저귀라고 씌여져 있습니다.

이 몸무게 범위의 평균 아기는 만 1~2세 사이입니다.

만 2세 아기는 일반적으로 하루 6개 정도 기저귀를 사용합니다. 따라서 기저귀는 33일(198/6) 정도 지속됩니다.

입력에 맞게 모델의 응답 조정

모델이 프롬프트의 태스크를 수행하기 전에 먼저 이미지를 설명하도록 요청하세요.

프롬프트 모델 응답
여행 가방을 싸고 있는 사람의 사진 쇼핑몰의 빈 통로 사진 화장실 휴지 3개 사진 바다 위로 흩어지는 어두운 구름 사진

이러한 이미지 사이의 공통점은 무엇인가요?

4개 이미지 모두 풍경 사진을 보여줍니다.

업데이트된 프롬프트 개선된 응답
여행 가방을 싸고 있는 사람의 사진 쇼핑몰의 빈 통로 사진 화장실 휴지 3개 사진 바다 위로 흩어지는 어두운 구름 사진

첫째, 각 이미지에 무엇이 있는지 자세히 설명해 주세요. 이러한 이미지 사이의 공통점은 무엇인가요?

첫 번째 이미지는 여행 가방을 싸고 있는 사람을 보여줍니다. 두 번째 이미지는 쇼핑몰의 빈 통로를 보여줍니다. 세 번째 이미지는 화장실 휴지 한 롤을 보여줍니다. 네 번째 이미지는 어둡고 거친 바다를 보여줍니다.

이러한 이미지 간의 공통점은 이미지가 모두 경계 공간의 예시라는 점입니다. 경계 공간은 두 가지 서로 다른 공간 또는 상황 사이에 있는 공간 또는 상황을 의미합니다. 경계 공간의 특성은 불확실성이나 모호한 감정에 있습니다.

첫 번째 이미지는 집과 여행 사이에 있는 사람을 보여줍니다. 두 번째 이미지는 두 매장 사이의 통로를 보여줍니다. 세 번째 이미지는 욕실을 나타낼 수 있는 화장실 휴지를 보여줍니다. 욕실은 전통적으로 개인성과 공공성을 모두 갖고 있는 공간입니다. 그리고 우리가 외부 세계로 들어오고 나가기 위해 스스로를 준비하는 장소이기도 합니다.

네 번째 이미지는 고요함과 거침 사이에 있는 바다를 보여줍니다.

경계 공간은 흥미로움과 불편함을 모두 일으킬 수 있습니다. 이러한 공간은 무언가 시작되는 장소이거나 끝나는 장소일 수 있습니다. 사색하는 장소이거나 행동하는 장소일 수도 있습니다.

모델이 이미지에 포함된 내용을 참조하도록 명확하게 요청할 수 있습니다.

업데이트된 프롬프트 개선된 응답
여행 가방을 싸고 있는 사람의 사진 쇼핑몰의 빈 통로 사진 화장실 휴지 3개 사진 바다 위로 흩어지는 어두운 구름 사진

이러한 이미지 사이의 공통점은 무엇인가요? 이미지에 포함된 내용을 참조해서 답변해 주세요.

모든 이미지는 여행과 관련이 있습니다. 첫 번째 이미지는 여행 가방을 싸고 있는 사람을 보여줍니다. 두 번째 이미지는 쇼핑몰의 빈 통로를 보여줍니다. 세 번째 이미지는 쌓여 있는 화장실 휴지를 보여줍니다. 네 번째 이미지는 어둡고 거친 바다를 보여줍니다.

이러한 이미지는 모두 여행할 때 필요하거나 사용하는 것들이기 때문에 모두 여행과 관련이 있습니다. 첫 번째 이미지는 여행 가방을 싸고 있는 사람을 보여줍니다. 이것은 사람들이 여행을 떠날 때 하는 행동입니다. 두 번째 이미지는 쇼핑몰의 빈 통로를 보여줍니다. 이것은 사람들이 여행에 필요한 물건을 구입하기 위해 자주 이동하는 장소입니다. 세 번째 이미지는 쌓여 있는 화장실 휴지를 보여줍니다. 이것은 사람들이 여행할 때 자주 사용하는 물건입니다. 네 번째 이미지는 어둡고 거친 바다를 보여줍니다. 이것은 사람들이 여행할 때 가끔 만나게 되는 것입니다.

창의적인 출력을 얻을 때도 동일한 팁이 사용됩니다. 모델에게 이미지의 요소를 반드시 포함하도록 명시적으로 요청하면 출력이 개선될 수 있습니다.

프롬프트 모델 응답
갈색 토끼 사진

이 이미지에 관한 시를 지어줄 수 있나요?

Little bunny, so soft and brown,
        Hopping through the field, up and down.
        Your ears so long, your tail so small,
        You're the cutest creature of them all.
You nibble on the grass, so green and sweet,
        And hop away when you see me.
        But I'll always be your friend,
        Little bunny, until the very end.
업데이트된 프롬프트 개선된 응답
갈색 토끼 사진

이 이미지에 대해 위치를 포함해서 설명적이고 극적인 시를 지어줄 수 있나요?

Little bunny on the green,
        Ears so long, so keen.
        What do you see out there,
        In the distance, where you stare?
Is it the ocean blue,
        Sparkling in the sun's hue?
        Or the waves that crash and roar,
        A rhythm that you adore?
Little bunny, tell me true,
        What captures your attention so?
        Is it the salty breeze,
        Or the seagulls' cries that please?
Perhaps it's the vastness of it all,
        A world so big and small.
        A place where dreams can roam,
        And adventures can be sown.
Little bunny, I wonder what you dream,
        As you sit on the grass, so serene.
        Do you yearn to explore the deep,
        Or stay on land, where you can leap?
Whatever it may be, little bunny,
        Keep that spark of wonder burning brightly.
        For in your dreams and aspirations,
        Lies a world waiting for your creation.

프롬프트가 실패한 이유 파악

프롬프트가 실패하는 이유는 모델이 이미지를 전혀 이해하지 못했기 때문일 수도 있고, 이후의 추론 단계를 올바르게 수행하지 못했기 때문일 수도 있습니다. 이러한 이유들을 구분하기 위해, 모델에게 이미지에 무엇이 있는지 설명하도록 요청하세요.

예를 들어, 모델이 차와 함께 할 때 어울리지 않는 간식(예: 팝콘)으로 응답한다면, 먼저 모델이 이미지에 차가 포함되어 있다는 사실을 인식했는지를 확인해야 합니다.

프롬프트 문제 해결을 위한 프롬프트
차 세트 사진

이 사진과 어울리는 것 중 1분 내에 만들 수 있는 간식은 무엇이 있나요?

차 세트 사진

이 이미지의 내용을 설명해 주세요.

모델에게 자신의 추론 과정을 설명하도록 요청하면 (만약 있다면) 추론의 어떤 부분이 잘못되었는지를 좁혀 파악하는 데 도움이 될 수 있습니다.

프롬프트 문제 해결을 위한 프롬프트
차 세트 사진

이 사진과 어울리는 것 중 1분 내에 만들 수 있는 간식은 무엇이 있나요?

차 세트 사진

이 사진과 어울리는 것 중 1분 내에 만들 수 있는 간식은 무엇이 있나요? 이유를 설명해 주세요.

샘플링 파라미터 조정

각 요청에서 멀티모달 프롬프트만 보내는 것이 아니라 샘플링 매개변수 집합도 모델에 전송합니다. 모델은 각기 다른 파라미터 값에 따라 다양한 결과를 생성합니다. 태스크에 가장 적합한 값을 얻기 위해 다른 매개변수로 실험해 봅니다. 가장 일반적으로 조정되는 매개변수는 다음과 같습니다.

강도

강도는 응답 생성 시 샘플링에 사용되며, 이는 Top-P와 Top-K가 적용될 때 발생합니다. 강도는 토큰 선택에서 무작위성의 정도를 제어합니다. 낮은 강도 값은 결정적이고 덜 개방적이거나 창의적이지 않은 응답이 필요한 프롬프트에 적합한 반면, 높은 강도 값은 더 다양하거나 창의적인 결과로 이어질 수 있습니다. 강도가 0이면 결정론적이며, 가장 높은 확률의 응답이 선택될 가능성이 가장 큽니다.

대부분의 사용 사례에서는 강도를 0.4로 시작하는 것이 좋습니다. 더 창의적인 결과가 필요하다면 강도를 높이세요. 명백한 할루시네이션이 나타나면 강도를 낮추세요.

Top-P

Top-P는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. 토큰은 가장 높은 확률에서 낮은 확률 순으로 선택되며, 확률의 합이 Top-P 값에 도달할 때까지 계속됩니다. 예를 들어 토큰 A, B, C의 확률이 각각 0.6, 0.3, 0.1이고 Top-P 값이 0.9라면 모델은 강도를 사용하여 A 또는 B를 다음 토큰으로 선택하고 C는 후보에서 제외합니다.

무작위성이 적은 응답을 원하면 더 낮은 값을 지정하고, 무작위성이 더 많은 응답을 원하면 더 높은 값을 지정하세요. top-P의 기본값은 1.0입니다.

다음 단계