Respuestas fundamentales para modelos PaLM 2

Fundamenta PaLM para tus datos

Para comenzar a usar los fundamentos de modelos de IA generativa en Vertex AI, debes completar algunos requisitos. Esto incluye crear una fuente de datos de Vertex AI Search, habilitar la edición Enterprise para tu almacén de datos y vincular el almacén de datos a tu app en Vertex AI Search. La fuente de datos sirve como base para los fundamentos text-bison y chat-bison en Vertex AI.

Vertex AI Search te ayuda a comenzar con búsquedas de o recomendaciones de alta calidad según los datos que proporciones. Para obtener más información sobre Vertex AI Search, consulta la Introducción a Vertex AI Search.

Habilita Vertex AI Search

  1. En la consola de Google Cloud, ve a la página Search & Conversation.

    Search & Conversation

  2. Lee y acepta las Condiciones del Servicio y, luego, haz clic en Continuar y activar la API.

Crea un almacén de datos en Vertex AI Search

Para fundamentar tus modelos en los datos de origen, debes preparar y guardar tus datos en Vertex AI Search. Para ello, debes crear un almacén de datos en Vertex AI Search.

Si comienzas desde cero, debes preparar los datos para la transferencia a Vertex AI Search. Consulta Prepara datos para la transferencia para comenzar. Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas. Solo se admiten almacenes de datos no estructurados para los fundamentos. Una vez que hayas preparado tus datos para la transferencia, puedes crear un almacén de datos de búsqueda. Después de crear un almacén de datos de forma correcta, crea una app de búsqueda para vincularla y activa la edición Enterprise.

Fundamenta el modelo text-bison

Los fundamentos están disponibles para los modelos text-bison y chat-bison. En los siguientes ejemplos, se usa el modelo de base text-bison.

Si usas la API, debes fundamentar text-bison cuando llamas a la predicción. Para hacerlo, debes agregar la groundingConfig opcional y hacer referencia a la ubicación de tu almacén de datos y el ID del almacén de datos.

Si no conoces el ID del almacén de datos, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Vertex AI Search y, en el menú de navegación, haz clic en Almacenes de datos. <a{: class="button button-primary" l10n-attrs-original-order="href,target,class,track-name,track-type" l10n-encrypted-href="BU2UnTd/bvXw0I31NoHStFtigmNHgUGOXn/QVSGplOhB4J1rwNxdLslXsSNCBkPOFvWIDj0tv6yobddHSWXSow==" target="console" track-name="consoleLink" track-type="tasks" }="">Go to the Data stores page</a{:>
  2. Haz clic en el nombre de tu almacén de datos.
  3. En la página Datos de tu almacén de datos, obtén el ID del almacén de datos.

REST

Para probar un mensaje de texto con la API de Vertex AI, envía una solicitud POST al extremo del modelo de publicador.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • PROMPT: Un mensaje es una solicitud de lenguaje natural que se envía a un modelo de lenguaje para recibir una respuesta. Los mensajes pueden contener preguntas, instrucciones, información contextual, ejemplos y texto para que el modelo se complete o continúe. (No agregues comillas alrededor del mensaje aquí).
  • TEMPERATURE: La temperatura se usa para las muestras durante la generación de respuesta, que se genera cuando se aplican topP y topK. La temperatura controla el grado de aleatorización en la selección de tokens. Las temperaturas más bajas son buenas para los mensajes que requieren una respuesta menos abierta o de creativa, mientras que las temperaturas más altas pueden generar resultados más diversos o creativos. Una temperatura de 0 significa que siempre se seleccionan los tokens de probabilidad más alta. En este caso, las respuestas para un mensaje determinado son, en su mayoría, deterministas, pero es posible que haya una pequeña cantidad de variación.

    Si el modelo muestra una respuesta demasiado genérica, demasiado corta o el modelo proporciona una respuesta de resguardo, intenta aumentar la temperatura.

  • MAX_OUTPUT_TOKENS: Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene aproximadamente cuatro caracteres. 100 tokens corresponden a casi 60 u 80 palabras.

    Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.

  • TOP_P: P superior cambia la manera en la que el modelo selecciona tokens para la salida. Los tokens se seleccionan desde el más alto (consulta K superior) hasta el menos probable, hasta que la suma de sus probabilidades sea igual al valor de P superior. Por ejemplo, si los tokens A, B y C tienen una probabilidad de 0.3, 0.2 y 0.1, y el valor P superior es 0.5, el modelo elegirá A o B como el siguiente token mediante la temperatura y excluirá a C como candidato.

    Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.

  • TOP_K: K superior cambia la manera en la que el modelo selecciona los tokens para el resultado. K superior a 1 significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación voraz), mientras que el K superior a 3 significa que el siguiente token se selecciona de los tres tokens más probables mediante la temperatura.

    Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.

    Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.

  • SOURCE_TYPE: el tipo de fuente de datos que fundamenta el modelo. Solo se admite Vertex AI Search.
  • VERTEX_AI_SEARCH_DATA_STORE: la ruta del ID del almacén de datos de Vertex AI Search.

    VERTEX_AI_SEARCH_DATA_STORE debe usar el siguiente formato. Usa los valores proporcionados para las ubicaciones y colecciones: projects/{project_id}/locations/global/collections/default_collection/dataStores/{data_store_id}

    Nota: El ID del proyecto en esta ruta del ID del almacén de datos es el ID del proyecto de Vertex AI Search.

