הגנרטורים משתמשים במודלים הגנרטיביים הגדולים של השפה (LLM) העדכניים ביותר של Google, ובהנחיות שאתם מספקים, כדי ליצור התנהגות ותשובות של סוכנים בזמן הריצה. המודלים הזמינים מסופקים על ידי Vertex AI.
גנרטור מאפשר לכם לבצע קריאה ל-LLM באופן מקורי מ-Dialogflow CX בלי שתצטרכו ליצור webhook חיצוני משלכם. אתם יכולים להגדיר את הגנרטור כך שיבצע כל פעולה שבדרך כלל מבקשים מ-LLM לבצע.
גנרטורים מצוינים במשימות כמו סיכום, חילוץ פרמטרים, טרנספורמציות של נתונים וכן הלאה. דוגמאות בהמשך.
מגבלות
התכונה הזו זמינה לסוכנים בכל שפה ב-Dialogflow CX, אבל יכול להיות שיש מגבלות שפה מחמירות יותר במודלים הזמינים. מידע נוסף זמין במאמר בנושא Vertex AI.
הסבר על מושגים שקשורים למחוללים
במסמכי התיעוד של Vertex AI יש מידע חשוב שצריך להכיר כשיוצרים מחוללים ל-Dialogflow CX:
- מודלים (מודלים בסיסיים של Google וגרסאות של מודלים ומחזור החיים שלהם)
- הנחיות
- אמצעי בקרה (שנקראים 'ערכי פרמטרים' ב-Vertex AI)
הגדרת גנרטור
כדי ליצור גנרטור:
- עוברים אל מסוף Dialogflow CX.
- בוחרים את הפרויקט Google Cloud .
- בוחרים את הנציג.
- לוחצים על הכרטיסייה ניהול.
- לוחצים על Generators (גנרטורים).
- לוחצים על חדש.
- מזינים שם תיאורי לגנרטור.
- מזינים את הנחיית הטקסט, המודל והאמצעים לשליטה כמו שמתואר במושגים.
- לוחצים על Save.
ההנחיה הטקסטואלית נשלחת למודל הגנרטיבי במהלך ההשלמה בזמן הריצה. השאלה או הבקשה צריכות להיות ברורות כדי שהמודל יוכל ליצור תשובה מספקת.
כדי להוסיף הקשר להנחיה, אפשר לסמן מילים כמחזיקי מקום על ידי הוספת $ לפני המילה. אפשר לשייך את ה-placeholders של ההנחיה ליצירת תמונות לפרמטרים של הסשן בשלב השלמת הבקשה, והם יוחלפו בערכים של הפרמטרים של הסשן במהלך ההפעלה.
יש placeholders מיוחדים להנחיות למחולל שלא צריך לשייך לפרמטרים של סשן. ה-placeholders המובנים האלה להנחיות לגנרטורים
| מונח | הגדרה |
|---|---|
$conversation |
השיחה בין הסוכן לבין המשתמש, לא כולל את האמירה האחרונה של המשתמש ואת האמירות של הסוכן לאחר מכן. |
$last-user-utterance |
האמירה האחרונה של המשתמש. |
שימוש בגנרטור בתהליך השלמת ההזמנה
אפשר להשתמש בגנרטורים במהלך מילוי הבקשה (בקטעים Routes, Event-handlers, Parameters ועוד).
עוברים לקטע Generators בחלונית Fulfillment ומרחיבים אותו. אחר כך לוחצים על הוספת גנרטור. עכשיו אפשר לבחור גנרטור מוגדר מראש או להגדיר גנרטור חדש במקום.
אחרי שבוחרים גנרטור, צריך לשייך את ה-placeholders של ההנחיה לגנרטור של ההנחיה לפרמטרים של סשן. כדי לעשות זאת, צריך להגדיר את פרמטר הפלט שיכיל את התוצאה של הגנרטור אחרי ההרצה. בשדה פרמטרים של פלט, מזינים שם לפרמטר הפלט, לדוגמה things-to-do. פרמטר הפלט הזה ייכתב לפרמטר של סשן שאפשר יהיה להפנות אליו בעתיד.
אחר כך תוכלו להשתמש בפרמטר הפלט כדי להפנות לתוצאת הגנרטור בהמשך, למשל בתשובת הסוכן:
I'd recommend doing $session.params.things-to-do.
מידע נוסף על הפורמט והשימוש בפרמטרים זמין במאמר בנושא פרמטרים.
בדיקת מחולל
אפשר לבדוק את התכונה generator ישירות בסימולטור.
דוגמאות
בקטע הזה מופיעות דוגמאות לתרחישי שימוש בגנרטורים. מכיוון שהגנרטורים הם טכנולוגיה גנרטיבית שמבוססת על מודלים גדולים של שפה (LLM), התוצאות האישיות שלכם מהשימוש בהנחיות לדוגמה הבאות עשויות להיות שונות מהפלט שמתועד כאן. כל התוצאות של ההנחיות שמתקבלות מ-Google הן תוצאות משוערות.
סיכום תוכן
בדוגמה הזו אפשר לראות איך מסכמים תוכן.
הנחיה:
Your goal is to summarize a given text.
Text:
$text
A concise summary of the text in 1 or 2 sentences is:
סיכום שיחות
בדוגמה הזו מוסבר איך מספקים סיכום של שיחה.
הנחיה:
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:
הנחיה שטופלה:
לדוגמה, שיחה יכולה להתנהל כך: ההנחיה שתישלח למודל הגנרטיבי יכולה להיות:
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:
עיצוב Markdown
בדוגמה הזו מוסבר איך לעצב טקסט ב-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
מענה לשאלות
בסדרת הדוגמאות הזו מוסבר איך להשתמש בגנרטורים כדי לענות על שאלות.
קודם כל, אפשר פשוט להסתמך על הידע הפנימי של המודל הגנרטיבי כדי לענות על השאלה. עם זאת, חשוב לזכור שהמודל פשוט יספק תשובה על סמך מידע שהיה חלק מנתוני האימון שלו. אין ערובה לכך שהתשובה נכונה או עדכנית.
הנחיה למענה לשאלות עם ידע עצמי
Your goal is to politely reply to a human with an answer to their question.
The human asked:
$last-user-utterance
You answer:
הנחיה למענה לשאלות עם מידע שסופק
עם זאת, אם רוצים שהמודל ייתן תשובה על סמך מידע שמספקים לו, אפשר פשוט להוסיף את המידע להנחיה. האפשרות הזו מתאימה אם אין לכם הרבה מידע לספק (למשל תפריט קטן של מסעדה או פרטי יצירת קשר של החברה).
# 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:
הנחיה למענה לשאלות עם מידע דינמי
לפעמים, המידע שאתם רוצים שהמודל יתבסס עליו בתשובה הוא רב מדי כדי להדביק אותו בהנחיה. במקרה כזה, אפשר לחבר את הגנרטור למערכת לאחזור מידע, כמו מסד נתונים או מנוע חיפוש, כדי לאחזר את המידע באופן דינמי על סמך שאילתה. פשוט שומרים את הפלט של המערכת הזו בפרמטר ומקשרים אותו ל-placeholder בהנחיה.
# 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:
יצירת קוד
בדוגמה הזו מוסבר איך להשתמש בגנרטור כדי לכתוב קוד. שימו לב שכאן כדאי להשתמש במודל גנרטיבי שאומן במיוחד ליצירת קוד.
הנחיה
# 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:
העברה לנציג תמיכה אנושי
בדוגמה הזו מוסבר איך להעביר את השיחה לנציג שירות אנושי. שתי ההוראות האחרונות בהנחיה מונעות מהמודל להיות מפורט מדי.
הנחיה:
# 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:
יצירת שאילתות חיפוש
בדוגמה הזו מוצג אופן האופטימיזציה של שאילתת חיפוש ב-Google שסופקה על ידי המשתמש.
הנחיה:
# 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:
אחזור נתוני לקוחות
בדוגמה הזו מוסבר איך לאחזר מידע ולחפש נתונים שמוצגים בפורמט מחרוזת או JSON. הפורמטים האלה משמשים בדרך כלל לפרמטרים של סשנים ב-Dialogflow CX.
הנחיה:
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
בדוגמה הזו אפשר לראות איך מקבלים אובייקט JSON כקלט מהמשתמש (או מ-webhook), ואז משנים את האובייקט בהתאם לבקשת המשתמש.
הנחיה:
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
אפשר גם לעיין ב-Codelab בנושא מחוללים.
פתרון בעיות
אם רוצים לנפות באגים בתכונה, אפשר לבדוק את ההנחיה שהוזנה למודל שפה גדול (LLM) שנפתרה בסימולטור של Dialogflow Console:
לוחצים על הלחצן התשובה המקורית:

מאתרים את השדה Generators LLM Inputs (קלט למודלים גדולים של שפה (LLM) של מחוללים). קוראים את השדות האלה כטקסט רגיל ובודקים אם הקלט של ה-LLM הגיוני. אם יש ביטוי שמכיל את התו
$, צריך לבדוק את הקלט של הסימולטור ולהבהיר אם התו$בהנחיות הוא מכוון (לדוגמה,$ב-price is $10כנראה מכוון, בעוד ש-visit $cityכנראה לא מכוון ויכול להיות שהוא מצביע על שימוש לא תקין או על באג).אם השדה 'קלט ל-LLM גנרטיבי' לא מופיע, פנו לתמיכה.