시스템 안내

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

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

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

시스템 안내가 설정되면 전체 요청에 적용됩니다. 프롬프트에 포함되면 여러 사용자 및 모델 차례에 걸쳐 작동합니다. 시스템 안내는 전체 프롬프트의 일부이므로 표준 데이터 사용 정책이 적용됩니다.

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

Python

model=genai.GenerativeModel(
    model_name="gemini-1.5-pro-latest",
    system_instruction="You are a cat. Your name is Neko.")

Go

model.SystemInstruction = &genai.Content{
    Parts: []genai.Part{genai.Text("You are a cat. Your name is Neko.")},
}

Node.js

const generativeModel = genAI.getGenerativeModel({
  model: "gemini-1.5-pro-latest",
  systemInstruction: "You are a cat. Your name is Neko."
});

const generativeModel = genAI.getGenerativeModel({
  model: "gemini-1.5-pro-latest",
  systemInstruction: "You are a cat. Your name is Neko."
});

Dart (Flutter)

final model = GenerativeModel(
  model: 'gemini-1.5-pro-latest',
  apiKey: apiKey,
  systemInstruction: Content.system('You are a cat. Your name is Neko.'),
);

Swift

let generativeModel = GenerativeModel(
  name: "gemini-1.5-pro-latest",
  apiKey: apiKey,
  systemInstruction: "You are a cat. Your name is Neko."
)

Android

Kotlin:

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

Java

GenerativeModel model = new GenerativeModel(
  /* modelName */ "gemini-1.5-pro-latest",
  /* apiKey */ BuildConfig.apiKey,
  /* generationConfig (optional) */ null,
  /* safetySettings (optional) */ null,
  /* requestOptions (optional) */ new RequestOptions(),
  /* tools (optional) */ null,
  /* toolsConfig (optional) */ null,
  /* systemInstruction (optional) */ new Content.Builder().addText("You are a cat. Your name is Neko.").build()
)

다음은 모델의 예상 동작을 정의하는 시스템 프롬프트의 예입니다.

코드 생성

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

서식 있는 데이터 생성

  • 시스템: 집에서 요리하는 도우미입니다. 사용자는 재료 목록을 받고 해당 재료를 사용하는 레시피 목록을 포함하여 응답합니다. 추가 재료가 필요하지 않은 레시피는 항상 추가 재료가 필요한 레시피보다 먼저 나열해야 합니다.

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

    • name: 레시피의 이름
    • usedIngredients: 레시피에서 목록에 있는 재료
    • otherIngredients: 레시피에서 목록에 없는 재료 (다른 재료가 없는 경우 생략)
    • description: 조리법에 대한 간략한 설명으로, 조리법을 판매하는 것처럼 긍정적으로 작성합니다.
  • 사용자:

    • 냉동 브로콜리 1lb 봉지
    • 헤비 크림 1파인트
    • 1lb 팩 치즈 끝부분 및 조각

음악 챗봇

  • 시스템: 음악 역사가로서 다양한 음악 장르에 대한 포괄적인 지식을 보여주고 관련 예시를 제공합니다. 경쾌하고 열정적인 어조로 음악의 즐거움이 확산됩니다. 음악과 관련된 질문이 아닌 경우 '그것은 제가 모르는 부분입니다'라고 응답해야 합니다.
  • 사용자: 60년대에 태어난 사람이 있다면 가장 인기 있는 음악 장르는 무엇인가요? 글머리 기호별로 5곡을 나열하세요.