除了使用代理程式的一般操作說明外,本頁還會說明 AdkApp
專屬的功能。
事前準備
本教學課程假設您已閱讀並遵循以下說明:
- 開發 Agent Development Kit 代理程式:將
agent
開發為AdkApp
的例項。 - 使用者驗證:以使用者身分驗證,以便查詢服務機器人。
如要查詢 ADK 應用程式,您必須先建立新的 ADK 應用程式執行個體,或取得現有執行個體。
如要取得與特定資源 ID 對應的 ADK 應用程式,請按照下列步驟操作:
Python 適用的 Vertex AI SDK
請執行下列程式碼:
from vertexai import agent_engines
adk_app = agent_engines.get(RESOURCE_ID)
或者,您也可以提供代理程式的完整資源名稱:
adk_app = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
Python 要求程式庫
請執行下列程式碼:
from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests
def get_identity_token():
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.token
response = requests.get(
f"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {get_identity_token()}",
},
)
REST API
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID
支援的作業
AdkApp
支援下列作業:
stream_query
:用於將查詢的回應串流傳送。create_session
:用於建立新工作階段。list_sessions
:列出可用的時段。get_session
:用於擷取特定工作階段。delete_session
:用於刪除特定工作階段。
如要列出所有支援的作業:
Python 適用的 Vertex AI SDK
請執行下列程式碼:
adk_app.operation_schemas()
Python 要求程式庫
請執行下列程式碼:
import json
json.loads(response.content).get("spec").get("classMethods")
REST API
在 curl 要求的回應中以 spec.class_methods
表示。
管理工作階段
將代理部署至 Vertex AI Agent Engine 後,AdkApp
就會使用雲端管理式工作階段。本節說明如何使用受管理的會話。
建立工作階段
如要為使用者建立工作階段,請按照下列步驟操作:
Python 適用的 Vertex AI SDK
session = adk_app.create_session(user_id="USER_ID")
Python 要求程式庫
請執行下列程式碼:
from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests
import json
def get_identity_token():
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.token
response = requests.post(
f"https://{adk_app.api_client.api_endpoint}/v1/{adk_app.resource_name}:query",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {get_identity_token()}",
},
data=json.dumps({
"class_method": "create_session",
"input": {"user_id": "USER_ID"},
}),
)
print(response.content)
REST API
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:query -d '{"class_method": "create_session", "input": {"user_id": "USER_ID"},}'
其中 USER_ID 是使用者定義的 ID,字元上限為 128 個。
列出工作階段
如要列出使用者的工作階段,請按照下列步驟操作:
Python 適用的 Vertex AI SDK
adk_app.list_sessions(user_id="USER_ID")
要求
請執行下列程式碼:
from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests
import json
def get_identity_token():
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.token
response = requests.post(
f"https://{adk_app.api_client.api_endpoint}/v1/{adk_app.resource_name}:query",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {get_identity_token()}",
},
data=json.dumps({
"class_method": "list_sessions",
"input": {"user_id": "USER_ID"},
}),
)
print(response.content)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:query -d '{"class_method": "list_sessions", "input": {"user_id": "USER_ID"},}'
其中 USER_ID 是使用者定義的 ID,字元上限為 128 個。
取得工作階段
如要取得特定工作階段,您必須同時提供使用者 ID 和工作階段 ID:
Python 適用的 Vertex AI SDK
session = adk_app.get_session(user_id="USER_ID", session_id="SESSION_ID")
要求
請執行下列程式碼:
from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests
import json
def get_identity_token():
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.token
response = requests.post(
f"https://{adk_app.api_client.api_endpoint}/v1/{adk_app.resource_name}:query",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {get_identity_token()}",
},
data=json.dumps({
"class_method": "get_session",
"input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},
}),
)
print(response.content)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:query -d '{"class_method": "get_session", "input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},}'
刪除工作階段
如要刪除工作階段,您必須同時提供使用者 ID 和工作階段 ID:
Python 適用的 Vertex AI SDK
adk_app.delete_session(user_id="USER_ID", session_id="SESSION_ID")
要求
請執行下列程式碼:
from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests
import json
def get_identity_token():
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.token
response = requests.post(
f"https://{adk_app.api_client.api_endpoint}/v1/{adk_app.resource_name}:query",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {get_identity_token()}",
},
data=json.dumps({
"class_method": "delete_session",
"input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},
}),
)
print(response.content)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:query -d '{"class_method": "delete_session", "input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},}'
串流傳送對查詢的回應
如要在會話中串流代理程式的回應,請按照下列步驟操作:
Python 適用的 Vertex AI SDK
for event in adk_app.stream_query(
user_id="USER_ID",
session_id="SESSION_ID", # Optional
message="What is the exchange rate from US dollars to SEK today?",
):
print(event)
要求
from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests
def get_identity_token():
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.token
requests.post(
f"https://{adk_app.api_client.api_endpoint}/v1/{adk_app.resource_name}:streamQuery",
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {get_identity_token()}",
},
data=json.dumps({
"class_method": "stream_query",
"input": {
"user_id": "USER_ID",
"session_id": "SESSION_ID",
"message": "What is the exchange rate from US dollars to SEK today?",
},
}),
stream=True,
)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:streamQuery?alt=sse -d '{
"class_method": "stream_query",
"input": {
"user_id": "USER_ID",
"session_id": "SESSION_ID",
"message": "What is the exchange rate from US dollars to SEK today?",
}
}'
後續步驟
- 使用代理程式。
- 評估服務專員。
- 管理已部署的服務專員。
- 取得支援。