제로샷 최적화 도구

제로샷 옵티마이저를 사용하면 사용자가 작성한 프롬프트를 자동으로 개선할 수 있습니다. 모호한 언어, 누락된 컨텍스트 또는 관련 없는 정보의 포함으로 인해 프롬프트가 원하는 모델 응답을 생성하지 못하는 경우가 많습니다. 이 최적화 도구는 기존 프롬프트를 분석하고 다시 작성하여 더 명확하고 효과적이며 모델의 기능에 더 잘 부합하도록 하여 궁극적으로 더 높은 품질의 응답을 제공합니다.

제로샷 최적화 도구는 특히 다음 경우에 유용합니다.

  • 모델 업데이트에 적응: 모델의 최신 버전으로 업그레이드하면 기존 프롬프트가 더 이상 최적으로 작동하지 않을 수 있습니다.

  • 프롬프트 이해도 향상: 프롬프트의 문구가 복잡하거나 오해의 소지가 있는 경우 이 도구는 명확성과 정확성을 극대화하기 위해 문구를 다시 작성하여 원치 않는 결과가 나올 가능성을 줄입니다.

최적화 도구를 사용하는 방법에는 두 가지가 있습니다.

  • 요청 사항 생성: 복잡한 시스템 요청 사항을 처음부터 작성하는 대신 목표나 작업을 일반 언어로 설명할 수 있습니다. 그러면 최적화 도구가 목표를 달성하기 위해 설계된 완전하고 잘 구조화된 시스템 명령어를 생성합니다.

  • 프롬프트 개선: 작동하는 프롬프트가 있지만 모델의 출력이 일관되지 않거나, 주제에서 약간 벗어나거나, 원하는 세부정보가 누락되어 있습니다. 최적화 도구를 사용하면 더 나은 출력을 위해 프롬프트를 개선할 수 있습니다.

최적화 도구는 Gemini에서 지원하는 모든 언어로 프롬프트 최적화를 지원하며 Vertex AI SDK를 통해 사용할 수 있습니다.

시작하기 전에

Compute Engine 기본 서비스 계정에 프롬프트를 최적화하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Compute Engine 기본 서비스 계정에 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 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..."
}