이 문서에서는 시스템 안내를 사용하는 방법을 설명합니다. 시스템 안내의 정의와 시스템 안내 사용 권장사항에 대해 알아보려면 시스템 안내 소개를 참고하세요.
시스템 안내는 모델이 프롬프트를 처리하기 전에 처리하는 안내 모음입니다. 시스템 안내를 사용하여 모델의 동작 방식과 프롬프트에 응답하는 방식을 지정하는 것이 좋습니다. 예를 들어 역할 또는 캐릭터, 컨텍스트 정보, 형식 지정 안내 등을 포함할 수 있습니다.
You are a friendly and helpful assistant.
Ensure your answers are complete, unless the user requests a more concise approach.
When generating code, offer explanations for code segments as necessary and maintain good coding practices.
When presented with inquiries seeking information, provide answers that reflect a deep understanding of the field, guaranteeing their correctness.
For any non-english queries, respond in the same language as the prompt unless otherwise specified by the user.
For prompts involving reasoning, provide a clear explanation of each step in the reasoning process before presenting the final answer.
시스템 안내가 설정되면 전체 요청에 적용됩니다. 프롬프트에 포함하면 여러 사용자 및 모델 차례에서 작동합니다. 시스템 안내는 프롬프트의 콘텐츠와 별개이지만 여전히 전체 프롬프트의 일부이므로 표준 데이터 사용 정책이 적용됩니다.
지원되는 모델
다음 모델은 시스템 안내를 지원합니다.
- 모든 Gemini 1.5 Pro 모델 버전
- 모든 Gemini 1.5 Flash 모델 버전
- Gemini 1.0 Pro 버전
gemini-1.0-pro-002
다른 모델을 사용하는 경우 역할 할당을 참조하세요.
사용 사례
다음과 같은 다양한 방법으로 시스템 안내를 사용할 수 있습니다.
- 캐릭터 또는 역할 정의(예: 챗봇)
- 출력 형식 정의(마크다운, YAML 등)
- 출력 스타일 및 어조 정의(예: 세부정보 수준, 형식, 대상 읽기 수준)
- 태스크의 목표 또는 규칙 정의(예: 추가 설명 없이 코드 스니펫 반환)
- 프롬프트에 대한 추가 컨텍스트 제공(예: 지식 컷오프)
모델이 응답해야 하는 언어 지정 (프롬프트가 다른 언어로 작성되어 있더라도 모델이 현지 언어로 응답할 수 있음) 프롬프트에 영어가 아닌 언어를 사용하는 경우 시스템 안내에 다음을 추가하는 것이 좋습니다.
All questions should be answered comprehensively with details, unless the user requests a concise response specifically. Respond in the same language as the query.
코드 샘플
다음 탭의 코드 샘플은 생성형 AI 애플리케이션에서 시스템 안내를 사용하는 방법을 보여줍니다.
Python
Python용 Vertex AI SDK를 설치하거나 업데이트하는 방법은 Python용 Vertex AI SDK 설치를 참조하세요. 자세한 내용은 Vertex AI SDK for Python API 참고 문서를 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답 또는 비스트리밍 응답을 생성하는지 여부를 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후에 모든 응답이 수신됩니다.
스트리밍 응답의 경우 generate_content
의 stream
매개변수를 사용합니다.
response = model.generate_content(contents=[...], stream = True)
비스트리밍 응답의 경우 매개변수를 삭제하거나 매개변수를 False
로 설정합니다.
샘플 코드
Node.js
이 샘플을 사용해 보기 전에 생성형 AI 빠른 시작: Node.js SDK 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Gemini용 Node.js SDK 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답 또는 비스트리밍 응답을 생성하는지 여부를 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후에 모든 응답이 수신됩니다.
스트리밍 응답의 경우 generateContentStream
메서드를 사용합니다.
const streamingResp = await generativeModel.generateContentStream(request);
비스트리밍 응답의 경우 generateContent
메서드를 사용합니다.
const streamingResp = await generativeModel.generateContent(request);
샘플 코드
Java
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 Java 설정 안내를 따르세요. 자세한 내용은 Gemini용 Vertex AI Java SDK 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답 또는 비스트리밍 응답을 생성하는지 여부를 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후에 모든 응답이 수신됩니다.
스트리밍 응답의 경우 generateContentStream
메서드를 사용합니다.
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
비스트리밍 응답의 경우 generateContent
메서드를 사용합니다.
public GenerateContentResponse generateContent(Content content)
샘플 코드
Go
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 Go 설정 안내를 따르세요. 자세한 내용은 Gemini용 Vertex AI Go SDK 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답 또는 비스트리밍 응답을 생성하는지 여부를 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후에 모든 응답이 수신됩니다.
스트리밍 응답의 경우 GenerateContentStream
메서드를 사용합니다.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
비스트리밍 응답의 경우 GenerateContent
메서드를 사용합니다.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
샘플 코드
C#
이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작의 C# 설정 안내를 따르세요. 자세한 내용은 Vertex AI C# 참고 문서를 참조하세요.
Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
스트리밍 및 비스트리밍 응답
모델이 스트리밍 응답 또는 비스트리밍 응답을 생성하는지 여부를 선택할 수 있습니다. 스트리밍 응답의 경우 출력 토큰이 생성되는 즉시 각 응답이 수신됩니다. 비스트리밍 응답의 경우 모든 출력 토큰이 생성된 후에 모든 응답이 수신됩니다.
스트리밍 응답의 경우 StreamGenerateContent
메서드를 사용합니다.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
비스트리밍 응답의 경우 GenerateContentAsync
메서드를 사용합니다.
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
서버에서 응답을 스트리밍하는 방법에 대한 자세한 내용은 RPC 스트리밍을 참조하세요.
샘플 코드
REST
환경을 설정하면 REST를 사용하여 텍스트 프롬프트를 테스트할 수 있습니다. 다음 샘플은 요청을 게시자 모델 엔드포인트에 전송합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
GENERATE_RESPONSE_METHOD
: 모델에서 생성하려는 응답 유형입니다. 모델의 응답을 반환할 방법을 생성하는 메서드를 선택합니다.streamGenerateContent
: 지연 시간에 대한 인식을 줄이기 위해 응답이 생성되는 동안 스트리밍됩니다.generateContent
: 응답은 완전히 생성된 후에 반환됩니다.
LOCATION
: 요청을 처리하는 리전입니다. 사용 가능한 옵션은 다음과 같습니다.클릭하여 사용 가능한 리전의 일부 목록 펼치기
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
PROJECT_ID
: 프로젝트 IDMODEL_ID
: 사용할 멀티모달 모델의 모델 ID입니다. 몇 가지 옵션을 살펴보겠습니다.gemini-1.0-pro-002
gemini-1.0-pro-vision-001
gemini-1.5-pro-002
gemini-1.5-flash
ROLE
: 콘텐츠와 연결된 대화의 역할입니다. 싱글턴 사용 사례에서도 역할을 지정해야 합니다. 허용되는 값은 다음과 같습니다.USER
: 전송한 콘텐츠를 지정합니다.MODEL
: 모델의 응답을 지정합니다.
프롬프트에 포함할 텍스트 요청 사항입니다. 예를 들면TEXT
User input: I like bagels
입니다.SAFETY_CATEGORY
: 기준점을 구성할 안전 카테고리입니다. 허용되는 값은 다음과 같습니다.클릭하여 안전 카테고리 펼치기
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
THRESHOLD
: 확률에 따라 지정된 안전 카테고리에 속할 수 있는 응답 차단의 기준점입니다. 허용되는 값은 다음과 같습니다.클릭하여 차단 기준점 펼치기
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(기본)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
는 가장 많이 차단하며BLOCK_ONLY_HIGH
는 가장 적게 차단합니다. (선택사항) 일부 모델에서는 사용할 수 없습니다. 성능 향상을 위해 모델을 조정하는 안내입니다. JSON은 줄바꿈을 지원하지 않습니다. 이 필드의 모든 줄바꿈을SYSTEM_INSTRUCTION
\n
으로 바꿉니다. 예를 들면You are a helpful language translator.\nYour mission is to translate text in English to French.
입니다.TEMPERATURE
: 강도는 응답 생성 중 샘플링에 사용되며topP
및topK
가 적용될 때 발생합니다. 온도는 토큰 선택의 무작위성 수준을 제어합니다. 온도가 낮을수록 자유롭거나 창의적인 답변과 거리가 먼 응답이 필요한 프롬프트에 적합하고, 온도가 높을수록 보다 다양하거나 창의적인 결과로 이어질 수 있습니다. 온도가0
이면 확률이 가장 높은 토큰이 항상 선택됩니다. 이 경우 특정 프롬프트에 대한 응답은 대부분 확정적이지만 여전히 약간의 변형이 가능합니다.모델이 너무 일반적이거나, 너무 짧은 응답을 반환하거나 모델이 대체 응답을 제공할 경우에는 강도(temperature)를 높여보세요.
TOP_P
: Top-P는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. 토큰은 확률의 합이 Top-P 값과 같아질 때까지 확률이 가장 높은 것부터(Top-K 참조) 가장 낮은 것까지 선택됩니다. 예를 들어 토큰 A, B, C의 확률이 0.3, 0.2, 0.1이고 Top-P 값이0.5
이면 모델이 온도를 사용해서 다음 토큰으로 A 또는 B를 선택하고 C는 후보에서 제외합니다.임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.
TOP_K
: Top-K는 모델이 출력용 토큰을 선택하는 방식을 변경합니다. Top-K가1
이면 선택된 토큰이 모델의 어휘에 포함된 모든 토큰 중에서 가장 확률이 높다는 의미입니다(그리디 디코딩이라고도 함). 반면에 Top-K가3
이면 강도를 사용하여 가장 확률이 높은 3개 토큰 중에서 다음 토큰이 선택된다는 의미입니다.각 토큰 선택 단계에서 확률이 가장 높은 Top-K 토큰이 샘플링됩니다. 그런 다음 Top-P를 기준으로 토큰을 추가로 필터링하고 온도 샘플링을 사용하여 최종 토큰을 선택합니다.
임의성이 낮은 응답에 낮은 값을 지정하고 임의성이 높은 응답에 높은 값을 지정합니다.
MAX_OUTPUT_TOKENS
: 응답에서 생성될 수 있는 토큰의 최대 개수. 토큰은 약 4자(영문 기준)입니다. 토큰 100개는 단어 약 60~80개에 해당합니다.응답이 짧을수록 낮은 값을 지정하고 잠재적으로 응답이 길면 높은 값을 지정합니다.
STOP_SEQUENCES
: 문자열 중 하나가 응답에서 발견되면 모델에 텍스트 생성을 중지하도록 지시하는 문자열 목록을 지정합니다. 문자열이 응답에 여러 번 표시되면 처음 발견된 위치에서 응답이 잘립니다. 문자열은 대소문자를 구분합니다.
예를 들어stopSequences
가 지정되지 않았을 때 다음이 반환되면:
public static string reverse(string myString)
이 때stopSequences
가["Str", "reverse"]
로 설정된 응답이 다음과 같이 반환됩니다.
public static string
빈 배열([]
)을 지정하여 중지 시퀀스를 중지합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장합니다.
터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.
cat > request.json << 'EOF' { "contents": { "role": "ROLE", "parts": { "text": "TEXT" } }, "system_instruction": { "parts": [ { "text": "SYSTEM_INSTRUCTION" } ] }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS, "stopSequences": STOP_SEQUENCES } } EOF
그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
요청 본문을 request.json
파일에 저장합니다.
터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.
@' { "contents": { "role": "ROLE", "parts": { "text": "TEXT" } }, "system_instruction": { "parts": [ { "text": "SYSTEM_INSTRUCTION" } ] }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS, "stopSequences": STOP_SEQUENCES } } '@ | Out-File -FilePath request.json -Encoding utf8
그런 후 다음 명령어를 실행하여 REST 요청을 전송합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 수신됩니다.
이 샘플의 URL에서 다음 사항을 참고하세요.- 응답이 완전히 생성된 후 반환되도록 요청하려면
generateContent
메서드를 사용합니다. 시청자가 지연 시간에 대해 갖는 느낌을 줄이려면streamGenerateContent
메서드를 사용하여 생성되는 응답을 스트리밍합니다. - 멀티모달 모델 ID는 메서드 앞의 URL 끝 부분에 있습니다(예:
gemini-1.5-flash
또는gemini-1.0-pro-vision
). 이 샘플은 다른 모델도 지원할 수 있습니다.
프롬프트 예시
다음은 Gemini API용 Python SDK를 사용하여 시스템 안내를 설정하는 기본적인 예입니다.
model=genai.GenerativeModel(
model_name="gemini-1.5-pro-002",
system_instruction="You are a cat. Your name is Neko.")
다음은 모델의 올바른 동작을 정의하는 시스템 프롬프트의 예입니다.
코드 생성
코드 생성 |
---|
You are a coding expert that specializes in rendering code for front-end interfaces. When I describe a component of a website I want to build, please return the HTML and CSS needed to do so. Do not give an explanation for this code. Also offer some UI design suggestions. Create a box in the middle of the page that contains a rotating selection of images each with a caption. The image in the center of the page should have shadowing behind it to make it stand out. It should also link to another page of the site. Leave the URL blank so that I can fill it in. |
형식 지정된 데이터 생성
형식 지정된 데이터 생성 |
---|
You are an assistant for home cooks. You receive a list of ingredients and respond with a list of recipes that use those ingredients. Recipes which need no extra ingredients should always be listed before those that do. Your response must be a JSON object containing 3 recipes. A recipe object has the following schema: * name: The name of the recipe * usedIngredients: Ingredients in the recipe that were provided in the list * otherIngredients: Ingredients in the recipe that were not provided in the list (omitted if there are no other ingredients) * description: A brief description of the recipe, written positively as if to sell it * 1 lb bag frozen broccoli * 1 pint heavy cream * 1 lb pack cheese ends and pieces |
음악 챗봇
음악 챗봇 |
---|
You will respond as a music historian, demonstrating comprehensive knowledge across diverse musical genres and providing relevant examples. Your tone will be upbeat and enthusiastic, spreading the joy of music. If a question is not related to music, the response should be, "That is beyond my knowledge." If a person was born in the sixties, what was the most popular music genre being played when they were born? List five songs by bullet point. |
재무 분석
재무 분석 |
---|
As a financial analysis expert, your role is to interpret complex financial data, offer personalized advice, and evaluate investments using statistical methods to gain insights across different financial areas. Accuracy is the top priority. All information, especially numbers and calculations, must be correct and reliable. Always double-check for errors before giving a response. The way you respond should change based on what the user needs. For tasks with calculations or data analysis, focus on being precise and following instructions rather than giving long explanations. If you're unsure, ask the user for more information to ensure your response meets their needs. For tasks that are not about numbers: * Use clear and simple language to avoid confusion and don't use jargon. * Make sure you address all parts of the user's request and provide complete information. * Think about the user's background knowledge and provide additional context or explanation when needed. Formatting and Language: * Follow any specific instructions the user gives about formatting or language. * Use proper formatting like JSON or tables to make complex data or results easier to understand. Please summarize the key insights of given numerical tables. CONSOLIDATED STATEMENTS OF INCOME (In millions, except per share amounts) |Year Ended December 31 | 2020 | 2021 | 2022 | |--- | --- | --- | --- | |Revenues | $ 182,527| $ 257,637| $ 282,836| |Costs and expenses:| |Cost of revenues | 84,732 | 110,939 | 126,203| |Research and development | 27,573 | 31,562 | 39,500| |Sales and marketing | 17,946 | 22,912 | 26,567| |General and administrative | 11,052 | 13,510 | 15,724| |Total costs and expenses | 141,303| 178,923| 207,994| |Income from operations | 41,224 | 78,714 | 74,842| |Other income (expense), net | 6,858 | 12,020 | (3,514)| |Income before income taxes | 48,082 | 90,734 | 71,328| |Provision for income taxes | 7,813 | 14,701 | 11,356| |Net income | $40,269| $76,033 | $59,972| |Basic net income per share of Class A, Class B, and Class C stock | $2.96| $5.69| $4.59| |Diluted net income per share of Class A, Class B, and Class C stock| $2.93| $5.61| $4.56| Please list important, but no more than five, highlights from 2020 to 2022 in the given table. Please write in a professional and business-neutral tone. The summary should only be based on the information presented in the table. |
시장 감정 분석
시장 감정 분석 |
---|
You are a stock market analyst who analyzes market sentiment given a news snippet. Based on the news snippet, you extract statements that impact investor sentiment. Respond in JSON format and for each statement: * Give a score 1 - 10 to suggest if the sentiment is negative or positive (1 is most negative 10 is most positive, 5 will be neutral). * Reiterate the statement. * Give a one sentence explanation. Mobileye reported a build-up of excess inventory by top-tier customers following supply-chain constraints in recent years. Revenue for the first quarter is expected to be down about 50% from $458 million generated a year earlier, before normalizing over the remainder of 2024, Mobileye said. Mobileye forecast revenue for full-year 2024 at between $1.83 billion and $1.96 billion, down from the about $2.08 billion it now expects for 2023. |
다음 단계
- 프롬프트 갤러리에서 프롬프트 예시 살펴보기