Além das instruções gerais para usar um agente,
esta página descreve os recursos específicos do AdkApp
.
Antes de começar
Este tutorial pressupõe que você leu e seguiu as instruções em:
- Desenvolver um agente do Kit de desenvolvimento de agentes: para desenvolver
agent
como uma instância deAdkApp
. - Autenticação de usuário para autenticar como um usuário para consultar o agente.
Para consultar um aplicativo do ADK, primeiro é necessário criar uma nova instância do aplicativo do ADK ou buscar uma instância atual.
Para acessar o aplicativo ADK correspondente a um ID de recurso específico:
SDK da Vertex AI para Python
Execute o seguinte código:
from vertexai import agent_engines
adk_app = agent_engines.get(RESOURCE_ID)
Como alternativa, forneça o nome completo do recurso do agente:
adk_app = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
Biblioteca de solicitações do Python
Execute o seguinte 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
Operações suportadas
As seguintes operações são compatíveis com AdkApp
:
stream_query
: para streaming de uma resposta a uma consulta.create_session
: para criar uma nova sessão.list_sessions
: para listar as sessões disponíveis.get_session
: para recuperar uma sessão específica.delete_session
: para excluir uma sessão específica.
Para listar todas as operações compatíveis:
SDK da Vertex AI para Python
Execute o seguinte código:
adk_app.operation_schemas()
Biblioteca de solicitações do Python
Execute o seguinte código:
import json
json.loads(response.content).get("spec").get("classMethods")
API REST
Representado em spec.class_methods
da resposta à solicitação do curl.
Gerenciar sessões
O AdkApp
usa sessões gerenciadas baseadas na nuvem depois que você implanta o agente no Vertex AI Agent Engine. Esta seção descreve como usar sessões gerenciadas.
Criar uma sessão
Para criar uma sessão para um usuário:
SDK da Vertex AI para Python
session = adk_app.create_session(user_id="USER_ID")
Biblioteca de solicitações do Python
Execute o seguinte 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": "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": "create_session", "input": {"user_id": "USER_ID"},}'
em que USER_ID é um ID definido pelo usuário com um limite de 128 caracteres.
Listar sessões
Para listar as sessões de um usuário:
SDK da Vertex AI para Python
adk_app.list_sessions(user_id="USER_ID")
solicitações
Execute o seguinte 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": "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"},}'
em que USER_ID é um ID definido pelo usuário com um limite de 128 caracteres.
Acessar uma sessão
Para acessar uma sessão específica, você precisa do ID do usuário e do ID da sessão:
SDK da Vertex AI para Python
session = adk_app.get_session(user_id="USER_ID", session_id="SESSION_ID")
solicitações
Execute o seguinte 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": "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"},}'
Excluir uma sessão
Para excluir uma sessão, você precisa do ID do usuário e do ID da sessão:
SDK da Vertex AI para Python
adk_app.delete_session(user_id="USER_ID", session_id="SESSION_ID")
solicitações
Execute o seguinte 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": "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"},}'
Transmitir uma resposta a uma consulta
Para transmitir as respostas de um agente em uma sessão:
SDK da Vertex AI para 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)
solicitações
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?",
}
}'