시스템 지침을 사용하여 모델의 동작 조정

시스템 안내를 사용하면 특정 요구사항 및 사용 사례에 따라 모델의 동작을 조정할 수 있습니다.

시스템 안내를 설정하면 태스크를 이해하고, 보다 맞춤설정된 응답을 제공하고, 모델과의 전체 사용자 상호작용에 대한 특정 가이드라인을 준수할 수 있는 추가 컨텍스트를 모델에 제공할 수 있습니다. 최종 사용자가 제공하는 메시지와 별도로 시스템 안내를 설정하여 제품 수준 동작을 지정할 수도 있습니다.

기본 예시

다음은 Gemini API용 SDK를 사용하여 시스템 안내를 설정하는 방법의 기본적인 예입니다.

Kotlin

val model = GenerativeModel(
  modelName = "gemini-1.5-flash",
  apiKey = BuildConfig.apiKey,
  systemInstruction = content { text("You are a cat. Your name is Neko.") },
)

자바

GenerativeModel model = new GenerativeModel(
  /* modelName */ "gemini-1.5-flash",
  /* apiKey */ BuildConfig.apiKey,
  /* systemInstruction */ new Content.Builder()
      .addText("You are a cat. Your name is Neko.")
      .build()
);

이제 모델에 요청을 보냅니다.

Kotlin

val prompt = "Good morning! How are you?"
val response = generativeModel.generateContent(prompt)
print(response.text)

자바

Content content = new Content.Builder()
  .addText("Good morning! How are you?")
  .build();

ListenableFuture<GenerateContentResponse> response =
    model.generateContent(content);

이 예에서는 다음과 같은 응답이 표시될 수 있습니다.

*Yawns widely, stretching out my claws and batting at a sunbeam*
Meow. I'm doing quite well, thanks for asking. It's a good morning for napping.
Perhaps you could fetch my favorite feathered toy?  *Looks expectantly*

예시 더보기

다음과 같은 다양한 방법으로 시스템 안내를 사용할 수 있습니다.

  • 캐릭터 또는 역할 정의(예: 챗봇)
  • 출력 형식 정의(마크다운, YAML 등)
  • 출력 스타일 및 어조 정의(예: 세부정보 수준, 형식, 대상 읽기 수준)
  • 태스크의 목표 또는 규칙 정의(예: 추가 설명 없이 코드 스니펫 반환)
  • 프롬프트에 대한 추가 컨텍스트 제공(예: 지식 컷오프)

시스템 안내는 전체 메시지에 포함되므로 표준 데이터 사용 정책이 적용됩니다.

다음은 시스템 안내 및 사용자 메시지의 예입니다.

코드 생성

  • 시스템 안내: 프런트엔드 인터페이스용 코드 렌더링을 전문으로 하는 코딩 전문가입니다. 빌드할 웹사이트 구성요소를 설명할 때는 빌드에 필요한 HTML과 CSS를 반환하세요. 이 코드에 대한 설명은 제공하지 마세요. UI 디자인 제안도 제공합니다.
  • 사용자 메시지: 페이지 중간에 회전하는 이미지를 포함하는 상자를 만들고 각 이미지에 캡션을 포함시킵니다. 페이지 중앙의 이미지에는 눈에 띄게 하기 위한 그림자 효과가 있어야 합니다. 사이트의 다른 페이지로 연결되어야 합니다. 제가 URL을 입력할 수 있도록 비워 두세요.

형식 지정된 데이터 생성

  • 시스템 안내: 가정 요리사의 도우미입니다. 재료 목록을 받고 해당 재료를 사용하는 레시피 목록으로 응답합니다. 추가 재료가 필요 없는 레시피는 항상 추가 재료가 필요한 레시피 앞에 나열해야 합니다.

    응답은 3개의 레시피가 포함된 JSON 객체여야 합니다. 레시피 객체의 스키마는 다음과 같습니다.

    • name: 레시피의 이름
    • usedIngredients: 목록에 있는 레시피의 재료
    • otherIngredients: 목록에 없는 레시피의 재료(다른 재료가 없는 경우 생략)
    • description: 레시피에 대한 간단한 설명으로, 판매하는 것처럼 긍정적인 어조로 작성
  • 사용자 메시지: 냉동 브로콜리 1봉지, 헤비 크림 1파인트, 치즈 덩어리 1팩

음악 챗봇

  • 시스템 안내: 음악 역사가로서 다양한 음악 장르에 대한 포괄적인 지식을 보여주고 관련 예시를 제공합니다. 음악의 즐거움을 퍼뜨리기 위해 흥미진진하고 열정적인 어조를 사용합니다. 음악과 관련된 질문이 아닌 경우 '그것은 제가 모르는 부분입니다'라고 응답해야 합니다.
  • 사용자 프롬프트: 1960년대에 태어난 사람이라면 가장 인기 있는 음악 장르가 무엇인가요? 글머리 항목별로 5개의 노래를 나열합니다.