프롬프트 관리

Vertex AI는 프롬프트 템플릿과 프롬프트 데이터를 관리하는 데 도움이 되는 도구를 제공합니다. 프롬프트 템플릿은 버전이 지정될 수 있으며 Vertex AI의 생성형 모델과 함께 사용할 수 있습니다. 각 프롬프트는 Vertex AI Studio 또는 Vertex AI SDK에서 조합하고 버전 관리할 수 있습니다.

프롬프트가 생성형 모델과 함께 작동할 수 있도록 Vertex AI SDK에는 vertexai.preview.prompts 모듈이 포함되어 있습니다. vertexai.preview.prompts 모듈은 Gemini로 텍스트를 생성하기 위한 프롬프트를 정의, 저장, 관리하는 기능을 지원합니다.

Prompt

프롬프트 클래스는 프롬프트 데이터, 변수, 생성 구성, 기타 관련 정보를 캡슐화하는 Gemini 메서드로 텍스트를 생성하는 데 사용할 수 있는 프롬프트를 나타냅니다.

Prompt 객체를 만들려면 vertexai.preview.prompts.Prompt() 생성자를 사용합니다. 이 객체 내에서 프롬프트 데이터, 변수, 기타 구성을 정의할 수 있습니다.

로컬 프롬프트 만들기 및 콘텐츠 생성

Python용 Vertex AI SDK

Python용 Vertex AI SDK

import vertexai
from vertexai.preview import prompts
from vertexai.preview.prompts import Prompt

# from vertexai.generative_models import GenerationConfig, SafetySetting # Optional

# Initialize vertexai
vertexai.init(project=PROJECT_ID, location="us-central1")

# Create local Prompt
local_prompt = Prompt(
    prompt_name="movie-critic",
    prompt_data="Compare the movies {movie1} and {movie2}.",
    variables=[
        {"movie1": "The Lion King", "movie2": "Frozen"},
        {"movie1": "Inception", "movie2": "Interstellar"},
    ],
    model_name="gemini-1.5-pro-002",
    system_instruction="You are a movie critic. Answer in a short sentence.",
    # generation_config=GenerationConfig, # Optional,
    # safety_settings=SafetySetting, # Optional,
)

# Generate content using the assembled prompt for each variable set.
for i in range(len(local_prompt.variables)):
    response = local_prompt.generate_content(
        contents=local_prompt.assemble_contents(**local_prompt.variables[i])
    )
    print(response)

# Save a version
prompt1 = prompts.create_version(prompt=local_prompt)

print(prompt1)

# Example response
# Assembled prompt replacing: 1 instances of variable movie1, 1 instances of variable movie2
# Assembled prompt replacing: 1 instances of variable movie1, 1 instances of variable movie2
# Created prompt resource with id 12345678910.....
  • project: 프로젝트 ID 이러한 ID는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
  • location: Vertex AI 위치를 참고하세요.
  • prompt_name: 사용자가 만든 프롬프트의 표시 이름입니다(온라인 리소스에 저장된 경우).
  • prompt_data: PartsType 프롬프트로, 변수가 있는 템플릿이거나 변수가 없는 프롬프트일 수 있습니다.
  • variables: 변수 이름과 값이 포함된 사전 목록입니다.
  • generation_config: 생성 매개변수가 포함된 GenerationConfig 객체입니다.
  • model_name: Model Garden 모델 리소스 이름입니다. 또는 조정된 모델 엔드포인트 리소스 이름을 제공할 수 있습니다. 모델을 제공하지 않으면 기본 최신 모델이 사용됩니다.
  • safety_settings: 생성의 안전 설정을 포함하는 SafetySetting 객체입니다.
  • system_instruction: 시스템 명령을 나타내는 PartsType 객체입니다.

Prompt 객체를 만든 후에는 다양한 구성을 나타내는 프롬프트 데이터와 속성을 사용하여 콘텐츠를 생성할 수 있습니다.

프롬프트는 함수 호출도 지원합니다. 자세한 내용은 함수 호출 소개를 참고하세요.

프롬프트 저장

