Administración de instrucciones

Vertex AI ofrece herramientas para ayudar a administrar las plantillas y los datos de las instrucciones. Las plantillas de instrucciones se pueden controlar por versión y usar en conjunto con modelos generativos en Vertex AI. Cada instrucción se puede ensamblar y controlar su versión en Vertex AI Studio o en el SDK de Vertex AI.

El SDK de Vertex AI incluye el módulo vertexai.preview.prompts para que las instrucciones puedan funcionar con modelos generativos. El módulo vertexai.preview.prompts admite la capacidad de definir, guardar y administrar instrucciones para generar texto con Gemini.

Prompt

La clase Prompt representa una instrucción que se puede usar para generar texto con un método Gemini, que encapsula los datos, las variables, la configuración de generación y otra información relevante de la instrucción.

Para crear un objeto Prompt, usa el constructor vertexai.preview.prompts.Prompt(). Puedes definir los datos de la instrucción, las variables y otros parámetros de configuración dentro de este objeto.

Crea una instrucción local y genera contenido

SDK de Vertex AI para Python

Python

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: El ID del proyecto. Puedes encontrar estos ID en la página de bienvenida de la consola de Google Cloud.
  • location: Consulta las ubicaciones de Vertex AI.
  • prompt_name: Es el nombre visible de la instrucción que creó el usuario, si se almacena en un recurso en línea.
  • prompt_data: Es una instrucción PartsType, que puede ser una plantilla con variables o una instrucción sin variables.
  • variables: Es una lista de diccionarios que contiene los nombres y valores de las variables.
  • generation_config: Un objeto GenerationConfig que contiene parámetros para la generación.
  • model_name: Es el nombre del recurso del modelo de Model Garden. Como alternativa, se puede proporcionar un nombre de recurso de extremo de modelo ajustado. Si no se proporciona ningún modelo, se usa el modelo más reciente predeterminado.
  • safety_settings: Un objeto SafetySetting que contiene la configuración de seguridad para la generación.
  • system_instruction: Un objeto PartsType que representa la instrucción del sistema.

Después de crear un objeto Prompt, se pueden usar los datos y las propiedades de la instrucción que representan varias configuraciones para generar contenido.

Las instrucciones también admiten llamadas a funciones. Consulta Introducción a las llamadas a función para obtener más información.

Cómo guardar una instrucción

Para guardar una instrucción en un recurso en línea, al que se puede acceder en la consola de Google Cloud, usa el método vertexai.preview.prompts.create_version(). Este método toma un objeto Prompt como entrada y crea una versión nueva de la instrucción en la tienda en línea. Se muestra un nuevo objeto Prompt asociado con el recurso en línea. Cualquier actualización que se realice en un objeto Prompt es local hasta que se llame a create_version(). En la siguiente muestra de código, se muestra cómo guardar una instrucción:

SDK de Vertex AI para Python

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)

Carga una instrucción guardada

Para cargar una instrucción que se haya guardado en el recurso en línea, usa el método vertexai.preview.prompts.get(). Este método toma el ID de la instrucción como entrada y muestra el objeto Prompt correspondiente. En esta muestra de código, se muestra cómo cargar una instrucción guardada:

SDK de Vertex AI para Python

from vertexai.preview import prompts 

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

Cómo recuperar la instrucción creada en la consola de Google Cloud

Para actualizar una instrucción guardada, primero cárgala con el método get(), modifica sus propiedades según sea necesario y, luego, guarda la instrucción actualizada con el método create_version(). Esto crea una versión nueva de la instrucción con la información actualizada.

SDK de Vertex AI para Python

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)

Enumera las instrucciones

Para ver los nombres visibles y los IDs de las instrucciones de todas las instrucciones guardadas en el proyecto de Google Cloud actual, usa el método list_prompts().

SDK de Vertex AI para Python

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)

Enumera las versiones de instrucciones

Para ver los nombres visibles y los IDs de versión de todas las versiones de instrucciones guardadas en la instrucción, usa el método list_versions() .

SDK de Vertex AI para Python

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
)

Cómo restablecer una versión de instrucciones

Un recurso de instrucción también contiene el historial de versiones que almacena las versiones anteriores guardadas de la instrucción. Puedes usar el método restore_version() para restablecer una versión anterior como la versión más reciente de la instrucción. Esto muestra PromptVersionMetadata que se puede usar con una llamada a get() para recuperar la versión restaurada recientemente.

SDK de Vertex AI para Python

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)

Cómo borrar un mensaje

Para borrar el recurso en línea asociado con un ID de instrucción, usa el método delete().

SDK de Vertex AI para Python

from vertexai.preview import prompts

prompts.delete(prompt_id="123456789")