Además de las instrucciones generales para usar un agente, en esta página se describen las funciones específicas de AdkApp
.
Antes de empezar
En este tutorial se da por hecho que has leído y seguido las instrucciones de los siguientes artículos:
- Desarrollar un agente de Agent Development Kit: para desarrollar
agent
como instancia deAdkApp
. - Autenticación de usuario: para autenticarte como usuario y consultar al agente.
Para consultar una aplicación ADK, primero debes crear una instancia de aplicación ADK o obtener una instancia ya creada.
Para obtener la aplicación del ADK correspondiente a un ID de recurso específico, haz lo siguiente:
SDK de Vertex AI para Python
Ejecuta el siguiente código:
from vertexai import agent_engines
adk_app = agent_engines.get(RESOURCE_ID)
También puedes proporcionar el nombre completo del recurso del agente:
adk_app = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
Biblioteca de solicitudes de Python
Ejecuta el siguiente código:
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
Operaciones admitidas
Se admiten las siguientes operaciones para AdkApp
:
async_stream_query
: para transmitir una respuesta a una consulta.async_create_session
: para crear una sesión.async_list_sessions
: para mostrar las sesiones disponibles.async_get_session
: para recuperar una sesión específica.async_delete_session
: para eliminar una sesión específica.
Para enumerar todas las operaciones admitidas, haz lo siguiente:
SDK de Vertex AI para Python
Ejecuta el siguiente código:
adk_app.operation_schemas()
Biblioteca de solicitudes de Python
Ejecuta el siguiente código:
import json
json.loads(response.content).get("spec").get("classMethods")
API REST
Se representa en spec.class_methods
de la respuesta a la solicitud curl.
Gestionar sesiones
AdkApp
usa sesiones gestionadas basadas en la nube después de desplegar el agente en Vertex AI Agent Engine. En esta sección se describe cómo usar las sesiones gestionadas.
Crear una sesión
Para crear una sesión de un usuario, sigue estos pasos:
SDK de Vertex AI para Python
session = await adk_app.async_create_session(user_id="USER_ID")
Biblioteca de solicitudes de Python
Ejecuta el siguiente código:
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"},}'
donde USER_ID es un ID definido por el usuario con un límite de 128 caracteres.
Mostrar sesiones
Para enumerar las sesiones de un usuario, sigue estos pasos:
SDK de Vertex AI para Python
await adk_app.async_list_sessions(user_id="USER_ID")
Biblioteca de solicitudes de Python
Ejecuta el siguiente código:
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"},}'
donde USER_ID es un ID definido por el usuario con un límite de 128 caracteres.
Obtener una sesión
Para obtener una sesión específica, necesita el ID de usuario y el ID de sesión:
SDK de Vertex AI para Python
session = await adk_app.async_get_session(user_id="USER_ID", session_id="SESSION_ID")
Biblioteca de solicitudes de Python
Ejecuta el siguiente código:
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"},}'
Eliminar una sesión
Para eliminar una sesión, necesita el ID de usuario y el ID de sesión:
SDK de Vertex AI para Python
await adk_app.async_delete_session(user_id="USER_ID", session_id="SESSION_ID")
Biblioteca de solicitudes de Python
Ejecuta el siguiente código:
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"},}'
Enviar una respuesta a una consulta
Para transmitir respuestas de un agente en una sesión:
SDK de Vertex AI para 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)
Biblioteca de solicitudes de 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?",
}
}'