En plus des instructions générales pour utiliser un agent, cette page décrit les fonctionnalités spécifiques à AdkApp
.
Avant de commencer
Ce tutoriel suppose que vous avez lu et suivi les instructions de :
- Développer un agent Agent Development Kit : pour développer
agent
en tant qu'instance deAdkApp
. - Authentification de l'utilisateur pour s'authentifier en tant qu'utilisateur afin d'interroger l'agent.
- Importez et initialisez le SDK pour initialiser le client afin d'obtenir une instance déployée (si nécessaire).
Pour interroger une application ADK, vous devez d'abord créer une instance d'application ADK ou obtenir une instance existante.
Pour obtenir l'application ADK correspondant à un ID de ressource spécifique :
SDK Vertex AI pour Python
Exécutez le code suivant :
adk_app = client.agent_engines.get(name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
Bibliothèque de requêtes Python
Exécutez le code suivant :
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()}",
},
)
API 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
Opérations compatibles
Les opérations suivantes sont acceptées pour AdkApp
:
async_stream_query
: pour diffuser une réponse à une requête.async_create_session
: pour créer une session.async_list_sessions
: pour lister les sessions disponibles.async_get_session
: pour récupérer une session spécifique.async_delete_session
: pour supprimer une session spécifique.
Pour lister toutes les opérations compatibles :
SDK Vertex AI pour Python
Exécutez le code suivant :
adk_app.operation_schemas()
Bibliothèque de requêtes Python
Exécutez le code suivant :
import json
json.loads(response.content).get("spec").get("classMethods")
API REST
Représenté dans spec.class_methods
à partir de la réponse à la requête curl.
Gérer des sessions
AdkApp
utilise des sessions gérées basées sur le cloud après le déploiement de l'agent sur Vertex AI Agent Engine. Cette section explique comment utiliser les sessions gérées.
Créer une session
Pour créer une session pour un utilisateur :
SDK Vertex AI pour Python
session = await adk_app.async_create_session(user_id="USER_ID")
Bibliothèque de requêtes Python
Exécutez le code suivant :
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": "async_create_session",
"input": {"user_id": "USER_ID"},
}),
)
print(response.content)
API 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": "async_create_session", "input": {"user_id": "USER_ID"},}'
où USER_ID est un ID défini par l'utilisateur, dont la limite de caractères est de 128.
Répertorier les sessions
Pour lister les sessions d'un utilisateur :
SDK Vertex AI pour Python
await adk_app.async_list_sessions(user_id="USER_ID")
Bibliothèque de requêtes Python
Exécutez le code suivant :
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": "async_list_sessions",
"input": {"user_id": "USER_ID"},
}),
)
print(response.content)
API 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": "async_list_sessions", "input": {"user_id": "USER_ID"},}'
où USER_ID est un ID défini par l'utilisateur, dont la limite de caractères est de 128.
Obtenir une session
Pour obtenir une session spécifique, vous avez besoin de l'ID utilisateur et de l'ID de session :
SDK Vertex AI pour Python
session = await adk_app.async_get_session(user_id="USER_ID", session_id="SESSION_ID")
Bibliothèque de requêtes Python
Exécutez le code suivant :
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": "async_get_session",
"input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},
}),
)
print(response.content)
API 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": "async_get_session", "input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},}'
Supprimer une session
Pour supprimer une session, vous avez besoin de l'ID utilisateur et de l'ID de session :
SDK Vertex AI pour Python
await adk_app.async_delete_session(user_id="USER_ID", session_id="SESSION_ID")
Bibliothèque de requêtes Python
Exécutez le code suivant :
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": "async_delete_session",
"input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},
}),
)
print(response.content)
API 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": "async_delete_session", "input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},}'
Diffuser une réponse à une requête
Pour diffuser des réponses d'un agent dans une session :
SDK Vertex AI pour Python
async for event in adk_app.async_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)
Bibliothèque de requêtes 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
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": "async_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,
)
API 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": "async_stream_query",
"input": {
"user_id": "USER_ID",
"session_id": "SESSION_ID",
"message": "What is the exchange rate from US dollars to SEK today?",
}
}'