Les générateurs utilisent les derniers grands modèles de langage (LLM) génératifs de Google et les requêtes 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 en mode natif à partir d'agents conversationnels (Dialogflow CX) sans avoir à créer votre propre webhook externe. Vous pouvez configurer à l'aide du générateur pour effectuer une action que vous auriez normalement demandé à un LLM de faire.
Les générateurs sont particulièrement efficaces pour des tâches telles que la synthèse, l'extraction de paramètres, les transformations de données, etc. (voir les exemples ci-dessous).
Limites
Cette fonctionnalité est disponible pour les agents dans n'importe quelle langue Dialogflow, bien que les modèles disponibles puissent avoir des limites linguistiques plus restrictives. Consultez Vertex AI pour en savoir plus. des informations.
Comprendre les concepts des générateurs
Documentation Vertex AI contient des informations qu'il est important de comprendre lors de la création de générateurs pour Dialogflow:
- Modèles (Modèles de fondation Google et Versions et cycle de vie des modèles)
- Requêtes
- Commandes (appelées "valeurs de paramètre" dans Vertex AI)
Définir un générateur
Pour créer un générateur:
- Accédez à la console Dialogflow CX.
- Sélectionnez votre projet Google Cloud.
- Sélectionnez l'agent.
- Cliquez sur l'onglet Gestion.
- Cliquez sur Generators.
- Cliquez sur Créer.
- Saisissez un nom à afficher descriptif pour le générateur.
- Saisissez la requête textuelle, le modèle et les commandes comme décrit dans les concepts.
- Cliquez sur Enregistrer.
La requête textuelle est envoyée au modèle génératif lors du fulfillment au moment de l'exécution. La question ou la demande doit être claire pour que le modèle génère une une réponse satisfaisante.
Vous pouvez rendre la requête contextuelle en marquant les mots comme des espaces réservés en ajoutant un
$
avant le mot. Vous pourrez ensuite associer ces espaces réservés de requête du générateur aux paramètres de session lors du traitement. Ils seront remplacés par les valeurs des paramètres de session lors de l'exécution.
Il n'est pas nécessaire d'utiliser des espaces réservés spécifiques pour les invites de générateur associées aux paramètres de session. Ces invites du générateur intégré des espaces réservés sont
Terme | Définition |
---|---|
$conversation |
Conversation entre l'agent et l'utilisateur, à l'exception du tout dernier énoncé de l'utilisateur et des énoncés de l'agent par la suite. |
$last-user-utterance |
Dernier énoncé de l'utilisateur. |
Utiliser un générateur dans le fulfillment
Vous pouvez utiliser des générateurs lors du traitement (dans les routes, les gestionnaires d'événements, les paramètres, etc.).
Accédez à la section Générateurs du volet Traitement, puis développez-la. Cliquez ensuite sur Ajouter un générateur. Vous pouvez désormais sélectionner un générateur prédéfini ou en définir un sur place.
Après avoir sélectionné un générateur, vous devez associer l'invite de générateur des espaces réservés de l'invite avec les 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.
Notez que vous pouvez ajouter plusieurs générateurs dans une même exécution, qui sont exécutés en parallèle.
Le paramètre de sortie peut ensuite être utilisé ultérieurement, par exemple dans l'agent de réponse.
Tester un générateur
Le générateur peut être testé directement dans le simulateur.
Examples
Cette section fournit des exemples de cas d'utilisation pour les générateurs. Comme les générateurs Il s'agit d'une technologie générative basée sur les grands modèles de langage (LLM), les résultats individuels obtenus avec les exemples de requêtes suivants peuvent être différents à partir de la sortie documentée ici. Tous les résultats de requête renvoyés par Google sont au mieux.
Résumé de contenu
Cet exemple montre comment résumer un contenu.
Invite:
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 conversations
Cet exemple montre comment fournir un résumé de conversation.
Invite :
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:
Requête résolue:
Pour un exemple de conversation, la requête résolue envoyée au modèle génératif pourrait être :
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 Conversational Agents (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 se contente de fournir une réponse à partir des informations incluses dans ses données d'entraînement. Il n'y a aucune garantie. que la réponse est vraie ou à jour.
Incitation à répondre à des questions en se familiarisant avec soi-même
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 à une question avec les informations fournies
Toutefois, si vous souhaitez que le modèle réponde en fonction des informations que vous fournissez, vous pouvez simplement les ajouter à la requête. Cette méthode fonctionne si vous ne souhaitez pas fournir trop d'informations (par exemple, le menu d'un petit 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$
## 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:
Incitation à répondre à des questions à l'aide d'informations fournies de façon dynamique
Souvent, les informations sur lesquelles vous voulez que le modèle se base sa réponse sont trop nombreuses pour il suffit de le coller dans la requête. Dans ce cas, vous pouvez connecter le générateur un système de récupération d'informations comme une base de données ou un moteur de recherche, pour de manière dynamique les informations en fonction d'une requête. Il vous suffit d'enregistrer la sortie de ce système dans un paramètre et la connecter à un espace réservé dans requête.
# 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 ici logique d'utiliser un modèle génératif spécifiquement entraîné pour 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 escalader une demande à un agent humain. Les deux derniers les instructions de la requête évitent que le modèle soit 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 sur les clients
Cet exemple montre comment récupérer les informations et rechercher les données fournies au format chaîne ou 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 le atelier de programmation sur les générateurs.
Dépannage
Si vous souhaitez déboguer la fonctionnalité, vous pouvez inspecter l'invite d'entrée du grand modèle de langage (LLM) résolue dans le simulateur de la console Dialogflow :
Cliquez sur le bouton Réponse d'origine :
Recherchez le champ "Generators LLM Inputs" (Entrées LLM des générateurs). Lisez ces champs en texte brut et vérifiez si l'entrée du LLM est logique. Si une expression contient
$
, examinez l'entrée du simulateur et déterminez si$
dans les invites sont intentionnelles (par exemple,$
dansprice is $10
serait probablement intentionnelle, alors quevisit $city
ne le ferait probablement pas et impliquerait soit mauvaise utilisation ou un bug).Si vous ne voyez pas les entrées LLM génératives , contactez l'assistance.