Google Cloud 콘솔에서 액세스할 수 있는 온라인 리소스에 프롬프트를 저장하려면 vertexai.preview.prompts.create_version() 메서드를 사용하세요. 이 메서드는 Prompt 객체를 입력으로 사용하고 온라인 상점에 새 버전의 프롬프트를 만듭니다. 온라인 리소스와 연결된 새 Prompt 객체가 반환됩니다. Prompt 객체에 적용된 모든 업데이트는 create_version()가 호출될 때까지 로컬입니다. 다음 코드 샘플은 프롬프트를 저장하는 방법을 보여줍니다.

Python용 Vertex AI SDK

from vertexai.preview import prompts

# Save Prompt to online resource.
# Returns a new Prompt object associated with the online resource.
prompt1 = prompts.create_version(prompt=prompt)

저장된 프롬프트 로드

온라인 리소스에 저장된 프롬프트를 로드하려면 vertexai.preview.prompts.get() 메서드를 사용합니다. 이 메서드는 프롬프트 ID를 입력으로 사용하고 해당 Prompt 객체를 반환합니다. 다음 코드 샘플은 저장된 프롬프트를 로드하는 방법을 보여줍니다.

Python용 Vertex AI SDK

from vertexai.preview import prompts 

# Get prompt
prompt = prompts.get(prompt_id="123456789")

Google Cloud 콘솔에서 생성된 프롬프트 검색

저장된 프롬프트를 업데이트하려면 먼저 get() 메서드를 사용하여 프롬프트를 로드하고 필요에 따라 속성을 수정한 다음 create_version() 메서드를 사용하여 업데이트된 프롬프트를 저장합니다. 그러면 업데이트된 정보가 포함된 새 버전의 프롬프트가 생성됩니다.

Python용 Vertex AI SDK

from vertexai.preview import prompts
from vertexai.preview.prompts import Prompt

# Get prompt
prompt = prompts.get(prompt_id="123456789")

# Generate content using the assembled prompt (a prompt without variables)
prompt.generate_content(
  contents=prompt.assemble_contents()
)

# Update prompt (changes are local until create_version is called)
prompt.prompt_data = "new prompt"

# Save Prompt to online resource. Since the prompt is associated with a prompt resource, it creates a new version under the same prompt_id. Returns a new Prompt object associated with the online resource
prompt1 = prompts.create_version(prompt=prompt)

프롬프트 나열

현재 Google Cloud 프로젝트에 저장된 모든 프롬프트의 표시 이름과 프롬프트 ID를 보려면 list_prompts()메서드를 사용하세요.

Python용 Vertex AI SDK

from vertexai.preview import prompts

prompts_metadata = prompts.list()

# Get a prompt from the list
prompt1 = prompts.get(prompt_id=prompts_metadata[0].prompt_id)

프롬프트 버전 나열

프롬프트 내에 저장된 모든 프롬프트 버전의 표시 이름과 버전 ID를 보려면 list_versions() 메서드를 사용하세요 .

Python용 Vertex AI SDK

from vertexai.preview import prompts

prompt_versions_metadata = prompts.list_versions(prompt_id="123456789")

# Get a specific prompt version from the versions metadata list
prompt1 = prompts.get(
    prompt_id=prompt_versions_metadata[3].prompt_id,
    version_id=prompt_versions_metadata[3].version_id
)

프롬프트 버전 복원

프롬프트 리소스에는 이전에 저장된 프롬프트 버전을 저장하는 버전 기록도 포함되어 있습니다. restore_version() 메서드를 사용하여 이전 버전을 최신 버전의 프롬프트로 복원할 수 있습니다. 이렇게 하면 get() 호출과 함께 사용하여 새로 복원된 버전을 가져오는 데 사용할 수 있는 PromptVersionMetadata가 반환됩니다.

Python용 Vertex AI SDK

from vertexai.preview import prompts

# Restore to prompt version id 1 (original)
prompt_version_metadata = prompts.restore_version(prompt_id="123456789", version_id="1")

# Fetch the newly restored latest version of the prompt
prompt1 = prompts.get(prompt_id=prompt_version_metadata.prompt_id)

프롬프트 삭제

프롬프트 ID와 연결된 온라인 리소스를 삭제하려면 delete() 메서드를 사용하세요.

Python용 Vertex AI SDK

from vertexai.preview import prompts

prompts.delete(prompt_id="123456789")