このページでは、エージェントの使用に関する一般的な手順に加えて、AdkApp
に固有の機能について説明します。
始める前に
このチュートリアルは、次の手順を読んで理解していることを前提としています。
- エージェント開発キット エージェントを開発する:
AdkApp
のインスタンスとしてagent
を開発します。 - ユーザー認証: エージェントにクエリを実行するユーザーとして認証します。
ADK アプリケーションにクエリを実行するには、まず新しい ADK アプリケーション インスタンスを作成するか、既存のインスタンスを取得する必要があります。
特定のリソース ID に対応する ADK アプリケーションを取得するには:
Vertex AI SDK for Python
次のコードを実行します。
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
: 特定のセッションを削除します。
サポートされているすべてのオペレーションを一覧表示するには:
Vertex AI SDK for Python
次のコードを実行します。
adk_app.operation_schemas()
Python リクエスト ライブラリ
次のコードを実行します。
import json
json.loads(response.content).get("spec").get("classMethods")
REST API
curl リクエストに対するレスポンスから spec.class_methods
で表されます。
セッションの管理
AdkApp
は、エージェントを Vertex AI Agent Engine にデプロイした後に、クラウドベースのマネージド セッションを使用します。このセクションでは、マネージド セッションの使用方法について説明します。
セッションを作成する
ユーザーのセッションを作成するには:
Vertex AI SDK for Python
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 は文字数制限が 128 のユーザー定義 ID です。
セッションを一覧表示する
ユーザーのセッションを一覧表示するには:
Vertex AI SDK for Python
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 は文字数制限が 128 のユーザー定義 ID です。
セッションを取得する
特定のセッションを取得するには、ユーザー ID とセッション ID の両方が必要です。
Vertex AI SDK for Python
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 の両方が必要です。
Vertex AI SDK for Python
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"},}'
クエリへのレスポンスをストリーミングする
セッションでエージェントからのレスポンスをストリーミングするには:
Vertex AI SDK for Python
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?",
}
}'