제로샷 옵티마이저를 사용하면 사용자가 작성한 프롬프트를 자동으로 개선하고 정제할 수 있습니다. 프롬프트에 모호한 표현, 누락된 컨텍스트, 불필요한 정보가 포함되어 원하는 모델 응답이 나오지 않을 수 있습니다. 이 옵티마이저는 기존 프롬프트를 분석하여 더 명확하고 효과적이며 모델의 기능과 더 잘 맞도록 다시 작성해, 궁극적으로 더 높은 품질의 응답을 제공할 수 있도록 합니다.
제로샷 옵티마이저는 특히 다음과 같은 경우에 유용합니다.
모델 업데이트에 적응: 새 버전의 모델로 업그레이드할 경우, 기존 프롬프트가 최적의 성능을 내지 못할 수 있습니다.
프롬프트 이해도 향상: 프롬프트 문구가 복잡하거나 오해의 소지가 있는 경우, 도구가 이를 명확하고 정밀하게 다시 표현하여 원치 않는 결과가 나올 가능성을 줄여 줍니다.
옵타마이저 사용 방법은 두 가지입니다.
지시문 생성: 복잡한 시스템 지시문을 처음부터 작성하는 대신, 목표나 작업을 평이한 언어로 설명할 수 있습니다. 그러면 옵티마이저가 목적 달성에 맞게 완전하고 체계적인 시스템 지시문을 생성합니다.
프롬프트 미세 조정: 동작하는 프롬프트가 있지만 모델의 출력이 일관되지 않거나, 다소 엉뚱하거나 원하는 세부사항이 부족한 경우가 있습니다. 옵티마이저는 더 나은 출력을 위해 프롬프트를 개선할 수 있습니다.
이 옵티마이저는 Gemini가 지원하는 모든 언어의 프롬프트 최적화를 지원하며 Vertex AI SDK를 통해 사용할 수 있습니다.
시작하기 전에
Compute Engine 기본 서비스 계정에 프롬프트를 최적화하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Compute Engine 기본 서비스 계정에 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Vertex AI 사용자(
roles/aiplatform.user
) -
Vertex AI 서비스 에이전트(
roles/aiplatform.serviceAgent
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 Compute Engine 기본 서비스 계정에 필요한 권한을 부여할 수도 있습니다.
프롬프트 최적화
# Import libraries
import vertexai
import logging
# Google Colab authentication
from google.colab import auth
PROJECT_NAME = "PROJECT"
auth.authenticate_user(project_id=PROJECT_NAME)
# Initialize the Vertex AI client
client = vertexai.Client(project=PROJECT_NAME, location='us-central1')
# Input original prompt to optimize
prompt = """You are a professional chef. Your goal is teaching how to cook healthy cooking recipes to your apprentice.
Given a question from your apprentice and some context, provide the correct answer to the question.
Use the context to return a single and correct answer with some explanation.
"""
# Optimize prompt
output = client.prompt_optimizer.optimize_prompt(prompt=prompt)
# View optimized prompt
print(output.model_dump_json(indent=2))
이 output
객체는 OptimizeResponse
유형이며 최적화 프로세스에 대한 정보를 제공합니다. 가장 중요한 부분은 모델에서 더 나은 결과를 얻기 위해 사용할 수 있는 최적화된 프롬프트가 포함된 suggested_prompt
입니다. 그 외 필드, 특히 applicable_guidelines
는 프롬프트가 개선된 이유와 방법을 이해하는 데 유용하며, 이를 통해 향후 더 나은 프롬프트를 작성하는 데 도움을 줍니다. 다음은 출력의 예시입니다.
{
"optimization_mode": "zero_shot",
"applicable_guidelines": [
{
"applicable_guideline": "Structure",
"suggested_improvement": "Add role definition.",
"text_before_change": "...",
"text_after_change": "Role: You are an AI assistant...\n\nTask Context:\n..."
},
{
"applicable_guideline": "RedundancyInstructions",
"suggested_improvement": "Remove redundant explanation.",
"text_before_change": "...",
"text_after_change": ""
}
],
"original_prompt": "...",
"suggested_prompt": "Role: You are an AI assistant...\n\nTask Context:\n..."
}