Generatoren verwenden die neuesten generativen Large Language Models (LLMs) von Google und von Ihnen bereitgestellte Prompts, um das Verhalten und die Antworten von Agents zur Laufzeit zu generieren. Die verfügbaren Modelle werden von Vertex AI bereitgestellt.
Mit einem Generator können Sie ein LLM nativ aus Dialogflow CX aufrufen, ohne einen eigenen externen Webhook erstellen zu müssen. Sie können den Generator so konfigurieren, dass er alles erledigt, was Sie normalerweise von einem LLM ausführen würden.
Generatoren eignen sich hervorragend für Aufgaben wie Zusammenfassung, Parameterextraktion, Datentransformationen usw. (siehe Beispiele unten).
Beschränkungen
Dieses Feature ist derzeit für Agents in jeder Dialogflow-Sprache verfügbar. Beachten Sie, dass die verfügbaren Modelle restriktivere Spracheinschränkungen haben können. Weitere Informationen finden Sie unter Vertex AI.
Generatorkonzepte verstehen
Die Vertex AI-Dokumentation enthält Informationen, die beim Erstellen von Generatoren für Dialogflow wichtig sind:
Generator definieren
So erstellen Sie einen Generator:
- Zur Dialogflow CX Console
- Wählen Sie Ihr Google Cloud-Projekt aus.
- Wählen Sie den Agent aus.
- Klicken Sie auf den Tab Verwalten.
- Klicken Sie auf Generatoren.
- Klicken Sie auf Neu erstellen.
- Geben Sie einen aussagekräftigen Anzeigenamen für den Generator ein.
- Geben Sie den Text-Prompt, das Modell und die Steuerelemente ein, wie in Konzepte beschrieben.
- Klicken Sie auf Speichern.
Der Text-Prompt wird während der Auftragsausführung zur Laufzeit an das generative Modell gesendet. Es sollte eine eindeutige Frage oder Anfrage sein, damit das Modell eine zufriedenstellende Antwort generiert.
Sie können den Prompt kontextualisieren, indem Sie Wörter als Platzhalter markieren. Fügen Sie dazu ein $
vor dem Wort ein. Sie können diese Platzhalter für Generator-Prompts später bei der Auftragsausführung mit Sitzungsparametern verknüpfen und diese während der Ausführung durch die Sitzungsparameterwerte ersetzen.
Es gibt spezielle Platzhalter für Generator-Prompts, die nicht mit Sitzungsparametern verknüpft werden müssen. Diese Platzhalter für Eingabeaufforderung des integrierten Generators sind
Begriff | Definition |
---|---|
$conversation |
Die Unterhaltung zwischen dem Agent und dem Nutzer, ohne die letzte Äußerung des Nutzers. |
$last-user-utterance |
Die letzte Nutzeräußerung. |
Generator in der Auftragsausführung verwenden
Sie können während der Auftragsausführung Generatoren verwenden (in Routen, Event-Handlers, Parameter usw.).
Gehen Sie im Bereich Fulfillment (Auftragsausführung) zum Abschnitt Generators (Generatoren) und maximieren Sie ihn. Klicken Sie dann auf Generator hinzufügen. Wählen Sie einen vordefinierten Generator aus oder definieren Sie einen neuen.
Nachdem Sie einen Generator ausgewählt haben, müssen Sie die Platzhalter für Generator-Prompts der Eingabeaufforderung mit Sitzungsparametern verknüpfen. Außerdem müssen Sie den Ausgabeparameter definieren, der das Ergebnis des Generators nach der Ausführung enthält.
Sie können einer Auftragsausführung mehrere Generatoren hinzufügen, die parallel ausgeführt werden.
Der Ausgabeparameter kann dann später verwendet werden, beispielsweise in der Agent-Antwort.
Generator testen
Die Generator-Funktion kann direkt im Simulator getestet werden.
Beispiele
In diesem Abschnitt finden Sie Beispiele für Anwendungsfälle für Generatoren.
Inhaltszusammenfassung
In diesem Beispiel wird gezeigt, wie Inhalte zusammengefasst werden.
Prompt:
Your goal is to summarize a given text.
Text:
$text
A concise summary of the text in 1 or 2 sentences is:
Zusammenfassung von Unterhaltungen
In diesem Beispiel wird gezeigt, wie Sie eine Zusammenfassung der Unterhaltung bereitstellen.
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:
Geklärtes Prompt:
In einer Beispielunterhaltung könnte die aufgelöste Aufforderung, die an das generative Modell gesendet wird, so aussehen:
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's generators?
Agent: You can use all models that Vertex AI provides!
User: Thanks, thats amazing!
Summary:
Markdown-Formatierung
In diesem Beispiel wird gezeigt, wie Text in Markdown formatiert wird.
# 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
Question Answering
Diese Reihe von Beispielen zeigt, wie Sie Fragen mithilfe von Generatoren beantworten können.
Erstens können Sie sich zur Beantwortung der Frage einfach auf das interne Wissen des generativen Modells verlassen. Beachten Sie jedoch, dass das Modell einfach eine Antwort basierend auf Informationen gibt, die Teil der Trainingsdaten waren. Es gibt keine Garantie, dass die Antwort wahr oder aktuell ist.
Aufforderung zur Beantwortung der Frage durch Selbsterkenntnis
Your goal is to politely reply to a human with an answer to their question.
The human asked:
$last-user-utterance
You answer:
Fragen mithilfe der bereitgestellten Informationen beantworten
Wenn das Modell jedoch basierend auf den von Ihnen bereitgestellten Informationen antworten soll, können Sie dies einfach in den Prompt einfügen. Das funktioniert, wenn Sie nicht zu viele Informationen angeben möchten (z.B. eine kleine Speisekarte oder Kontaktdaten Ihres Unternehmens).
# 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:
Aufforderung zur Beantwortung der Frage mit dynamisch bereitgestellten Informationen
Häufig sind die Informationen, auf denen das Modell für die Antwort basieren soll, zu viel, um sie einfach in den Prompt einzufügen. In diesem Fall können Sie den Generator mit einem Informationsabrufsystem wie einer Datenbank oder einer Suchmaschine verbinden, um die Informationen basierend auf einer Abfrage dynamisch abzurufen. Sie können die Ausgabe dieses Systems einfach in einem Parameter speichern und mit einem Platzhalter in der Eingabeaufforderung verbinden.
# 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:
Codegenerierung
Dieses Beispiel zeigt, wie Sie einen Generator zum Schreiben von Code verwenden. Beachten Sie, dass es hier sinnvoll ist, ein generatives Modell zu verwenden, das speziell für das Generieren von Code trainiert wurde.
Eingabeaufforderung
# 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:
Eskalation an menschlichen Kundenservicemitarbeiter
Dieses Beispiel zeigt, wie die Eskalierung an einen menschlichen Kundenservicemitarbeiter abgewickelt wird. Die letzten beiden Anweisungen in der Eingabeaufforderung verhindern, dass das Modell zu ausführlich ist.
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:
Suchanfragen generieren
In diesem Beispiel wird gezeigt, wie eine Google-Suchanfrage des Nutzers optimiert werden kann.
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:
Abrufen von Kundendaten
In diesem Beispiel wird gezeigt, wie Sie im String- oder JSON-Format bereitgestellte Daten abrufen und suchen. Diese Formate werden häufig von Dialogflow-Sitzungsparametern verwendet.
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:
JSON-Objekt aktualisieren
In diesem Beispiel wird gezeigt, wie Sie ein JSON-Eingabeobjekt vom Nutzer (oder Webhook) akzeptieren und das Objekt dann basierend auf der Anfrage des Nutzers bearbeiten.
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
Weitere Informationen findest du im Generator-Codelab.