בדף הזה מוסבר על שליפה מבוססת-סוכן ואיך משתמשים בה עם השיטה stream answers.
מידע על שליפה באמצעות סוכנים
אחזור נתונים באמצעות סוכנים בשילוב עם שיטת התשובות בסטרימינג יכול להניב תוצאות טובות יותר בתרחישי שימוש מסוימים. לדוגמה, כדי להפעיל אחזור נתונים מרובה מעברים לאפליקציות עם כמה מאגרי נתונים, או כדי להתאים אישית את יצירת התשובות לסוגים שונים של שאילתות.
שימוש באחזור מבוסס-סוכן מוסיף מורכבות מסוימת לאפליקציות, אבל בתמורה הוא מאפשר שליטה רבה יותר בתוצאות.
חיפוש מבוסס סוכנים כולל סוכן מוגדר מראש שאפשר להשתמש בו כדי להתאים אישית את ההתנהגות של מנוע חיפוש. האפשרות הזו מאפשרת התאמה אישית רבה יותר מזו שזמינה דרך ממשק המשתמש של הגדרות האפליקציה או דרך שיטת השליפה של תשובות בזמן אמת בלי שליפה מבוססת-סוכן.
חיפוש משולב עם שליפה של מידע על ידי סוכן ובלעדיה
שליפה מבוססת-סוכן שימושית במיוחד לאפליקציות חיפוש משולבות. בלי אחזור נתונים מבוסס-סוכן, החיפוש משתמש ב-fan-out במעבר יחיד, שמבצע שאילתות בכל מאגרי הנתונים שלכם בבת אחת. לעומת זאת, אחזור מידע באמצעות סוכנים מאפשר חיפוש רב-שלבי. הסוכן מתכנן ומבצע חיפושים באופן עקבי, ובוחר את הכלים הכי טובים לכל שלב. הוא יכול לשלב תוצאות מכמה מאגרי נתונים של חיפוש באמצעות סוכנים, ולהשתמש גם בכלים כמו חיפוש Google ומפות Google.
לדוגמה, יש לכם מאגרי נתונים נפרדים למדיניות החברה הגלובלית ולפרטים של משרדים אזוריים. משתמש שואל: "מהם כללי התאימות למשרד שלנו בטוקיו?":
ללא אחזור מבוסס-סוכן: השאילתה מתבצעת בו-זמנית במאגר המדיניות ובמאגר המשרד האזורי עם מחרוזת השאילתה המלאה. יכול להיות שתקבלו תוצאות חלקיות.
עם אחזור מבוסס-סוכן: הסוכן מתכנן את הביצוע. קודם הוא מאחזר פרטים על המשרד בטוקיו מהחנות האזורית. לאחר מכן, בהתבסס על ההקשר הספציפי הזה, הוא מבצע חיפוש ממוקד שני במאגר המדיניות.
הסוכן מסכם את הממצאים האלה לתשובה אחת עקבית ומדויקת יותר.
אחזור מבוסס-סוכן מאפשר גם לבצע שאילתות חיפוש מרובות (שאלות המשך) באפליקציות חיפוש משולב. בלי אחזור נתונים מבוסס-סוכן, חיפוש רב-שלבי פועל רק עם אפליקציות של מאגר נתונים יחיד. כדי לשמור את הקשר השיחה בכמה תורות, אפשר לשלב אחזור מבוסס-סוכן עם סשן של Agent Platform.
סיווג שאילתות בהתאמה אישית
השיטות answer ו-streaming answer מספקות שני סוגים של סיווג שאילתות: ADVERSARIAL_QUERY ו-NON_ANSWER_SEEKING_QUERY.
אחזור באמצעות סוכן מאפשר לכם להגדיר סוגי סיווג נוספים שמתאימים לתהליכי העבודה של העסק. המערכת משתמשת בסיווג כדי לקבוע את כוונת המשתמש ומנתבת את הבקשה לתצורת הסוכן המתאימה.
לדוגמה, מהשאילתה אתם מסיקים שהכוונה של השאילתה היא לעקוב אחרי הזמנה, וציינתם סיווג של TRACK_ORDER. במקום להריץ חיפוש כללי בכל מאגרי הנתונים, המערכת טוענת סוכן מיוחד שמצויד בכלים ובנתונים שדרושים כדי לאחזר את סטטוס המשלוח.
דרכים להפעיל ולאחזר מידע באמצעות סוכנים
יש שתי דרכים להפעיל שליפה מבוססת-סוכן:
סוכן תשובות מוגדר מראש של Google: אם כבר יש לכם אפליקציית חיפוש בחיפוש הסוכן, אתם יכולים להפעיל אחזור מבוסס-סוכן על ידי הגדרת
enable_agent_invocation=trueבבקשות API כשאתם שולחים שאילתות לאפליקציה. במקרה הזה, הגדרת ההצגה של החיפוש הקיימת נשארת.אפליקציה מותאמת אישית במצב AI: כשיוצרים אפליקציה של חיפוש מבוסס סוכנים, מגדירים סוג אחר של הגדרת הצגה, הגדרת ההצגה
default_agent_answer. יכול להיות שגם יקראו לזה מנוע מותאם אישית במצב AI, כי המילים 'אפליקציה' ו'מנוע' משמשות לסירוגין בחיפוש סוכנים.
לפני שמתחילים
לפני שמשתמשים באחזור מבוסס-סוכן, צריך לבצע את הפעולות הבאות:
הגדרת מנוע הסקת מסקנות לסשנים מרובי תורות
כדי לשמור את הקשר של השיחה בכמה תורות, צריך ליצור מנוע (נקרא גם מנוע חשיבה רציונלית) של Agent Runtime ב-Gemini Enterprise Agent Platform.
כששולחים בקשת streamAnswer, מעבירים את שם המשאב של Agent Runtime כשדה streamAnswer בבקשת streamAnswer.reasoningEngine
מפעילים את Agent Platform בפרויקט Google Cloud .
יוצרים מופע של Agent Runtime (שנקרא גם מנוע הנימוקים) באמצעות Agent Engine REST API (או הערכה לפיתוח סוכנים). המופע מארח את הסשנים שמשמשים את השיטה
streamAnswer.הפורמט של שם המשאב של המופע הוא:
projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID
נותנים לסוכן השירות של Discovery Engine גישה למנוע הנימוקים על ידי הקצאת התפקיד
roles/aiplatform.reasoningEngineServiceAgentלחשבון השירות של Discovery Engine:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
כאשר
PROJECT_NUMBERהוא מספר הפרויקט שמארח את מנוע הנימוקים. ההרשאה הזו מאפשרת לשרת הקצה העורפי של הסטרימינג ליצור אירועים, לקרוא אותם ולצרף אותם להפעלות בשמכם.בודקים את המכסות הרלוונטיות. סשנים שמגובים על ידי Agent Runtime צורכים מכסות מ-Agent Platform API. המכסות הרלוונטיות הן:
aiplatform.googleapis.com/session_write_requests— יצירה, מחיקה או עדכון של סשנים של Agent Runtime לדקה.
aiplatform.googleapis.com/session_event_append_requests— append event to Agent Runtime sessions per minute.
מידע נוסף זמין במאמר בנושא מכסות של Gemini Enterprise Agent Platform Agent Engine.
חשוב לרשום את שם המשאב של Agent Runtime, כי צריך להעביר אותו כשדה
reasoningEngineבבקשתstreamAnswer.
אופציונלי: הגדרת אפליקציה במצב AI בהתאמה אישית
כברירת מחדל, שליפה מבוססת-סוכן משתמשת בסוכן התשובות המוגדר מראש של Google. הסיווג הזה מחלק את השאילתות לכוונות DEFAULT_ANSWER_SEEKING וDO_NOT_ANSWER.
אתם יכולים ליצור אפליקציה מותאמת אישית במצב AI כשאתם רוצים להתאים אישית כלים או להוסיף תמיכה בסוגים חדשים של כוונות שאילתה. כל קהל בהתאמה אישית עם כוונת רכישה (או מסגרת) מצהיר על התנאים שבהם הסוכן מסווג שאילתה לפי הכוונה, ועל ההוראות והכלים שבהם הסוכן משתמש כדי לטפל בה.
יוצרים את המנוע באמצעות שיטת ה-REST
engines.createעם בלוקengine_config.answer_agent.המבנה של ההגדרות הוא כזה:
engine { name: "YOUR_AI_MODE_ENGINE" display_name: "YOUR_AI_MODE_ENGINE_DISPLAY_NAME" engine_config { answer_agent { frames { vertical_intent: "YOUR_CUSTOM_INTENT" vertical_intent_prompt { instructions: "Instructions for when to classify a user query as YOUR_CUSTOM_INTENT." } initial_prompt { instructions: "Instructions for the agent on how to process a user query classified as YOUR_CUSTOM_INTENT." tools { discovery_engine_search_tool_config { serving_config: "YOUR_SEARCH_SERVING_CONFIG_1" page_size: 10 } tool_description: "This tool can help search corpus 1." } tools { discovery_engine_search_tool_config { serving_config: "YOUR_SEARCH_SERVING_CONFIG_2" page_size: 10 } tool_description: "This tool can help search corpus 2." } } } } } } engine_id: "SAMPLE_MULTI_SEARCH_RETRIEVAL"
אחרי שיוצרים את המנוע, צריך לנתב את הבקשות דרך הגדרת ההגשה שלו
default_agent_answer:projects/*/locations/*/collections/*/engines/YOUR_AI_MODE_ENGINE/servingConfigs/default_agent_answer
לקבלת עזרה בעיצוב או ברישום של אפליקציה בהתאמה אישית במצב AI, אפשר לפנות אל התמיכה.
הזרמת תשובה באמצעות אחזור מידע מבוסס-סוכן
הפקודה הבאה מראה איך להפעיל את השיטה streaming answer עם הפעלת אחזור מידע על ידי סוכן. בדומה לפלט בלי אחזור מבוסס-סוכן, הקריאה הזו מעבירה בסטרימינג תשובה שנוצרה בצורה של סדרה של תגובות JSON.
אם הגדרתם מנוע חשיבה רציונלית, צריך לכלול את שם המשאב שלו בשדה reasoningEngine כדי לשמור את ההפעלה בין תורות.
REST
כדי לחפש ולקבל תוצאות עם תשובה שנוצרה בסטרימינג:
מריצים את פקודת ה-curl הבאה:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/SERVING_CONFIG_ID:streamAnswer" \ -d '{ "query": { "text": "QUERY" }, "session": "SESSION", "enableAgentInvocation": true, "userPseudoId": "USER_PSEUDO_ID", "reasoningEngine": "projects/PROJECT_NUMBER/locations/LOCATION_ID/reasoningEngines/REASONING_ENGINE_ID" }'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . APP_ID: המזהה של אפליקציית חיפוש מבוסס סוכנים שרוצים לשלוח אליה שאילתה.-
SERVING_CONFIG_ID: כדי להשתמש באפליקציה מותאמת אישית במצב AI, צריך להגדיר את הערך הזה ל-default_agent_answer. כדי להשתמש בסוכן התשובות המוגדר מראש של Google, מגדירים את הערך הזה ל-default_search. -
PROJECT_NUMBER: מספר הפרויקט שמארח את מנוע הנימוקים. -
QUERY: מחרוזת טקסט חופשי שמכילה את השאלה או את שאילתת החיפוש. -
SESSION: אם ממשיכים שיחה רב-שלבית, זהו שם משאב הסשן שמוחזר בתשובה של התור הקודם, לדוגמה,projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/sessions/SESSION_ID. אם לא מדובר בהמשך שיחה, צריך להגדיר את הערך הזה ל--, מקף. -
USER_PSEUDO_ID: מזהה ייחודי שמשמש למעקב אחרי המבקר. -
LOCATION_ID: המיקום של מנוע ההסקה, לדוגמהus-central1. -
REASONING_ENGINE_ID: המזהה של מופע Agent Engine שיצרתם.
-
Python
מידע נוסף מופיע בתיעוד העזר של ה-API של חיפוש מבוסס סוכנים Python.
כדי לבצע אימות ב-חיפוש מבוסס סוכנים, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
בדוגמה הבאה אנחנו משתמשים בלקוח Python של Discovery Engine (v1alpha) כדי להפעיל את stream_answer_query עם הפעלת סוכן. מעבירים את השדה reasoning_engine לסשנים רב-שלביים.
from google.api_core.client_options import ClientOptions from google.cloud import discoveryengine_v1alpha def run_stream_answer_query(): PROJECT_ID = "YOUR_PROJECT_ID" LOCATION = "global" # or a specific region COLLECTION_ID = "default_collection" ENGINE_ID = "YOUR_ENGINE_ID" # Use "default_search" for the predefined Google answer agent, or # "default_agent_answer" if you have configured a custom AI_MODE app. SERVING_CONFIG_ID = "default_search" USER_ID = "user-id" QUERY_TEXT = "YOUR_QUERY_TEXT" REASONING_ENGINE_ID = "YOUR_REASONING_ENGINE_ID" # Use "-" to start a new session, or pass the sessionId returned in # the previous turn's response to continue an existing session. SESSION_ID = "-" SESSION_REF = ( f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/" f"{COLLECTION_ID}/engines/{ENGINE_ID}/sessions/{SESSION_ID}" ) SERVING_CONFIG_ENGINE = ( f"projects/{PROJECT_ID}/locations/{LOCATION}/collections/" f"{COLLECTION_ID}/engines/{ENGINE_ID}/servingConfigs/{SERVING_CONFIG_ID}" ) REASONING_ENGINE = ( f"projects/{PROJECT_ID}/locations/{LOCATION}/" f"reasoningEngines/{REASONING_ENGINE_ID}" ) client_options = ClientOptions( api_endpoint="discoveryengine.googleapis.com" ) client = discoveryengine_v1alpha.ConversationalSearchServiceClient( client_options=client_options ) request = discoveryengine_v1alpha.AnswerQueryRequest( query=discoveryengine_v1alpha.Query(text=QUERY_TEXT), serving_config=SERVING_CONFIG_ENGINE, user_pseudo_id=USER_ID, enable_agent_invocation=True, session=SESSION_REF, reasoning_engine=REASONING_ENGINE, ) print(f"Starting StreamAnswerQuery agentic session with: {request}") stream = client.stream_answer_query(request) try: for response in stream: print(f"Received response: {response}") except Exception as e: print(f"Error during streaming: {e}") if __name__ == "__main__": run_stream_answer_query()
קבלת גרסת התצוגה המקדימה של Discovery Engine SDK
Discovery Engine SDK מאפשר אינטראקציה קלה יותר עם Google Cloud שירותים מהאפליקציות שלכם. ערכת ה-SDK עוזרת בטיפול בשגיאות ובאימות, ומספקת תכונות כמו ניסיונות חוזרים אוטומטיים, טיפול בהחלפת דפים וניהול פעולות ארוכות טווח.
התכונה 'אחזור מידע באמצעות סוכן' נמצאת ברשימת ההיתרים, ולכן ערכת ה-SDK שצריך כדי להשתמש בתכונה הזו שונה מספריות הלקוח של Discovery Engine שזמינות לכולם.
כדי לקבל את גרסת הטרום-השקה של Discovery Engine SDK, צריך לבצע את הפעולות הבאות:
כדי לקבל גישה לתיקיית Google Drive של גרסת הטרום-השקה של ה-SDK, צריך לפנות אל התמיכה.
מורידים את החבילה בשפה הרצויה.
שינויים ב-API
מכיוון שהתכונה הזו נמצאת ברשימת ההיתרים, במסמכי העזרה של ה-API בדף השיטה streaming answer לא מוצגים כל השדות שזמינים ונדרשים לשימוש באחזור מבוסס-סוכן עם השיטה stream answer. השדות החסרים מתועדים באופן הבא.
שדות של גוף הבקשה
enableAgentInvocation(בוליאני) – הגדרה שלtrueלמעבר לעיבוד מבוסס-סוכן עם הגדרות קיימות של הצגת תוצאות חיפוש. השדה הזה הוא אופציונלי אם מצייניםanswer_agentהגדרת הצגה עם אפליקציה בהתאמה אישית במצב AI.
reasoningEngine(מחרוזת) – שם המשאב של זמן הריצה של הסוכן שמארח את סשנים של הסוכן, בפורמטprojects/*/locations/*/reasoningEngines/*.
שדות תשובה
כשהאחזור באמצעות סוכנים מופעל, כל תשובה שנוצרת על ידי Answer.Reference כוללת:
queries(מחרוזת חוזרת) – רשימת השאילתות שהסוכן הגיש כדי ליצור את ההפניה.
שירות סשנים
API בארכיטקטורת REST של שירות Session לא תומך בשיטות create או update. עם זאת, הוא תומך בשיטות האחרות:
list, get ו-delete.
Session service RPC API לא תומך בפעולות Update או Create במשאבי סשן שמשמשים לשיחות רב-שלביות.
עם זאת, הוא תומך בשירותים אחרים: פעולות List, Get ו-Delete במשאבי סשן שמשמשים לשיחות רב-שלביות.