Spanner Admin Tools Sample
Introduction
This sample agent demonstrates the Spanner first-party tools in ADK,
distributed via the google.adk.tools.spanner module. These tools include:
list_instances
Fetches Spanner instance names present in a project.
get_instance
Fetches details of a given Spanner instance.
create_database
Creates a Spanner database within a given instance and project.
list_databases
Fetches Spanner database names present in an instance.
create_instance
Creates a Spanner instance within a GCP project.
list_instance_configs
Fetches Spanner instance configurations available for a project.
get_instance_config
Fetches details of a Spanner instance configuration.
How to use
Set up environment variables in your .env file for using
Google AI Studio
or
Google Cloud Vertex AI
for the LLM service for your agent. For example, for using Google AI Studio you
would set:
- GOOGLE_GENAI_USE_ENTERPRISE=FALSE
- GOOGLE_API_KEY={your api key}
With Application Default Credentials
This mode is useful for quick development when the agent builder is the only user interacting with the agent. The tools are run with these credentials.
-
Create application default credentials on the machine where the agent would be running by following https://cloud.google.com/docs/authentication/provide-credentials-adc.
-
Set
CREDENTIALS_TYPE=Noneinagent.py -
Run the agent
With Service Account Keys
This mode is useful for quick development when the agent builder wants to run the agent with service account credentials. The tools are run with these credentials.
-
Create service account key by following https://cloud.google.com/iam/docs/service-account-creds#user-managed-keys.
-
Set
CREDENTIALS_TYPE=AuthCredentialTypes.SERVICE_ACCOUNTinagent.py -
Download the key file and replace
"service_account_key.json"with the path -
Run the agent
With Interactive OAuth
-
Follow https://developers.google.com/identity/protocols/oauth2#1.-obtain-oauth-2.0-credentials-from-the-dynamic_data.setvar.console_name. to get your client id and client secret. Be sure to choose "web" as your client type.
-
Follow https://developers.google.com/workspace/guides/configure-oauth-consent to add scope "https://www.googleapis.com/auth/spanner.data" and "https://www.googleapis.com/auth/spanner.admin" as declaration, this is used for review purpose.
-
Follow https://developers.google.com/identity/protocols/oauth2/web-server#creatingcred to add http://localhost/dev-ui/ to "Authorized redirect URIs".
Note: localhost here is just a hostname that you use to access the dev ui, replace it with the actual hostname you use to access the dev ui.
-
For 1st run, allow popup for localhost in Chrome.
-
Configure your
.envfile to add two more variables before running the agent:- OAUTH_CLIENT_ID={your client id}
- OAUTH_CLIENT_SECRET={your client secret}
Note: don't create a separate .env, instead put it to the same .env file that stores your Vertex AI or Dev ML credentials
-
Set
CREDENTIALS_TYPE=AuthCredentialTypes.OAUTH2inagent.pyand run the agent
Sample prompts
- Show me all Spanner instances in my project.
- Give me details about the 'my-instance' Spanner instance.
- List all databases in instance 'my-instance'.
- Create a new Spanner database named 'my-db' in instance 'my-instance'.
- List all instance configurations available for my project.
- Get details about 'regional-us-central1' configuration.
- Create a Spanner instance 'new-instance' with 'regional-us-central1' config and name 'new-instance'.