גנרטורים

הגנרטורים משתמשים במודלים הגנרטיביים הגדולים של שפה (LLM) העדכניים ביותר של Google, ובהנחיות שאתם מספקים, כדי ליצור את ההתנהגות והתשובות של הנציג בזמן הריצה. המודלים הזמינים מסופקים על ידי Vertex AI.

הגנרטור מאפשר לבצע קריאה ל-LLM באופן מקורי מ-Dialogflow CX בלי ליצור webhook חיצוני משלכם. אתם יכולים להגדיר את הגנרטור כך שיבצע כל פעולה שבדרך כלל הייתם מבקשים מ-LLM לבצע.

הגנרטורים מתאימים למשימות כמו סיכום, חילוץ פרמטרים או טרנספורמציות של נתונים. בהמשך מפורטות דוגמאות.

מגבלות

התכונה הזו זמינה לנציגים בכל שפה של Dialogflow CX, אבל יכול להיות שהמודלים הזמינים מוגבלים יותר מבחינת השפות. מידע נוסף זמין במאמר Vertex AI.

הסבר על המושגים שקשורים לגנרטורים

במסמכי התיעוד של Vertex AI יש מידע שחשוב להבין כשיוצרים גנרטורים ל-Dialogflow CX:

הגדרת גנרטור

כדי ליצור מחולל:

  1. נכנסים למסוף Dialogflow CX.
  2. בוחרים את הפרויקט הרצוי.
  3. בוחרים את הנציג.
  4. לוחצים על הכרטיסייה ניהול.
  5. לוחצים על Generators.
  6. לוחצים על חדש.
  7. מזינים שם תצוגה תיאורי למחולל.
  8. מזינים את הנחיית הטקסט, המודל והפקדים כפי שמתואר במושגים.
  9. לוחצים על Save.

פרומפט טקסטואלי נשלח למודל הגנרטיבי במהלך מילוי הבקשה בזמן הריצה. כדי שהמודל ייצור תשובה מספקת, ההנחיה צריכה להיות שאלה או בקשה ברורה.

כדי להפוך את ההנחיה להקשרית, אפשר לסמן מילים כ-placeholder על ידי הוספת $ לפני המילה. בהמשך, תוכלו לשייך את ה-placeholders של ההנחיות למחולל לפרמטרים של הסשן במילוי הבקשה, והם יוחלפו בערכים של הפרמטרים של הסשן במהלך הביצוע.

הגדרת גנרטור
הגדרת מחולל

יש פלייסהולדרים מיוחדים להנחיות של מחולל שלא צריך לשייך לפרמטרים של סשן. בטבלה הבאה מוצגים פלייסהולדרים מובְנים להנחיות של מחולל.

X פריט
$conversation השיחה בין הנציג למשתמש, לא כולל האמירה האחרונה של המשתמש והאמירות של הנציג לאחר מכן.
$last-user-utterance האמירה האחרונה של המשתמש.

שימוש במחולל במילוי בקשות (fulfillment)

אפשר להשתמש בגנרטורים במהלך מילוי הבקשה (במסלולים, בגורמים מטפלים באירועים, בפרמטרים ועוד).

  1. עוברים לקטע Generators בחלונית Fulfillment ומרחיבים אותו.
  2. לוחצים על הוספת גנרטור.
  3. עכשיו אפשר לבחור מחולל מוגדר מראש או להגדיר מחולל חדש במקום.

אחרי שבוחרים מחולל, צריך לשייך את הפלייסהולדרים של ההנחיות לפרמטרים של הסשן. כדי לעשות את זה, צריך להגדיר את הפרמטר output שיכיל את התוצאה של הגנרטור אחרי ההפעלה. בשדה Output parameters, מזינים שם לפרמטר הפלט, לדוגמה 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:

הנחיה למענה על שאלות באמצעות מידע דינמי שסופק:

הרבה פעמים, המידע שאתם רוצים שהמודל יבסס עליו את התשובה שלו הוא ארוך מדי בשביל להדביק אותו בהנחיה. במקרה כזה, אפשר לחבר את המודל למערכת לאחזור מידע, כמו מסד נתונים או מנוע חיפוש, כדי לאחזר את המידע באופן דינמי על סמך שאילתה. אפשר לשמור את הפלט של המערכת הזו בפרמטר ולחבר אותו לפלייסהולדר בהנחיה.

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

  1. לוחצים על הכפתור התשובה המקורית:

    התשובה המקורית

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

  3. אם השדה "Generative LLM Inputs" לא מופיע, פנו לתמיכה.