Halaman ini menunjukkan cara mengembangkan agen menggunakan template Agent Development Kit (class AdkApp
di Vertex AI SDK untuk Python). Agen menampilkan nilai tukar antara dua mata uang pada tanggal yang ditentukan.
Ikuti langkah-langkah berikut:
Sebelum memulai
Pastikan lingkungan Anda sudah disiapkan dengan mengikuti langkah-langkah di Menyiapkan lingkungan.
Menentukan dan mengonfigurasi model
Tentukan versi model:
model = "gemini-2.0-flash"
(Opsional) Konfigurasikan setelan keamanan model. Untuk mempelajari lebih lanjut opsi yang tersedia untuk setelan keamanan di Gemini, lihat Mengonfigurasi atribut keamanan. Berikut adalah contoh cara mengonfigurasi setelan keamanan:
from google.genai import types
safety_settings = [
types.SafetySetting(
category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
threshold=types.HarmBlockThreshold.OFF,
),
]
(Opsional) Tentukan parameter pembuatan konten:
from google.genai import types
generate_content_config = types.GenerateContentConfig(
safety_settings=safety_settings,
temperature=0.28,
max_output_tokens=1000,
top_p=0.95,
)
Buat AdkApp
menggunakan konfigurasi model:
from google.adk.agents import Agent
from vertexai.preview.reasoning_engines import AdkApp
agent = Agent(
model=model, # Required.
name='currency_exchange_agent', # Required.
generate_content_config=generate_content_config, # Optional.
)
app = AdkApp(agent=agent)
Jika Anda menjalankan di lingkungan interaktif, seperti terminal atau notebook Colab, Anda dapat menjalankan kueri sebagai langkah pengujian perantara:
for event in app.stream_query(
user_id="USER_ID", # Required
message="What is the exchange rate from US dollars to Swedish currency?",
):
print(event)
dengan USER_ID adalah ID yang ditentukan pengguna dengan batas karakter 128.
Responsnya adalah kamus Python yang mirip dengan contoh berikut:
{'actions': {'artifact_delta': {},
'requested_auth_configs': {},
'state_delta': {}},
'author': 'currency_exchange_agent',
'content': {'parts': [{'text': 'To provide you with the most accurate '
'exchange rate, I need to know the specific '
'currencies you\'re asking about. "Swedish '
'currency" could refer to:\n'
'\n'
'* **Swedish Krona (SEK):** This is the '
'official currency of Sweden.\n'
'\n'
"Please confirm if you're interested in the "
'exchange rate between USD and SEK. Once you '
'confirm, I can fetch the latest exchange rate '
'for you.\n'}],
'role': 'model'},
'id': 'LYg7wg8G',
'invocation_id': 'e-113ca547-0f19-4d50-9dde-f76cbc001dce',
'timestamp': 1744166956.925927}
Menentukan dan menggunakan alat
Setelah menentukan model, tentukan alat yang digunakan model untuk penalaran.
Saat menentukan fungsi, Anda harus menyertakan komentar yang sepenuhnya dan jelas menjelaskan parameter fungsi, fungsi yang dilakukan, dan fungsi yang ditampilkan. Informasi ini digunakan oleh model untuk menentukan fungsi yang akan digunakan. Anda juga harus menguji fungsi secara lokal untuk mengonfirmasi bahwa fungsi tersebut berfungsi.
Gunakan kode berikut untuk menentukan fungsi yang menampilkan nilai tukar:
def get_exchange_rate(
currency_from: str = "USD",
currency_to: str = "EUR",
currency_date: str = "latest",
):
"""Retrieves the exchange rate between two currencies on a specified date.
Uses the Frankfurter API (https://api.frankfurter.app/) to obtain
exchange rate data.
Args:
currency_from: The base currency (3-letter currency code).
Defaults to "USD" (US Dollar).
currency_to: The target currency (3-letter currency code).
Defaults to "EUR" (Euro).
currency_date: The date for which to retrieve the exchange rate.
Defaults to "latest" for the most recent exchange rate data.
Can be specified in YYYY-MM-DD format for historical rates.
Returns:
dict: A dictionary containing the exchange rate information.
Example: {"amount": 1.0, "base": "USD", "date": "2023-11-24",
"rates": {"EUR": 0.95534}}
"""
import requests
response = requests.get(
f"https://api.frankfurter.app/{currency_date}",
params={"from": currency_from, "to": currency_to},
)
return response.json()
Untuk menguji fungsi sebelum menggunakannya di agen, jalankan perintah berikut:
get_exchange_rate(currency_from="USD", currency_to="SEK")
Responsnya akan mirip dengan berikut ini:
{'amount': 1.0, 'base': 'USD', 'date': '2025-04-03', 'rates': {'SEK': 9.6607}}
Untuk menggunakan alat di dalam template AdkApp
, tambahkan ke daftar alat di bagian
argumen tools=
:
from google.adk.agents import Agent
agent = Agent(
model=model, # Required.
name='currency_exchange_agent', # Required.
tools=[get_exchange_rate], # Optional.
)
Anda dapat menguji agen secara lokal dengan menjalankan kueri pengujian terhadapnya. Jalankan perintah berikut untuk menguji agen secara lokal menggunakan dolar AS dan Krona Swedia:
from vertexai.preview.reasoning_engines import AdkApp
app = AdkApp(agent=agent)
for event in app.stream_query(
user_id="USER_ID",
message="What is the exchange rate from US dollars to SEK on 2025-04-03?",
):
print(event)
Responsnya adalah urutan kamus yang mirip dengan berikut ini:
{'author': 'currency_exchange_agent',
'content': {'parts': [{'function_call': {'args': {'currency_date': '2025-04-03',
'currency_from': 'USD',
'currency_to': 'SEK'},
'id': 'adk-e39f3ba2-fa8c-4169-a63a-8e4c62b89818',
'name': 'get_exchange_rate'}}],
'role': 'model'},
'id': 'zFyIaaif',
# ...
}
{'author': 'currency_exchange_agent',
'content': {'parts': [{'function_response': {'id': 'adk-e39f3ba2-fa8c-4169-a63a-8e4c62b89818',
'name': 'get_exchange_rate',
'response': {'amount': 1.0,
'base': 'USD',
'date': '2025-04-03',
'rates': {'SEK': 9.6607}}}}],
'role': 'user'},
'id': 'u2YR4Uom',
# ...
}
{'author': 'currency_exchange_agent',
'content': {'parts': [{'text': 'The exchange rate from USD to SEK on '
'2025-04-03 is 9.6607.'}],
'role': 'model'},
'id': 'q3jWA3wl',
# ...
}
Mengelola sesi
AdkApp
menggunakan sesi dalam memori saat berjalan secara lokal dan menggunakan sesi terkelola berbasis cloud setelah Anda men-deploy agen ke Vertex AI Agent Engine. Bagian ini menjelaskan cara mengonfigurasi agen ADK agar berfungsi dengan sesi terkelola.
(Opsional) Menyesuaikan database sesi
Jika ingin mengganti layanan sesi terkelola default dengan database Anda sendiri, Anda dapat menentukan fungsi session_service_builder
sebagai berikut:
def session_service_builder():
from google.adk.sessions import InMemorySessionService
return InMemorySessionService()
Teruskan database Anda ke AdkApp
sebagai session_service_builder=
:
from vertexai.preview.reasoning_engines import AdkApp
app = AdkApp(
agent=agent, # Required.
session_service_builder=session_service_builder, # Optional.
)
Menggunakan agen dengan sesi
Saat Anda menjalankan agen secara lokal, petunjuk berikut menggunakan sesi dalam memori:
Buat sesi untuk agen Anda:
session = app.create_session(user_id="USER_ID")
Mencantumkan sesi yang terkait dengan agen Anda:
app.list_sessions(user_id="USER_ID")
Mendapatkan sesi tertentu:
session = app.get_session(user_id="USER_ID", session_id="SESSION_ID")
dengan SESSION_ID adalah ID untuk sesi tertentu yang ingin Anda ambil.
Buat kueri agen menggunakan sesi:
for event in app.stream_query(
user_id="USER_ID",
session_id=SESSION_ID, # Optional. you can pass in the session_id when querying the agent
message="What is the exchange rate from US dollars to Swedish currency on 2025-04-03?",
):
print(event)
Agen mungkin merespons dengan permintaan informasi seperti berikut:
{'author': 'currency_exchange_agent',
'content': {'parts': [{'text': 'I need to know the Swedish currency code to '
'provide you with the exchange rate.'}],
'role': 'model'},
'id': 'wIgZAtQ4',
#...
}
Anda dapat mengirim respons dalam sesi (misalnya, "SEK"
) dengan menentukan
session_id
:
for event in app.stream_query(
user_id="USER_ID",
session_id=session.id, # Optional. you can pass in the session_id when querying the agent
message="SEK",
):
print(event)
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',
# ...
}