HTTP method and URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison:predict

Cuerpo JSON de la solicitud:

{
  "instances": [
    { "prompt": "PROMPT"}
  ],
  "parameters": {
    "temperature": TEMPERATURE,
    "maxOutputTokens": MAX_OUTPUT_TOKENS,
    "topP": TOP_P,
    "topK": TOP_K,
    "groundingConfig": {
      "sources": [
          {
              "type": "VERTEX_AI_SEARCH",
              "vertexAiSearchDatastore": "VERTEX_AI_SEARCH_DATA_STORE"
          }
      ]
    }
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison:predict"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison:predict" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Console

Para fundamentar un modelo desde Vertex AI Studio, sigue estas instrucciones.

  1. Selecciona la tarjeta de modelo PaLM 2 para Text Bison o PaLM 2 para Chat Bison en Model Garden.

    <a{: class="button button-primary" l10n-attrs-original-order="href,target,class,track-name,track-type" l10n-encrypted-href="kDsq5VTi6ASK/vNFlrWmnltigmNHgUGOXn/QVSGplOi71dheYhG9dKuv3S+0ajmQkfzB9oP/Mo2x7xIe1klR5Wv+Luwn/kGU2mxRbPxpxolc9gBRk3QOdMg5rdH6ChX7" target="console" track-name="consoleLink" track-type="tasks" }="">Go to the Model Garden</a{:>
  2. En la tarjeta de modelo, haz clic en Abrir diseño de mensajes. Se abre Vertex AI Studio.
  3. En el panel de parámetros, selecciona Avanzada.
  4. Activa o desactiva la opción Enable Grounding y selecciona Personalizar.
  5. En el menú desplegable de la fuente de los fundamentos, selecciona Vertex AI Search.
  6. Ingresa la ruta de acceso del almacén de datos de Vertex AI Search a tu contenido. La ruta debe tener el siguiente formato: projects/{project_id}/locations/global/collections/default_collection/dataStores/{data_store_id}.
  7. Ingresa el mensaje y haz clic en Enviar.

Python

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.

import vertexai

from vertexai.language_models import GroundingSource, TextGenerationModel

# TODO(developer): Update values for project_id, location
vertexai.init(project=project_id, location=location)

# TODO developer - override these parameters as needed:
parameters = {
    "temperature": 0.7,  # Temperature controls the degree of randomness in token selection.
    "max_output_tokens": 256,  # Token limit determines the maximum amount of text output.
    "top_p": 0.8,  # Tokens are selected from most probable to least until the sum of their probabilities equals the top_p value.
    "top_k": 40,  # A top_k of 1 means the selected token is the most probable among all tokens.
}

model = TextGenerationModel.from_pretrained("text-bison@002")

# TODO(developer): Update values for data_store_location, data_store_id
if data_store_id and data_store_location:
    # Use Vertex AI Search data store
    grounding_source = GroundingSource.VertexAISearch(
        data_store_id=data_store_id, location=data_store_location
    )
else:
    # Use Google Search for grounding (Private Preview)
    grounding_source = GroundingSource.WebSearch()

response = model.predict(
    "What are the price, available colors, and storage size options of a Pixel Tablet?",
    grounding_source=grounding_source,
    **parameters,
)
print(f"Response from Model: {response.text}")
print(f"Grounding Metadata: {response.grounding_metadata}")

¿Qué sigue?