חתימות מחשבה הן ייצוגים מוצפנים של תהליך החשיבה הפנימי של המודל. חתימות מחשבה שומרות את מצב הנימוק של Gemini במהלך שיחות מרובות שלבים, מה שיכול להיות שימושי כשמשתמשים בקריאה לפונקציות. התגובות יכולות לכלול שדה thought_signature בכל חלק של התוכן (למשל, text, functionCall).
מודלים של Gemini 3 מבצעים אימות קפדני יותר של חתימות מחשבה בהשוואה לגרסאות קודמות של Gemini, כי הם משפרים את ביצועי המודל בקריאות לפונקציות. כדי לוודא שהמודל שומר על הקשר מלא לאורך כמה תפניות בשיחה, צריך להחזיר את חתימות המחשבה מהתשובות הקודמות בבקשות הבאות, גם כשמשתמשים ברמות חשיבה של MINIMAL. אם לא מוחזרת חתימת מחשבה נדרשת כשמשתמשים במודלים של Gemini 3, המודל יחזיר שגיאת 400.
מודל Gemini 3 Pro Image לא מבצע את האימות הזה, אבל כדי לוודא שהמודל שומר על הקשר מלא בכמה תפניות בשיחה, עדיין צריך להחזיר את חתימות המחשבה מהתשובות הקודמות בבקשות הבאות. Gemini 3 Pro Image לא מחזיר שגיאה מסוג 400 אם לא מוחזר חתימת מחשבה. דוגמאות קוד שקשורות לעריכת תמונות בשיחה מרובת תפניות באמצעות Gemini 3 Pro Image זמינות במאמר דוגמה לעריכת תמונות בשיחה מרובת תפניות באמצעות חתימות מחשבה.
אם אתם משתמשים ב-SDK הרשמי של Google Gen AI (Python, Node.js, Go או Java) ובתכונות הרגילות של היסטוריית הצ'אט, או אם אתם מצרפים את התגובה המלאה של המודל להיסטוריה, חתימות המחשבה מטופלות באופן אוטומטי.
למה הם חשובים?
כשמודל חשיבה קורא לכלי חיצוני, הוא משהה את תהליך ההיגיון הפנימי שלו. חתימת המחשבה פועלת כמו "מצב שמירה", ומאפשרת למודל להמשיך את שרשרת המחשבות שלו בצורה חלקה אחרי שמספקים את התוצאה של הפונקציה. בלי חתימות מחשבה, המודל "שוכח" את שלבי ההסקה הספציפיים שלו במהלך שלב ההפעלה של הכלי. העברת החתימה בחזרה מבטיחה:
- רציפות ההקשר: המודל שומר את שלבי הנימוק שהצדיקו את השימוש בכלי ויכול לבדוק אותם.
- חשיבה מורכבת: מאפשרת לבצע משימות עם כמה שלבים, שבהן הפלט של כלי אחד משמש כבסיס לחשיבה של הכלי הבא.
פניות וצעדים
בהקשר של קריאות לפונקציות, חשוב להבין את ההבדל בין תורות לבין שלבים:
- תור מייצג חילופי דברים מלאים בשיחה, שמתחילים בהנחיה של המשתמש ומסתיימים כשהמודל מספק תשובה סופית להנחיה הזו, שלא כוללת קריאה לפונקציה.
- שלב מתרחש במהלך תור אחד, כשהמודל מפעיל פונקציה ונדרשת תשובה לפונקציה כדי להמשיך בתהליך הנימוק שלו. כפי שמוצג בתרשים, תור יחיד יכול לכלול כמה שלבים אם המודל צריך להפעיל כמה פונקציות ברצף כדי למלא את בקשת המשתמש.
איך משתמשים בחתימות מחשבה
הדרך הכי פשוטה לטפל בחתימות של מחשבות היא לכלול את כל סימני ה-Part מכל ההודעות הקודמות בהיסטוריית השיחה כששולחים בקשה חדשה, בדיוק כמו שהם הוחזרו על ידי המודל.
אם אתם לא משתמשים באחד מ-SDK של Google Gen AI, או שאתם צריכים לשנות או לקצץ את היסטוריית השיחות, אתם צריכים לוודא שחתימות המחשבה נשמרות ונשלחות בחזרה למודל.
כשמשתמשים ב-Google Gen AI SDK (מומלץ)
כשמשתמשים בתכונות של היסטוריית הצ'אטים ב-SDK או כשמוסיפים את אובייקט content מהתגובה הקודמת ל-contents של הבקשה הבאה, החתימות מטופלות באופן אוטומטי.
בדוגמה הבאה של Python מוצג טיפול אוטומטי:
from google import genai
from google.genai.types import Content, FunctionDeclaration, GenerateContentConfig, Part, ThinkingConfig, Tool
client = genai.Client()
# 1. Define your tool
get_weather_declaration = FunctionDeclaration(
name="get_weather",
description="Gets the current weather temperature for a given location.",
parameters={
"type": "object",
"properties": {"location": {"type": "string"}},
"required": ["location"],
},
)
get_weather_tool = Tool(function_declarations=[get_weather_declaration])
# 2. Send a message that triggers the tool
prompt = "What's the weather like in London?"
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=prompt,
config=GenerateContentConfig(
tools=[get_weather_tool],
thinking_config=ThinkingConfig(include_thoughts=True)
),
)
# 3. Handle the function call
function_call = response.function_calls[0]
location = function_call.args["location"]
print(f"Model wants to call: {function_call.name}")
# Execute your tool (for example, call an API)
# (This is a mock response for the example)
print(f"Calling external tool for: {location}")
function_response_data = {
"location": location,
"temperature": "30C",
}
# 4. Send the tool's result back
# Append this turn's messages to history for a final response.
# The `content` object automatically attaches the required thought_signature behind the scenes.
history = [
Content(role="user", parts=[Part(text=prompt)]),
response.candidates[0].content, # Signature preserved here
Content(
role="tool",
parts=[
Part.from_function_response(
name=function_call.name,
response=function_response_data,
)
],
)
]
response_2 = client.models.generate_content(
model="gemini-2.5-flash",
contents=history,
config=GenerateContentConfig(
tools=[get_weather_tool],
thinking_config=ThinkingConfig(include_thoughts=True)
),
)
# 5. Get the final, natural-language answer
print(f"\nFinal model response: {response_2.text}")
כשמשתמשים ב-REST או בטיפול ידני
אם אתם מבצעים אינטראקציה עם ה-API באופן ישיר, אתם צריכים להטמיע טיפול בחתימה בהתאם לכללים הבאים עבור Gemini 3 Pro:
- שימוש בפונקציות:
- אם התשובה של המודל מכילה חלק אחד או יותר של
functionCall, צריך להוסיףthought_signatureכדי שהעיבוד יתבצע בצורה נכונה. - במקרים של קריאות פונקציה מקבילות בתשובה אחת, רק החלק הראשון
functionCallיכיל אתthought_signature. - במקרים של קריאות לפונקציות עוקבות בכמה שלבים בתור, כל חלק
functionCallיכילthought_signature. - כלל: כשיוצרים את הבקשה הבאה, צריך לכלול את
partשמכיל אתfunctionCallואתthought_signatureשלו בדיוק כפי שהוחזר על ידי המודל. בשיחות רציפות (רב-שלביות) עם פונקציות, האימות מתבצע בכל השלבים בתור הנוכחי, והשמטה שלthought_signatureחובה בחלקfunctionCallהראשון בכל שלב בתור הנוכחי מובילה לשגיאה400. תור מתחיל בהודעה האחרונה של המשתמש שלא מסומנת כfunctionResponse. - אם המודל מחזיר קריאות מקבילות לפונקציות (לדוגמה,
FC1+signature,FC2), התשובה צריכה לכלול את כל הקריאות לפונקציות ואחריהן את כל התשובות לפונקציות (FC1+signature,FC2,FR1,FR2). אם התשובות משולבות (FC1+signature,FR1,FC2,FR2), תתקבל שגיאה400. - יש מקרים נדירים שבהם צריך לספק
functionCallחלקים שלא נוצרו על ידי ה-API ולכן לא משויכת להם חתימת מחשבה (לדוגמה, כשמעבירים היסטוריה ממודל שלא כולל חתימות מחשבה). אפשר להגדיר אתthought_signatureל-skip_thought_signature_validator, אבל מומלץ לעשות את זה רק כמוצא אחרון כי זה ישפיע לרעה על ביצועי המודל.
- אם התשובה של המודל מכילה חלק אחד או יותר של
- Non-function calling:
- אם התשובה של המודל לא מכילה
functionCall, יכול להיות שהיא תכלולthought_signatureבחלקpartהאחרון של התשובה (לדוגמה, החלק האחרוןtext). - כלל: מומלץ לכלול את החתימה הזו בבקשה הבאה כדי לקבל את הביצועים הטובים ביותר, אבל אם לא תכללו אותה לא תתרחש שגיאה. בסטרימינג, יכול להיות שהחתימה הזו תוחזר בחלק עם תוכן טקסט ריק, לכן חשוב לנתח את כל החלקים עד שהמודל יחזיר את
finish_reason.
- אם התשובה של המודל לא מכילה
כדי לשמור על ההקשר של המודל, צריך לפעול לפי הכללים הבאים:
- תמיד מחזירים את
thought_signatureלמודל בתוךPartהמקורי. - אל תמזגו
Partשמכיל חתימה עםPartשלא מכיל חתימה. כך נשבר ההקשר המיקומי של המחשבה. - אל תשלבו שני קובצי
Partשמכילים חתימות, כי אי אפשר למזג את מחרוזות החתימה.
דוגמה לבקשה להפעלת פונקציה באופן רציף
בדוגמה הבאה מוצג תרחיש של קריאה לפונקציה עם כמה שלבים, שבו המשתמש מבקש "תבדוק את סטטוס הטיסה AA100 ותזמין מונית אם יש עיכוב". כדי לבצע את הבקשה הזו, צריך לבצע כמה משימות.
REST
בדוגמה הבאה מוצגות דרכים לטפל בחתימות של מחשבות בכמה שלבים בתהליך עבודה של בקשות להפעלת פונקציות רציפות באמצעות REST API.
תור 1, שלב 1 (בקשת משתמש)
{ "contents": [ { "role": "user", "parts": [ { "text": "Check flight status for AA100 and book a taxi 2 hours before if delayed." } ] } ], "tools": [ { "functionDeclarations": [ { "name": "check_flight", "description": "Gets the current status of a flight", "parameters": { "type": "object", "properties": { "flight": { "type": "string", "description": "The flight number to check" } }, "required": [ "flight" ] } }, { "name": "book_taxi", "description": "Book a taxi", "parameters": { "type": "object", "properties": { "time": { "type": "string", "description": "time to book the taxi" } }, "required": [ "time" ] } } ] } ] }
תור 1, שלב 1 (תשובה לדוגמה)
{ "content": { "role": "model", "parts": [ { "functionCall": { "name": "check_flight", "args": { "flight": "AA100" } }, "thoughtSignature": "<SIGNATURE_A>" } ] } }
תור 1, שלב 2 (תגובת משתמש – שליחת פלט של כלי)
מכיוון שהתור הזה של המשתמש מכיל רק functionResponse (ללא טקסט חדש), אנחנו עדיין בתור מספר 1. חובה לשמור על <SIGNATURE_A>.
{ "role": "user", "parts": [ { "text": "Check flight status for AA100 and book a taxi 2 hours before if delayed." } ] }, { "role": "model", "parts": [ { "functionCall": { "name": "check_flight", "args": { "flight": "AA100" } }, "thoughtSignature": "<SIGNATURE_A>" } ] }, { "role": "user", "parts": [ { "functionResponse": { "name": "check_flight", "response": { "status": "delayed", "departure_time": "12 PM" } } } ] }
תור 1, שלב 2 (תשובה מהמודל)
עכשיו המודל מחליט להזמין מונית על סמך הפלט הקודם של הכלי.
{ "content": { "role": "model", "parts": [ { "functionCall": { "name": "book_taxi", "args": { "time": "10 AM" } }, "thoughtSignature": "<SIGNATURE_B>" } ] } }
תור 1, שלב 3 (תגובת המשתמש – שליחת פלט הכלי)
כדי לשלוח את אישור הזמנת המונית, צריך לכלול חתימות לכל הקריאות לפונקציות בלולאה הזו (<SIGNATURE_A> ו-<SIGNATURE_B>).
{ "role": "user", "parts": [ { "text": "Check flight status for AA100 and book a taxi 2 hours before if delayed." } ] }, { "role": "model", "parts": [ { "functionCall": { "name": "check_flight", "args": { "flight": "AA100" } }, "thoughtSignature": "<SIGNATURE_A>" } ] }, { "role": "user", "parts": [ { "functionResponse": { "name": "check_flight", "response": { "status": "delayed", "departure_time": "12 PM" } } } ] }, { "role": "model", "parts": [ { "functionCall": { "name": "book_taxi", "args": { "time": "10 AM" } }, "thoughtSignature": "<SIGNATURE_B>" } ] }, { "role": "user", "parts": [ { "functionResponse": { "name": "book_taxi", "response": { "booking_status": "success" } } } ] } }
השלמות בצ'אט
בדוגמה הבאה אפשר לראות איך לטפל בחתימות של מחשבות בכמה שלבים בתהליך עבודה של קריאה לפונקציה רציפה באמצעות Chat Completions API.
תור 1, שלב 1 (בקשת משתמש)
{ "model": "google/gemini-3.1-pro-preview", "messages": [ { "role": "user", "content": "Check flight status for AA100 and book a taxi 2 hours before if delayed." } ], "tools": [ { "type": "function", "function": { "name": "check_flight", "description": "Gets the current status of a flight", "parameters": { "type": "object", "properties": { "flight": { "type": "string", "description": "The flight number to check." } }, "required": [ "flight" ] } } }, { "type": "function", "function": { "name": "book_taxi", "description": "Book a taxi", "parameters": { "type": "object", "properties": { "time": { "type": "string", "description": "time to book the taxi" } }, "required": [ "time" ] } } } ] }
תור 1, שלב 1 (תשובה לדוגמה)
{ "role": "model", "tool_calls": [ { "extra_content": { "google": { "thought_signature": "<SIGNATURE_A>" } }, "function": { "arguments": "{\"flight\":\"AA100\"}", "name": "check_flight" }, "id": "function-call-1", "type": "function" } ] }
תור 1, שלב 2 (תגובת משתמש – שליחת פלט של כלי)
מכיוון שהתור הזה של המשתמש מכיל רק functionResponse (ללא טקסט חדש), אנחנו עדיין בתור מספר 1. חובה לשמור על <SIGNATURE_A>.
"messages": [ { "role": "user", "content": "Check flight status for AA100 and book a taxi 2 hours before if delayed." }, { "role": "model", "tool_calls": [ { "extra_content": { "google": { "thought_signature": "<SIGNATURE_A>" } }, "function": { "arguments": "{\"flight\":\"AA100\"}", "name": "check_flight" }, "id": "function-call-1", "type": "function" } ] }, { "role": "tool", "name": "check_flight", "tool_call_id": "function-call-1", "content": "{\"status\":\"delayed\",\"departure_time\":\"12 PM\"}" } ]
תור 1, שלב 2 (תשובה מהמודל)
עכשיו המודל מחליט להזמין מונית על סמך הפלט הקודם של הכלי.
{ "role": "model", "tool_calls": [ { "extra_content": { "google": { "thought_signature": "<SIGNATURE_B>" } }, "function": { "arguments": "{\"time\":\"10 AM\"}", "name": "book_taxi" }, "id": "function-call-2", "type": "function" } ] }
תור 1, שלב 3 (תגובת המשתמש – שליחת פלט הכלי)
כדי לשלוח את אישור הזמנת המונית, צריך לכלול חתימות לכל הקריאות לפונקציות בלולאה הזו (<SIGNATURE_A> ו-<SIGNATURE_B>).
"messages": [ { "role": "user", "content": "Check flight status for AA100 and book a taxi 2 hours before if delayed." }, { "role": "model", "tool_calls": [ { "extra_content": { "google": { "thought_signature": "<SIGNATURE_A>" } }, "function": { "arguments": "{\"flight\":\"AA100\"}", "name": "check_flight" }, "id": "function-call-1d6a1a61-6f4f-4029-80ce-61586bd86da5", "type": "function" } ] }, { "role": "tool", "name": "check_flight", "tool_call_id": "function-call-1d6a1a61-6f4f-4029-80ce-61586bd86da5", "content": "{\"status\":\"delayed\",\"departure_time\":\"12 PM\"}" }, { "role": "model", "tool_calls": [ { "extra_content": { "google": { "thought_signature": "<SIGNATURE_B>" } }, "function": { "arguments": "{\"time\":\"10 AM\"}", "name": "book_taxi" }, "id": "function-call-65b325ba-9b40-4003-9535-8c7137b35634", "type": "function" } ] }, { "role": "tool", "name": "book_taxi", "tool_call_id": "function-call-65b325ba-9b40-4003-9535-8c7137b35634", "content": "{\"booking_status\":\"success\"}" } ]
דוגמה לקריאה מקבילה לפונקציות
בדוגמה הבאה מוצגת קריאה מקבילה לפונקציה, שבה המשתמש שואל "Check weather in Paris and London" (בדיקת מזג האוויר בפריז ובלונדון).
REST
בדוגמה הבאה מוצג תהליך עבודה של בקשות להפעלת פונקציות מקבילות באמצעות REST API, שכולל טיפול בחתימות של מחשבות.
תור 1, שלב 1 (בקשת משתמש)
{ "contents": [ { "role": "user", "parts": [ { "text": "Check the weather in Paris and London." } ] } ], "tools": [ { "functionDeclarations": [ { "name": "get_current_temperature", "description": "Gets the current temperature for a given location.", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city name, e.g. San Francisco" } }, "required": [ "location" ] } } ] } ] }
תור 1, שלב 1 (תשובה לדוגמה)
{ "content": { "parts": [ { "functionCall": { "name": "get_current_temperature", "args": { "location": "Paris" } }, "thoughtSignature": "<SIGNATURE_A>" }, { "functionCall": { "name": "get_current_temperature", "args": { "location": "London" } } } ] } }
תור 1, שלב 2 (תגובת משתמש – שליחת פלט של כלי)
צריך לשמור את <SIGNATURE_A> בחלק הראשון בדיוק כפי שהתקבל.
[ { "role": "user", "parts": [ { "text": "Check the weather in Paris and London." } ] }, { "role": "model", "parts": [ { "functionCall": { "name": "get_current_temperature", "args": { "city": "Paris" } }, "thought_signature": "<SIGNATURE_A>" }, { "functionCall": { "name": "get_current_temperature", "args": { "city": "London" } } } ] }, { "role": "user", "parts": [ { "functionResponse": { "name": "get_current_temperature", "response": { "temp": "15C" } } }, { "functionResponse": { "name": "get_current_temperature", "response": { "temp": "12C" } } } ] } ]
השלמות בצ'אט
בדוגמה הבאה אפשר לראות איך מטפלים בחתימות של מחשבות בתהליך עבודה מקביל של בקשות להפעלת פונקציות באמצעות Chat Completions API.
תור 1, שלב 1 (בקשת משתמש)
{ "contents": [ { "role": "user", "parts": [ { "text": "Check the weather in Paris and London." } ] } ], "tools": [ { "functionDeclarations": [ { "name": "get_current_temperature", "description": "Gets the current temperature for a given location.", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city name, e.g. San Francisco" } }, "required": [ "location" ] } } ] } ] }
תור 1, שלב 1 (תשובה לדוגמה)
{ "role": "assistant", "tool_calls": [ { "extra_content": { "google": { "thought_signature": "<SIGNATURE_A>" } }, "function": { "arguments": "{\"location\":\"Paris\"}", "name": "get_current_temperature" }, "id": "function-call-f3b9ecb3-d55f-4076-98c8-b13e9d1c0e01", "type": "function" }, { "function": { "arguments": "{\"location\":\"London\"}", "name": "get_current_temperature" }, "id": "function-call-335673ad-913e-42d1-bbf5-387c8ab80f44", "type": "function" } ] }
תור 1, שלב 2 (תגובת משתמש – שליחת פלט של כלי)
צריך לשמור את <SIGNATURE_A> בחלק הראשון בדיוק כפי שהתקבל.
"messages": [ { "role": "user", "content": "Check the weather in Paris and London." }, { "role": "assistant", "tool_calls": [ { "extra_content": { "google": { "thought_signature": "<SIGNATURE_A>" } }, "function": { "arguments": "{\"location\":\"Paris\"}", "name": "get_current_temperature" }, "id": "function-call-f3b9ecb3-d55f-4076-98c8-b13e9d1c0e01", "type": "function" }, { "function": { "arguments": "{\"location\":\"London\"}", "name": "get_current_temperature" }, "id": "function-call-335673ad-913e-42d1-bbf5-387c8ab80f44", "type": "function" } ] }, { "role":"tool", "name": "get_current_temperature", "tool_call_id": "function-call-f3b9ecb3-d55f-4076-98c8-b13e9d1c0e01", "content": "{\"temp\":\"15C\"}" }, { "role":"tool", "name": "get_current_temperature", "tool_call_id": "function-call-335673ad-913e-42d1-bbf5-387c8ab80f44", "content": "{\"temp\":\"12C\"}" } ]
חתימות ב-functionCall שאינם Part
יכול להיות ש-Gemini יחזיר גם thought_signature ב-Part הסופי של התשובה, גם אם לא מופיעה קריאה לפונקציה.
- התנהגות: התוכן הסופי
Part(text,inlineDataוכו') שמוחזר על ידי המודל עשוי להכילthought_signature. - דרישה: מומלץ להחזיר את החתימה הזו כדי לוודא שהמודל שומר על יכולת ניתוח באיכות גבוהה, במיוחד כשמדובר בהנחיות מורכבות או בתהליכי עבודה מבוססי-סוכן מדומה.
- אימות: ממשק ה-API לא אוכף אימות קפדני של חתימות בחלקים שאינם
functionCall. אם לא תכללו אותם, לא תקבלו שגיאת חסימה, אבל יכול להיות שהביצועים ייפגעו.
דוגמה לתשובה של מודל עם חתימה בחלק הטקסט:
בדוגמאות הבאות מוצגת תשובה של מודל שכוללת thought_signature בPart שאינו functionCall, ומוסבר איך לטפל בזה בבקשה הבאה.
תור 1, שלב 1 (תשובה לדוגמה)
{ "role": "model", "parts": [ { "text": "I need to calculate the risk. Let me think step-by-step...", "thought_signature": "<SIGNATURE_C>" // OPTIONAL (Recommended) } ] }
תור 2, שלב 1 (משתמש)
[ { "role": "user", "parts": [{ "text": "What is the risk?" }] }, { "role": "model", "parts": [ { "text": "I need to calculate the risk. Let me think step-by-step...", // If you omit <SIGNATURE_C> here, no error will occur. } ] }, { "role": "user", "parts": [{ "text": "Summarize it." }] } ]
דוגמה לעריכת תמונה בכמה שלבים באמצעות חתימות מחשבה
בדוגמאות הבאות מוסבר איך לאחזר ולהעביר חתימות של תהליכי חשיבה במהלך יצירה ועריכה של תמונות בכמה שלבים באמצעות Gemini 3 Pro Image.
תור 1: קבלת התשובה ושמירת נתונים שכוללים חתימות מחשבה
chat = client.chats.create( model="gemini-3-pro-image-preview", config=types.GenerateContentConfig( response_modalities=['TEXT', 'IMAGE'] ) ) message = "Create an image of a clear perfume bottle sitting on a vanity." response = chat.send_message(message) data = b'' for part in response.candidates[0].content.parts: if part.text: display(Markdown(part.text)) if part.inline_data: data = part.inline_data.data display(Image(data=data, width=500))
תור 2: העברת הנתונים שכוללים חתימות של מחשבות
response = chat.send_message( message=[ types.Part.from_bytes( data=data, mime_type="image/png", ), "Make the perfume bottle purple and add a vase of hydrangeas next to the bottle.", ], ) for part in response.candidates[0].content.parts: if part.text: display(Markdown(part.text)) if part.inline_data: display(Image(data=part.inline_data.data, width=500))
המאמרים הבאים
Thinking
יכולת החשיבה של Gemini עוזרת למודל לספק תשובות רלוונטיות יותר להקשר, והוא מתעד את תהליך ההיגיון של המודל כחלק מהתשובה. מידע על התכונות שכלולות ב-Thinking, כולל מודלים נתמכים ואיך לשלוט בפלט של המודל.
מבוא להפעלת פונקציות
כאן מוסבר איך להפעיל את האפשרות למודלים של Gemini להשתמש בכלים חיצוניים במהלך יצירת תשובות באמצעות בקשות להפעלת פונקציות.
סקירה כללית בנושא ביסוס
הארקה היא היכולת לקשר את הפלט של המודל למקורות מידע שניתנים לאימות. במאמר הזה מוסבר על מקורות הנתונים השונים (כמו חיפוש Google, מפות Google וחיפוש בפלטפורמת הסוכנים) שזמינים לביסוס כשמשתמשים בפלטפורמת הסוכנים.