Générateurs

Les générateurs utilisent les derniers grands modèles de langage génératifs (LLM) de Google et les invites 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 de manière native à partir de Dialogflow CX sans avoir à créer votre propre webhook externe. Vous pouvez configurer le générateur pour qu'il effectue n'importe quelle opération que vous auriez normalement demandé à un LLM.

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

Limites

Cette fonctionnalité est actuellement disponible pour les agents dans toutes les langues Dialogflow. Notez que les modèles disponibles peuvent présenter des limites de langage plus restrictives. Pour en savoir plus, consultez la page Vertex AI.

Comprendre les concepts des générateurs

La documentation de Vertex AI contient des informations qu'il est important de comprendre lors de la création de générateurs pour Dialogflow:

Définir un générateur

Pour créer un générateur:

  1. Accéder à la console Dialogflow CX
  2. Sélectionnez votre projet Google Cloud.
  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 à afficher descriptif pour le générateur.
  8. Saisissez l'invite textuelle, le modèle et les commandes, comme décrit dans la section Concepts.
  9. Cliquez sur Enregistrer.

L'invite textuelle est envoyée au modèle génératif lors du traitement au moment de l'exécution. La question ou la demande doit être claire pour que le modèle génère une réponse satisfaisante.

Vous pouvez rendre la requête contextuelle en marquant des mots comme espaces réservés en ajoutant un $ avant le mot. Vous pouvez ensuite associer ces espaces réservés pour les invites du générateur aux paramètres de session dans le traitement. Ils sont alors 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 spéciaux pour les invites de générateur qui n'ont pas besoin d'être associés aux paramètres de session. Ces espaces réservés pour les invites de générateurs intégrés sont

Terme Définition
$conversation Conversation entre l'agent et l'utilisateur, à l'exclusion du tout dernier énoncé de l'utilisateur.
$last-user-utterance Dernier énoncé de l'utilisateur.

Utiliser un générateur dans le traitement

Vous pouvez utiliser des générateurs pendant le traitement (dans les routes, les gestionnaires d'événements, les paramètres, etc.).

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

Après avoir sélectionné un générateur, vous devez associer les espaces réservés d'invite de générateur de l'invite aux paramètres de session. De plus, vous devez définir le paramètre de sortie qui contiendra le résultat du générateur après l'exécution.

Utiliser un générateur
Utiliser le générateur dans le traitement

Notez que vous pouvez ajouter plusieurs générateurs dans un même traitement, qui seront exécutés en parallèle.

Le paramètre de sortie peut ensuite être utilisé ultérieurement, par exemple dans la réponse de l'agent.

Utiliser la sortie du générateur
Utiliser la sortie du générateur

Tester un générateur

La fonctionnalité de 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

Examples

Cette section fournit des exemples de cas d'utilisation pour les générateurs.

Résumé du contenu

Cet exemple montre comment résumer du contenu.

Invite:

Your goal is to summarize a given text.

Text:
$text

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

Résumé des conversations

Cet exemple montre comment fournir un résumé d'une conversation. Notez que nous pouvons spécifier explicitement les préfixes de la conversation dans l'historique de la conversation et ajouter l'énoncé $last-user-utterance, car il n'est pas inclus dans $conversation.

Invite:

Your goal is to summarize a given conversation between a Human and an AI.

Conversation:
${conversation USER:"Human:" AGENT:"AI:"}Human: $last-user-utterance

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

Requête résolue:

Pour un exemple de conversation, la requête résolue envoyée au modèle génératif peut être:

Your goal is to summarize a given conversation between a Human and an AI.

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

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

Formatage 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 figurant dans ses données d'entraînement. Rien ne garantit que la réponse est vraie ou à jour.

Demander à répondre à des questions en s'auto-connaissance

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

The human asked:
$last-user-utterance

You answer:

Demander à répondre à des questions en fournissant les informations fournies

Toutefois, si vous souhaitez que le modèle réponde en fonction des informations que vous fournissez, il vous suffit de l'ajouter à l'invite. Cela fonctionne si vous n'avez pas trop d'informations à fournir (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 is 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$

## Deserts
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:

Demander à répondre à des questions à l'aide d'informations dynamiques fournies

Souvent, les informations sur lesquelles vous voulez que le modèle base sa réponse sont trop nombreuses pour être simplement collées dans la requête. 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, pour récupérer dynamiquement les informations en fonction d'une requête. Il vous suffit d'enregistrer la sortie de ce système dans un paramètre et de la connecter à un espace réservé dans l'invite.

# Instructions

Your goal is to politely answer questions based on the provided information.
If you cannot answer the question given the provided information, you plitely
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. Dans ce cas, il est judicieux d'utiliser un modèle génératif spécialement entraîné à générer du code.

Prompt (Invite)

# 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:

Escalade à un agent humain

Cet exemple montre comment gérer l'escalade à un agent humain. Les deux dernières instructions de l'invite empêchent le modèle d'être trop détaillé.

Invite:

# 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.

Invite:

# 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 client

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

Invite:

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 webhook), puis manipuler l'objet en fonction de la requête de l'utilisateur.

Invite:

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:

Atelier de programmation

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