Menggunakan agen Agent Development Kit

Sebelum memulai

Tutorial ini mengasumsikan bahwa Anda telah membaca dan mengikuti petunjuk dalam:

Mendapatkan instance agen

Untuk membuat kueri AdkApp, Anda harus membuat instance baru atau mendapatkan instance yang ada terlebih dahulu.

Untuk mendapatkan AdkApp yang sesuai dengan ID resource tertentu:

Vertex AI SDK untuk Python

Jalankan kode berikut:

import vertexai

client = vertexai.Client(  # For service interactions via client.agent_engines
    project="PROJECT_ID",
    location="LOCATION",
)

adk_app = client.agent_engines.get(name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")

print(adk_app)

di mana

Library permintaan Python

Jalankan kode berikut:

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

Saat menggunakan Vertex AI SDK untuk Python, objek adk_app sesuai dengan class AgentEngine yang berisi hal berikut:

  • adk_app.api_resource dengan informasi tentang agen yang di-deploy. Anda juga dapat memanggil adk_app.operation_schemas() untuk menampilkan daftar operasi yang didukung adk_app. Lihat Operasi yang didukung untuk mengetahui detailnya.
  • adk_app.api_client yang memungkinkan interaksi layanan sinkron
  • adk_app.async_api_client yang memungkinkan interaksi layanan asinkron

Bagian selanjutnya mengasumsikan bahwa Anda memiliki instance AgentEngine, yang diberi nama adk_app.

Operasi yang didukung

Operasi berikut didukung untuk AdkApp:

Untuk mencantumkan semua operasi yang didukung:

Vertex AI SDK untuk Python

Jalankan kode berikut:

adk_app.operation_schemas()

Library permintaan Python

Jalankan kode berikut:

import json

json.loads(response.content).get("spec").get("classMethods")

REST API

Ditampilkan di spec.class_methods dari respons terhadap permintaan curl.

Mengelola sesi

AdkApp menggunakan sesi terkelola berbasis cloud setelah Anda men-deploy agen ke Vertex AI Agent Engine. Bagian ini menjelaskan cara menggunakan sesi terkelola.

Membuat sesi

Untuk membuat sesi bagi pengguna:

Vertex AI SDK untuk Python

session = await adk_app.async_create_session(user_id="USER_ID")

print(session)

Library permintaan Python

Jalankan kode berikut:

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)

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": "async_create_session", "input": {"user_id": "USER_ID"},}'
  • USER_ID: Pilih ID pengguna Anda sendiri dengan batas karakter 128. Contoh, user-123.

Sesi dibuat sebagai representasi kamus dari objek sesi ADK.

Mencantumkan sesi

Untuk mencantumkan sesi pengguna:

Vertex AI SDK untuk Python

response = await adk_app.async_list_sessions(user_id="USER_ID"):
for session in response.sessions:
    print(session)

Library permintaan Python

Jalankan kode berikut:

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)

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": "async_list_sessions", "input": {"user_id": "USER_ID"},}'

dengan USER_ID adalah ID pengguna yang Anda tentukan. Contoh, user-123.

Jika ada sesi yang ditampilkan, sesi tersebut menggunakan bentuk kamus dari objek sesi ADK.

Mendapatkan sesi

Untuk mendapatkan sesi tertentu, Anda memerlukan ID pengguna dan ID sesi:

Vertex AI SDK untuk Python

session = await adk_app.async_get_session(user_id="USER_ID", session_id="SESSION_ID")

print(session)

Library permintaan Python

Jalankan kode berikut:

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)

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": "async_get_session", "input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},}'

session adalah representasi kamus dari objek sesi ADK.

Menghapus sesi

Untuk menghapus sesi, Anda memerlukan ID pengguna dan ID sesi:

Vertex AI SDK untuk Python

await adk_app.async_delete_session(user_id="USER_ID", session_id="SESSION_ID")

Library permintaan Python

Jalankan kode berikut:

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)

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": "async_delete_session", "input": {"user_id": "USER_ID", "session_id": "SESSION_ID"},}'

Mengalirkan respons terhadap kueri

Untuk men-streaming respons dari agen dalam sesi:

Vertex AI SDK untuk 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)

Library permintaan 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,
)

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: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?",
  }
}'

Jika menggunakan Vertex AI SDK untuk Python, Anda akan menerima kelanjutan percakapan seperti urutan kamus berikut:

{'author': 'currency_exchange_agent',
 'content': {'parts': [{'function_call': {'args': {'currency_date': '2025-04-03',
                                                   'currency_from': 'USD',
                                                   'currency_to': 'SEK'},
                                          'id': 'adk-2b9230a6-4b92-4a1b-9a65-b708ff6c68b6',
                                          'name': 'get_exchange_rate'}}],
             'role': 'model'},
 'id': 'bOPHtzji',
 # ...
}
{'author': 'currency_exchange_agent',
 'content': {'parts': [{'function_response': {'id': 'adk-2b9230a6-4b92-4a1b-9a65-b708ff6c68b6',
                                              'name': 'get_exchange_rate',
                                              'response': {'amount': 1.0,
                                                           'base': 'USD',
                                                           'date': '2025-04-03',
                                                           'rates': {'SEK': 9.6607}}}}],
             'role': 'user'},
 'id': '9AoDFmiL',
 # ...
}
{'author': 'currency_exchange_agent',
 'content': {'parts': [{'text': 'The exchange rate from USD to SEK on '
                                '2025-04-03 is 1 USD to 9.6607 SEK.'}],
             'role': 'model'},
 'id': 'hmle7trT',
 # ...
}

Mengelola kenangan

AdkApp menggunakan Vertex AI Agent Engine Memory Bank jika Anda menyertakan PreloadMemoryTool dalam definisi agen dan men-deploy agen ke Vertex AI Agent Engine. Bagian ini menjelaskan cara menggunakan pembuatan dan pengambilan kenangan dari agen melalui penerapan default layanan memori ADK.

Menambahkan sesi ke memori

Untuk menyimpan memori informasi penting dalam sesi (yang dapat digunakan dalam sesi mendatang), gunakan metode async_add_session_to_memory:

Vertex AI SDK untuk Python

await adk_app.async_add_session_to_memory(session="SESSION_DICT")

dengan SESSION_DICT adalah bentuk kamus dari objek sesi ADK.

Menelusuri kenangan

Untuk menelusuri memori agen, Anda dapat menggunakan metode async_search_memory:

Vertex AI SDK untuk Python

response = await adk_app.async_search_memory(
    user_id="USER_ID",
    query="QUERY",
)
print(response)

di mana

  • USER_ID adalah cakupan untuk kenangan yang relevan.
  • QUERY adalah kueri yang akan digunakan untuk melakukan penelusuran kemiripan.

Langkah berikutnya