本頁面說明管理員如何從 Agent Runtime 註冊 ADK 代理,以便在 Gemini Enterprise 網頁應用程式中使用。
如果 ADK 代理部署在 Agent Runtime,您可以使用單一 Agents CLI in Agent Platform 指令,將代理註冊至 Gemini Enterprise。
當您將託管於 Agent Runtime 的 ADK 代理註冊至 Gemini Enterprise 應用程式,並在 Gemini Enterprise 網頁應用程式中開放使用者存取這些代理時:
Agent Runtime 服務會處理代理查詢。
適用 Agent Runtime ML 處理條款。詳情請參閱「Agent Runtime 限制」。
下表說明 ADK 代理的管理方式,確保部署和使用過程安全且受控。
| 代理管理 | 說明 |
|---|---|
| 安全通訊 | Agent Runtime 與 Gemini Enterprise 之間的連線符合 VPC Service Controls (VPC-SC) 規範,可確保資料安全交換。 |
| 跨專案代理支援 | 您可以連結託管於其他 Google Cloud的 ADK 代理。 Gemini Enterprise 會使用 Google Cloud的安全私人網路,建立這些跨專案連線。詳情請參閱「設定跨專案 ADK 代理存取權」。 |
| 個人化互動 | ADK 代理會從 Gemini Enterprise 接收使用者的電子郵件地址,這樣一來,代理就能辨識個別使用者,並根據他們的身分和權限提供個人化回覆。 |
事前準備
請確認下列各項均已達成或備妥:
啟用 Discovery Engine API。如要為 Google Cloud專案啟用 Discovery Engine API,請前往 Google Cloud 控制台的「Discovery Engine API」頁面。
現有的 Gemini Enterprise 應用程式。如要建立應用程式,請參閱「建立應用程式」。
託管於 Agent Runtime 的 ADK 代理。詳情請參閱「Agent Development Kit 總覽」。
- 如果沒有代理,請按照
adk-samplesGitHub 存放區中的步驟,將fun_facts代理部署至 Agent Runtime。接著,您就能將代理註冊至 Gemini Enterprise。
- 如果沒有代理,請按照
如果 ADK 代理和 Gemini Enterprise 應用程式託管於不同 Google Cloud 專案,您必須授予必要權限。詳情請參閱「授予跨專案 ADK 代理程式存取權限」。
設定授權詳細資料 (選用)
請按照下列步驟取得授權詳細資料。
在 Google Cloud 控制台的「APIs & Services」(API 和服務) 頁面中,前往「Credentials」(憑證) 頁面。
-
選取 Google Cloud 專案,其中包含您要讓代理存取的資料來源。舉例來說,選取包含代理要查詢的 BigQuery 資料集的專案。
按一下「建立憑證」,然後選取「OAuth 用戶端 ID」。
在「應用程式類型」部分,選取「網頁應用程式」。
在「已授權的重新導向 URI」部分,新增下列 URI:
https://vertexaisearch.cloud.google.com/oauth-redirecthttps://vertexaisearch.cloud.google.com/static/oauth/oauth.html
點選「建立」。
在「OAuth client created」(已建立 OAuth 用戶端) 面板中,按一下「Download JSON」(下載 JSON)。下載的 JSON 包含所選Google Cloud 專案的
Client ID、Authorization URI、Token URI和Client secret。您需要這些詳細資料,才能建立授權資源。
將 ADK 代理註冊至 Gemini Enterprise
您可以使用Google Cloud 控制台或 REST API,將 ADK 代理註冊至 Gemini Enterprise。這樣一來,使用者就能在 Gemini Enterprise 應用程式中存取代理。
控制台
如要使用 Google Cloud 控制台註冊 ADK 代理,請按照下列步驟操作:
前往 Google Cloud 控制台的「Gemini Enterprise」頁面。
按一下要註冊代理程式的應用程式名稱。
按一下「Agents」。系統隨即會顯示「Agents」(代理) 頁面。
按一下「 新增代理」。「Add an agent」(新增代理) 面板隨即顯示。
在「透過 Agent Runtime 建立的自訂代理」部分,點選「新增」。系統隨即會顯示「Authorizations」(授權) 頁面。
如要讓代理代表您存取 Google Cloud 資源,則每項資源都需要授權。如要為單一資源設定授權,請按照下列步驟操作:
按一下「新增授權」。
在「Authorization name」(授權名稱) 中輸入不重複的值。系統會根據名稱產生 ID,且日後無法變更。
在下列欄位中,輸入您在「設定授權詳細資料 (選用)」中產生的值:
在「Client ID」欄位中輸入值。
在「Client secret」(用戶端密鑰) 欄位中輸入值。
在「權杖 URI」欄位中輸入值。
在「Authorization URI」欄位中輸入值。使用 OAuth 憑證 JSON 檔案中的詳細資料,建構授權 URI。複製下列範本,並將預留位置替換為您的特定值。
https://accounts.google.com/o/oauth2/v2/auth?client_id=YOUR_CLIENT_ID&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=YOUR_CUSTOM_SCOPES&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
按一下「完成」。
點選「下一步」。
如要設定代理,請按照下列步驟操作:
在「Agent name」(代理名稱) 欄位中輸入名稱。這個值會顯示在 Gemini Enterprise 網頁應用程式,做為代理的顯示名稱。
在「描述您的代理」欄位輸入說明。LLM 會依據這個值,判斷是否叫用代理來回覆使用者查詢。
輸入 Agent Runtime 資源路徑。資源路徑的格式如下:
projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID
如要進一步瞭解如何列出託管於 Agent Runtime 的代理,以及取得資源路徑,請參閱「列出已部署的代理」。
點選「建立」。
REST
如要使用 REST API 註冊 ADK 代理,請按照下列步驟操作:
將授權資源新增至 Gemini Enterprise (選用)
如果代理必須代表使用者存取 Google Cloud 資源,請執行下列指令,向 Gemini Enterprise 註冊您在「設定授權詳細資料 (選用)」一節中建立的授權資源:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/LOCATION/authorizations?authorizationId=AUTH_ID" \
-d '{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/authorizations/AUTH_ID",
"serverSideOauth2": {
"clientId": "OAUTH_CLIENT_ID",
"clientSecret": "OAUTH_CLIENT_SECRET",
"authorizationUri": "OAUTH_AUTH_URI",
"tokenUri": "OAUTH_TOKEN_URI"
}
}'
更改下列內容:
PROJECT_ID:專案 ID。PROJECT_NUMBER: Google Cloud 專案的編號。ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:us適用於美國多區域eu代表歐盟多區域global適用於全域位置
LOCATION:資料儲存庫的多區域:global、us或euAUTH_ID:授權資源的 ID。這是您定義的任意英數字元 ID。稍後註冊需要 OAuth 支援的代理時,您需要參照這個 ID。OAUTH_CLIENT_ID:建立 OAuth 憑證時取得的 OAuth 2.0 用戶端 ID。OAUTH_CLIENT_SECRET:建立 OAuth 憑證時取得的 OAuth 2.0 用戶端密鑰。OAUTH_AUTH_URI:授權 URI。如要授權應用程式,請使用 OAuth 憑證 JSON 檔案中的詳細資料,建構特定的授權 URI。複製下列範本,並將預留位置替換為您的特定值。https://accounts.google.com/o/oauth2/v2/auth?client_id=OAUTH_CLIENT_ID&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=YOUR_CUSTOM_SCOPES&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
YOUR_CUSTOM_SCOPES:您可以新增所需範圍。舉例來說,下列 OAuth 範圍字串會要求 Google 雲端硬碟和 Google 文件的唯讀存取權。scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocuments.readonly
OAUTH_TOKEN_URI:建立 OAuth 憑證時取得的權杖 URI。
進一步瞭解授權 URI 參數。
為確保 URI 正常運作,請驗證下列欄位:
| 參數 | 值或動作 |
|---|---|
client_id |
替換為下載的 JSON 中找到的 client_id。 |
redirect_uri |
請勿變更。必須為 https://vertexaisearch.cloud.google.com/static/oauth/oauth.html。 |
scope |
列出應用程式需要代表使用者存取的 Google API 範圍。舉例來說,如要授予 BigQuery 存取權,請使用 如要使用多個範圍,請以空格分隔,在網址中會顯示為 |
include_granted_scopes |
必須為 true。 |
response_type |
必須年滿 code 歲才能取得授權碼。 |
access_type |
設為 offline,確保您會收到更新權杖。 |
prompt |
設為 consent,確保使用者一律會看到同意畫面。 |
註冊 ADK 代理
以下程式碼範例說明如何註冊 ADK 代理。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents" \
-d '{
"displayName": "DISPLAY_NAME",
"description": "DESCRIPTION",
"icon": {
"uri": "ICON_URI"
},
"adkAgentDefinition": {
"provisionedReasoningEngine": {
"reasoningEngine": "projects/PROJECT_ID/locations/RESOURCE_LOCATION/reasoningEngines/RESOURCE_ID"
}
},
"authorizationConfig": {
"toolAuthorizations": [
"projects/PROJECT_NUMBER/locations/global/authorizations/AUTH_ID"
]
}
}'
將變數替換為值:
ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:
us適用於美國多區域eu代表歐盟多區域global適用於全域位置
PROJECT_ID: Google Cloud 專案的 ID。
PROJECT_NUMBER: Google Cloud 專案的編號。
APP_ID:Gemini Enterprise 應用程式的專屬 ID。
DESCRIPTION:Gemini Enterprise 中顯示的代理說明。
ICON_URI:圖示的公開 URI,會顯示在服務專員名稱附近。或者,您也可以傳送以 Base64 編碼的圖片檔案內容,在這種情況下,請使用
icon.content。RESOURCE_ID:部署 ADK 代理的 Agent Runtime 端點 ID。如要進一步瞭解如何列出託管於 Agent Runtime 的代理,以及取得資源 ID,請參閱「列出已部署的代理」。
RESOURCE_LOCATION:Agent Runtime 端點的雲端位置。詳情請參閱「Agent Runtime 位置」。
authorization_config:如果您已取得授權詳細資料,並希望代理能代表使用者存取 Google Cloud 資源,請在 JSON 資源中新增authorization_config欄位。AUTH_ID:您在「設定授權詳細資料」一節中用於 AUTH_ID 的值。
與使用者共用代理
如要允許使用者透過 Gemini Enterprise 網頁應用程式存取代理,請參閱「共用代理」。
列出連結至應用程式的代理
下列程式碼範例說明如何取得與應用程式連結的所有代理詳細資料:
REST
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents"
將變數替換為值:
- ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:
us適用於美國多區域eu代表歐盟多區域global適用於全域位置
- PROJECT_ID: Google Cloud 專案的 ID。
- LOCATION:應用程式的多區域:
global、us或eu。 - APP_ID:Gemini Enterprise 應用程式的 ID。
如果代理不是由 Google 預先建構,回覆的前幾行會包含 name 欄位。這個欄位的值包含路徑結尾的代理 ID。舉例來說,在下列回應中,代理程式 ID 為 12345678901234567890:
{
"name": "projects/123456/locations/global/collections/default_collection/engines/my-app/assistants/default_assistant/agents/12345678901234567890",
...
}
查看 ADK 代理的詳細資料
下列程式碼範例說明如何擷取已註冊 Gemini Enterprise 的代理詳細資料:
REST
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents/AGENT_ID"
將變數替換為值:
- ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:
us適用於美國多區域eu代表歐盟多區域global適用於全域位置
- PROJECT_ID: Google Cloud 專案的 ID。
- LOCATION:應用程式的多區域:
global、us或eu。 - APP_ID:Gemini Enterprise 應用程式的 ID。
- AGENT_ID:代理 ID。如要找出代理 ID,請列出連結至應用程式的代理。
更新 ADK 代理
您可以使用 Google Cloud 控制台或 REST API,修改已註冊 Gemini Enterprise 的現有代理詳細資料。
控制台
如要使用 Google Cloud 控制台更新代理程式,請按照下列步驟操作:
前往 Google Cloud 控制台的「Gemini Enterprise」頁面。
按一下應用程式名稱,找出要更新的代理。
按一下「代理」。
按一下要更新的 Agent Runtime 代理名稱,然後點選「Edit」(編輯)。
更新「Display name」(顯示名稱)、「Description」(說明) 或「Agent Runtime reasoning engine」(Agent Runtime 推論引擎)。
資源路徑的格式如下:
projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID
如要進一步瞭解如何列出託管於 Agent Runtime 的代理,並取得資源路徑,請參閱「列出已部署的代理」。
按一下 [儲存]。
REST
您可以在註冊代理時更新所有欄位。不過,您必須更新下列欄位:
displayNamedescriptionreasoningEngine以下程式碼範例示範如何更新現有 ADK 代理程式的註冊資訊:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/AGENT_RESOURCE_NAME" \ -d '{ "displayName": "DISPLAY_NAME", "description": "DESCRIPTION", "adkAgentDefinition": { "provisionedReasoningEngine": { "reasoningEngine": "projects/PROJECT_ID/locations/RESOURCE_LOCATION/reasoningEngine s/RESOURCE_ID" }, } }'將變數替換為值:
ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:
us適用於美國多區域eu代表歐盟多區域global適用於全域位置
PROJECT_ID: Google Cloud 專案的 ID。
AGENT_RESOURCE_NAME:要更新的代理程式註冊資源名稱。
DISPLAY_NAME:必要。Gemini Enterprise 中顯示的代理易記名稱。
DESCRIPTION:必填。簡短說明代理的功能,Gemini Enterprise 使用者會看到這項資訊。
RESOURCE_LOCATION:Agent Runtime 端點的雲端位置。詳情請參閱「Agent Runtime 位置」。
RESOURCE_ID:部署 ADK 代理的 Agent Runtime 端點 ID。如要進一步瞭解如何列出託管於 Agent Runtime 的代理,以及取得資源 ID,請參閱「列出已部署的代理」。
刪除 ADK 代理
下列程式碼範例示範如何刪除與應用程式連結的代理:
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID/assistants/default_assistant/agents/AGENT_ID"
將變數替換為值:
- ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:
us適用於美國多區域eu代表歐盟多區域global適用於全域位置
- PROJECT_ID: Google Cloud 專案的 ID。
- LOCATION:應用程式的多區域:
global、us或eu - APP_ID:Gemini Enterprise 應用程式的 ID。
- AGENT_ID:代理 ID。如要找出代理 ID,請列出連結至應用程式的代理。
Agent Runtime 位置
註冊或更新代理時,Agent Runtime 位置必須與 Gemini Enterprise 應用程式的位置相容,否則會發生錯誤。
請參閱下表,瞭解相容性需求:
| Gemini Enterprise 應用程式位置 | 允許的 Agent Runtime 位置 |
|---|---|
global |
任何支援的 Google Cloud 區域 |
us |
開頭為 us- 的任何區域,例如 us-central1 或 us-east4 |
eu |
任何開頭為 europe- 的區域,例如 europe-west1 或 europe-west3 |
效能和穩定性的最佳做法
在 Gemini Enterprise 中,執行託管於 Agent Runtime 的 ADK 代理時,請遵循下列最佳做法,盡可能縮短回應延遲時間,並避免要求逾時:
- 盡量減少依序多代理躍點和多餘的摘要:每增加一次子代理交接或工具往返,都會增加該輪對話的模型推論延遲時間。避免使用深層依序代理鏈,並在上層代理不需要執行額外的模型傳遞,重新摘要子代理的輸出內容時,使用
AgentTool(..., skip_summarization=True)包裝子代理。 - 設定執行階段資源調度與並行功能,因應多位使用者工作負載:為避免多位使用者同時查詢代理時,發生冷啟動延遲、要求排入佇列和記憶體不足 (
OOM) 異常終止等問題,請在部署至 Agent Runtime 時,設定min_instances、resource_limits(cpu和memory) 和container_concurrency。詳情請參閱「最佳化及擴充 Agent Runtime 效能」。 - 固定本機建構和雲端執行階段之間的相符套件版本:將代理部署至 Agent Runtime 時,請在部署
requirements清單中固定與本機建構環境中使用的google-adk、google-cloud-aiplatform和cloudpickle完全相同的版本,避免反序列化負擔和初始化延遲。 - 使用
global端點進行模型呼叫和繫結工具重試:ADK 代理在 Vertex AI 叫用 Gemini 模型時,請使用global端點 (或佈建輸送量),減少區域容量爭用情形,並針對外部工具呼叫設定明確的連線逾時和繫結重試限制,以免下游依附元件速度緩慢,導致連鎖逾時。