Réponses terrain pour les modèles PaLM 2

Ancrer PaLM sur vos données

Pour commencer à utiliser l'ancrage de modèle en IA générative sur Vertex AI, vous devez remplir certaines conditions préalables. Vous devez notamment créer une source de données Vertex AI Search, activer l'édition Enterprise pour votre data store et associer votre data store à votre application dans Vertex AI Search. La source de données sert de base pour l'ancrage de text-bison et chat-bison dans Vertex AI.

Vertex AI Search vous aide à démarrer avec une recherche ou des recommandations de haute qualité en fonction des données que vous fournissez. Pour en savoir plus sur Vertex AI Search, consultez la Présentation de Vertex AI Search.

Activer Vertex AI Search

  1. Dans la console Google Cloud, accédez à la page Search and Conversation.

    Search and Conversation

  2. Lisez et acceptez les conditions d'utilisation, puis cliquez sur Continuer et activer l'API.

Créer un data store dans Vertex AI Search

Pour ancrer vos modèles sur vos données sources, vous devez avoir préparé et enregistré vos données dans Vertex AI Search. Pour ce faire, vous devez créer un data store dans Vertex AI Search.

Si vous partez de zéro, vous devez préparer vos données pour l'ingestion dans Vertex AI Search. Pour commencer, consultez la page Préparer les données pour l'ingestion. Selon la taille de vos données, l'ingestion peut prendre de quelques minutes à plusieurs heures. Seuls les data stores non structurés sont compatibles avec l'ancrage. Une fois que vous avez préparé vos données pour l'ingestion, vous pouvez Créer un data store de recherche. Une fois que vous avez créé un data store, vous devez Créer une application de recherche à associer à ce data store et activer l'édition Enterprise.

Ancrer le modèle text-bison

L'ancrage est disponible pour les modèles text-bison et chat-bison. Les exemples suivants utilisent le modèle de fondation text-bison.

Si vous utilisez l'API, vous ancrez le text-bison lors de l'appel de la prédiction. Pour ce faire, vous ajoutez le groundingConfig facultatif et référencez l'emplacement et l'ID de votre data store.

Si vous ne connaissez pas votre ID de data store, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Vertex AI Search et cliquez sur Data stores dans le menu de navigation. <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" }="">Accéder à la page Data stores</a{:>
  2. Cliquez sur le nom de votre data store.
  3. Sur la page Données de votre data store, obtenez l'ID du data store.

REST

Pour tester une requête de texte à l'aide de l'API Vertex AI, envoyez une requête POST au point de terminaison du modèle de l'éditeur.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • PROMPT : une requête est une requête en langage naturel envoyée à un modèle de langage pour recevoir une réponse. Les requêtes peuvent contenir des questions, des instructions, des informations contextuelles, des exemples et du texte pour le modèle à terminer ou à continuer. (N'ajoutez pas de guillemets autour de la requête ici.)
  • TEMPERATURE : La température est utilisée pour l'échantillonnage pendant la génération des réponses, qui se produit lorsque topP et topK sont appliqués. La température permet de contrôler le degré de hasard dans la sélection des jetons. Les températures inférieures sont idéales pour les requêtes qui nécessitent une réponse moins ouverte ou créative, tandis que des températures plus élevées peuvent conduire à des résultats plus diversifiés ou créatifs. Une température de 0 signifie que les jetons de probabilité les plus élevés sont toujours sélectionnés. Dans ce cas, les réponses pour une requête donnée sont principalement déterministes, mais une petite quantité de variation est toujours possible.

    Si le modèle renvoie une réponse trop générique ou trop courte, ou s'il renvoie une réponse de remplacement, essayez d'augmenter la température.

  • MAX_OUTPUT_TOKENS : nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à quatre caractères. 100 jetons correspondent à environ 60-80 mots.

    Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.

  • TOP_P : Top-P modifie la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés de la valeur la plus élevée (voir top-K) à la moins probable jusqu'à ce que la somme de leurs probabilités soit égale à la valeur top-P. Par exemple, si les jetons A, B et C ont une probabilité de 0,3, 0,2 et 0,1 et que la valeur de top-P est supérieure à 0.5, le modèle sélectionne A ou B comme jeton suivant en utilisant la température et exclut C comme candidat.

    Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires.

  • TOP_K : Top-K modifie la façon dont le modèle sélectionne les jetons pour la sortie. Un top-K de 1 signifie que le prochain jeton sélectionné est le plus probable parmi tous les jetons du vocabulaire du modèle (également appelé décodage gourmand), tandis que le top-K de 3 signifie que le jeton suivant est sélectionné parmi les trois jetons les plus probables en utilisant la température.

    Pour chaque étape de sélection du jeton, les jetons top-K avec les probabilités les plus élevées sont échantillonnés. Les jetons sont ensuite filtrés en fonction du top-P avec le jeton final sélectionné à l'aide de l'échantillonnage de température.

    Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires.

  • SOURCE_TYPE : type de source de données sur lequel est ancré le modèle. Seul Vertex AI Search est compatible.
  • VERTEX_AI_SEARCH_DATA_STORE : chemin d'ID du data store Vertex AI Search.

    VERTEX_AI_SEARCH_DATA_STORE doit respecter le format suivant : Utilisez les valeurs fournies pour les emplacements et les collections : projects/{project_id}/locations/global/collections/default_collection/dataStores/{data_store_id}

    Remarque : L'ID de projet dans ce chemin d'ID de data store est l'ID de votre projet Vertex AI Search.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "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"
          }
      ]
    }
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON semblable à la suivante.

Console

Pour ancrer un modèle à partir de Vertex AI Studio, suivez ces instructions.

  1. Sélectionnez la fiche de modèle PaLM 2 pour le texte Bison ou PaLM 2 pour le Chat Bison dans 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" }="">Accéder à Model Garden</a{:>
  2. Dans la fiche de modèle, cliquez sur Ouvrir le concepteur de requête. Vertex AI Studio s'ouvre.
  3. Dans le panneau des paramètres, sélectionnez Avancés.
  4. Activez l'option Activer l'ancrage, puis sélectionnez Personnaliser.
  5. Dans la liste déroulante de la source de l'ancrage, sélectionnez Vertex AI Search.
  6. Saisissez le chemin d'accès du data store Vertex AI Search à votre contenu. Le chemin d'accès doit respecter le format suivant : projects/{project_id}/locations/global/collections/default_collection/dataStores/{data_store_id}.
  7. Saisissez votre requête et cliquez sur Envoyer.

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

from typing import Optional

import vertexai
from vertexai.language_models import (
    GroundingSource,
    TextGenerationModel,
    TextGenerationResponse,
)

def grounding(
    project_id: str,
    location: str,
    data_store_location: Optional[str],
    data_store_id: Optional[str],
) -> TextGenerationResponse:
    """Grounding example with a Large Language Model"""

    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")

    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}")

Étapes suivantes