Générateurs

Les générateurs utilisent les derniers grands modèles de langage (LLM) génératifs de Google et les prompts que vous fournissez pour générer le comportement et les réponses de l'agent au moment de l'exécution. Les modèles disponibles sont fournis par Vertex AI.

Un générateur vous permet d'appeler un LLM nativement à partir de Dialogflow CX sans avoir à créer votre propre webhook externe. Vous pouvez configurer le générateur pour qu'il effectue toutes les tâches que vous demanderiez normalement à un LLM.

Les générateurs sont très efficaces pour effectuer certaines tâches comme la synthèse, l'extraction de paramètres et les données transformations. Consultez les exemples ci-dessous.

Limites

Cette fonctionnalité est disponible pour les agents dans n'importe quelle langue Dialogflow CX, bien que les modèles disponibles puissent présenter des limites linguistiques plus restrictives. Pour en savoir plus, consultez Vertex AI.

Comprendre les concepts de générateur

La documentation Vertex AI contient des informations importantes à comprendre lors de la création de générateurs pour Dialogflow CX :

Définir un générateur

Pour créer un générateur :

  1. Accédez à la console Dialogflow CX.
  2. Sélectionnez votre Google Cloud projet.
  3. Sélectionnez l'agent.
  4. Cliquez sur l'onglet Gestion.
  5. Cliquez sur Générateurs.
  6. Cliquez sur Créer.
  7. Saisissez un nom d'affichage descriptif pour le générateur.
  8. Saisissez le prompt textuel, le modèle et les contrôles comme décrit dans les concepts.
  9. Cliquez sur Enregistrer.

Le prompt textuel est envoyé au modèle génératif lors du fulfillment au moment de l'exécution. Il doit s'agir d'une question ou d'une demande claire pour que le modèle puisse générer une réponse satisfaisante.

Vous pouvez rendre le prompt contextuel en marquant des mots comme espaces réservés en ajoutant un $ avant le mot. Vous pourrez ensuite associer ces espaces réservés de prompt de générateur à des paramètres de session dans le fulfillment. Ils seront remplacés par les valeurs des paramètres de session lors de l'exécution.

Définir un générateur
Définir un générateur

Il existe des espaces réservés de prompt de générateur spéciaux qui n'ont pas besoin d'être associés à des paramètres de session. Ces espaces réservés de prompt de générateur intégrés sont les suivants :

Terme Définition
$conversation Conversation entre l'agent et l'utilisateur, à l'exclusion de la dernière expression de l'utilisateur et des expressions de l'agent par la suite.
$last-user-utterance Dernière expression de l'utilisateur.

Utiliser un générateur dans un fulfillment

Vous pouvez utiliser des générateurs lors du fulfillment (dans Itinéraires, Gestionnaires d'événements, Paramètres et plus).

Accédez à la section Générateurs du volet Fulfillment , puis développez-la. Cliquez ensuite sur Ajouter un générateur. Vous pouvez maintenant sélectionner un générateur prédéfini ou en définir un nouveau sur place.

Une fois que vous avez sélectionné un générateur, vous devez associer les espaces réservés de prompt de générateur du prompt à des paramètres de session. Pour ce faire, vous devez définir le paramètre de sortie qui contiendra le résultat du générateur après l'exécution. Saisissez un nom pour le paramètre de sortie dans le champ Paramètres de sortie, par exemple things-to-do. Ce paramètre de sortie sera écrit dans un paramètre de session que vous pourrez référencer ultérieurement.

Vous pouvez ensuite utiliser le paramètre de sortie pour référencer le résultat du générateur ultérieurement, par exemple dans la réponse de l'agent : I'd recommend doing $session.params.things-to-do.

Pour en savoir plus sur le format et l'utilisation des paramètres, consultez la documentation sur les paramètres.

Tester un générateur

La fonctionnalité générateur peut être testée directement dans le simulateur.

Tester le générateur dans le simulateur
Tester le générateur dans le simulateur

Exemples

Cette section fournit des exemples de cas d'utilisation pour les générateurs. Étant donné que les générateurs sont une technologie générative basée sur des grands modèles de langage (LLM), les résultats individuels obtenus à partir des exemples de prompts suivants peuvent être différents de ceux présentés ici. Tous les résultats de prompt renvoyés par Google sont fournis au mieux de ses capacités.

Synthèse de contenu

Cet exemple montre comment synthétiser du contenu.

Prompt:

Your goal is to summarize a given text.

Text:
$text

A concise summary of the text in 1 or 2 sentences is:

Synthèse de conversation

Cet exemple montre comment fournir un résumé de conversation.

Prompt:

You are an expert at summarizing conversations between a User and an Agent.
When providing the summary, always start with "Dear $email_address, the conversation summary is as follows:"
Provide a summary in a few bullet points.
Try to be as brief as possible with each bullet point,
only noting the key points of the conversation.
Output the summary in markdown format.

Conversation:
$conversation

Summary:

Prompt résolu :

Pour un exemple de conversation, le prompt résolu envoyé au modèle génératif peut être le suivant :

You are an expert at summarizing conversations between a User and an Agent.
When providing the summary, always start with "Dear joe@example.com conversation summary is as follows:"
Provide a summary in a few bullet points.
Try to be as brief as possible with each bullet point,
only noting the key points of the conversation.
Output the summary in markdown format.

Conversation:
Agent: Good day! What can I do for you today?
User: Hi, which models can I use in Dialogflow CX's generators?
Agent: You can use all models that Vertex AI provides!
User: Thanks, thats amazing!

Summary:

Mise en forme Markdown

Cet exemple montre comment mettre en forme du texte en Markdown.

# Instructions

You are presented with a text and your goal is to apply markdown formatting to text.

**NOTE:** Do not change the meaning of the text, only the formatting.

# Example

## Text

Generators allow you to use Googles latest generative models to format text,
or to create a summaries, or even to write code. What an amazing feature.

## Text in Markdown

*Generators* allow you to use Google's latest generative models to

*   format text
*   create a summaries
*   write code

What an amazing feature.

# Your current task

## Text

$text

## Text in Markdown

Systèmes de questions-réponses

Cette série d'exemples montre comment utiliser des générateurs pour répondre à des questions.

Tout d'abord, vous pouvez simplement vous appuyer sur les connaissances internes du modèle génératif pour répondre à la question. Notez toutefois que le modèle fournira simplement une réponse basée sur les informations qui faisaient partie de ses données d'entraînement. Il n'y a aucune garantie que la réponse soit vraie ou à jour.

Prompt pour un système de questions-réponses avec connaissances propres

Your goal is to politely reply to a human with an answer to their question.

The human asked:
$last-user-utterance

You answer:

Prompt pour un système de questions-réponses avec des informations fournies

Toutefois, si vous souhaitez que le modèle réponde en fonction des informations que vous fournissez, vous pouvez simplement les ajouter au prompt. Cela fonctionne si vous ne souhaitez pas fournir trop d'informations (par exemple, un petit menu de restaurant ou les coordonnées de votre entreprise).

# Instructions

Your goal is to politely answer questions about the restaurant menu.
If you cannot answer the question because it's not related to the restaurant
menu or because relevant information is missing from the menu, you politely
decline to answer.

# Restaurant menu:

## Starters
Salat 5$

## Main dishes
Pizza 10$

## Desserts
Ice cream 2$

# Examples

Question: How much is the pizza?
Answer: The pizza is 10$.

Question: I want to order the ice cream.
Answer: We do have ice cream! However, I can only answer questions about the menu.

Question: Do you have spaghetti?
Answer: I'm sorry, we do not have spaghetti on the menu.

# Your current task

Question: $last-user-utterance
Answer:

Prompt pour un système de questions-réponses avec des informations fournies de manière dynamique

Souvent, les informations sur lesquelles vous souhaitez que le modèle base sa réponse sont trop nombreuses pour être simplement collées dans le prompt. Dans ce cas, vous pouvez connecter le générateur à un système de récupération d'informations tel qu'une base de données ou un moteur de recherche, afin de récupérer dynamiquement les informations en fonction d'une requête. Vous pouvez simplement enregistrer la sortie de ce système dans un paramètre et la connecter à un espace réservé dans le prompt.

# Instructions

Your goal is to politely answer questions based on the provided information.
If you can't answer the question given the provided information, you politely
decline to answer.

# Provided information:
$information

Question: $last-user-utterance
Answer:

Génération de code

Cet exemple montre comment utiliser un générateur pour écrire du code. Notez qu'il est judicieux d'utiliser un modèle génératif spécialement entraîné pour générer du code.

Prompt

# Instructions:

Your goal is to write code in a given programming language solving a given problem.

Problem to solve:
$problem

Programming language:
$programming-language

# Solution:

Transfert à un agent humain

Cet exemple montre comment gérer le transfert à un agent humain. Les deux dernières instructions du prompt empêchent le modèle d'être trop verbeux.

Prompt:

# Instructions:

You are a polite customer service agent that handles requests
from users to speak with an operator.

Based on the $last-user-utterance,
respond to the user appropriately about their request to speak with an operator.
Always be polite and assure the user that you
will do your best to help their situation.

Do not ask the user any questions.
Do not ask the user if there is anything you can do to help them.

# Answer:

Génération de requêtes de recherche

Cet exemple montre comment optimiser une requête de recherche Google fournie par l'utilisateur.

Prompt:

# Instructions:

You are an expert at Google Search and using "Google Fu"
to build concise search terms that provide the highest quality results.
A user will provide an example query,
and you will attempt to optimize this to be the best Google Search query possible.

# Example:

User: when was covid-19 first started and where did it originated from?
Agent: covid-19 start origin

# Your task:

User: $text
Agent:

Récupération d'informations sur le client

Cet exemple montre comment effectuer une récupération d'informations et rechercher des données fournies au format chaîne ou JSON. Ces formats sont couramment utilisés par les paramètres de session Dialogflow CX.

Prompt:

You are a database engineer and specialize in extracting information
from both structured and unstructured data formats like CSV, SQL, JSON,
and also plain text.

Given a $user_db, extract the information requested
by the user from the $last-user-utterance

EXAMPLE:
user_db: {'customer_name': 'Patrick', 'balance': '100'}
User: What is my current account balance?
Agent: Your current balance is 100.

Begin!

user_db: $user_db
User: $last-user-utterance
Agent:

Mettre à jour un objet JSON

Cet exemple montre comment accepter un objet JSON d'entrée de l'utilisateur (ou d'un webhook), puis manipuler l'objet en fonction de la demande de l'utilisateur.

Prompt:

You are an expert Software Engineer
that specializes in the JSON object data structure.

Given some user $update_request and existing $json_object,
you will modify the $json_object based on the user's $update_request.

EXAMPLE:
json_object = { "a": 1, "b": 123 }
User: Add a new key/value pair to my JSON
Agent: What do you want to add?
User: c: cat
Agent: { "a": 1, "b": 123, "c": "cat"}

json_object = {"accounts": [{"username": "user1", "account_number": 12345}, {"username": "user2", "account_number": 98765}], "timestamp": "2023-05-25", "version":"1.0"}
User: Add a new value for user1
Agent: What do you want to add?
User: birthday, 12/05/1982
Agent: {"accounts": [{"username": "user1", "account_number": 12345, "birthday": "12/05/1982"}, {"username": "user2", "account_number": 98765}], "timestamp": "2023-05-25", "version":"1.0"}

json_object = $json_object
User: Add a new key value to my db
Agent: What do you want to add?
User: $last-user-utterance
Agent:

Codelab

Consultez également l'atelier de programmation sur les générateurs Codelab.

Dépannage

Si vous souhaitez déboguer la fonctionnalité, vous pouvez inspecter le prompt d'entrée du grand modèle de langage (LLM) résolu dans le simulateur de la console Dialogflow :

  1. Cliquez sur le bouton Réponse d'origine :

    Réponse d'origine

  2. Recherchez le champ "Entrées LLM des générateurs". Lisez ces champs en texte brut et vérifiez si l'entrée LLM est logique. Si une expression contient $, examinez l'entrée du simulateur et vérifiez si le $ dans les prompts est intentionnel (par exemple, $ dans price is $10 serait probablement intentionnel, tandis que visit $city ne le serait probablement pas et pourrait impliquer une mauvaise utilisation ou un bug).

  3. Si vous ne voyez pas le champ "Entrées LLM génératives ", contactez l'assistance.