diff --git a/docs/en/getting-started/colab_quickstart.ipynb b/docs/en/getting-started/colab_quickstart.ipynb index 828a2197be9..6ce437e9494 100644 --- a/docs/en/getting-started/colab_quickstart.ipynb +++ b/docs/en/getting-started/colab_quickstart.ipynb @@ -509,7 +509,7 @@ }, "outputs": [], "source": [ - "! pip install toolbox-core --quiet\n", + "! pip install toolbox-adk --quiet\n", "! pip install google-adk --quiet" ] }, @@ -525,14 +525,18 @@ "from google.adk.runners import Runner\n", "from google.adk.sessions import InMemorySessionService\n", "from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService\n", + "from google.adk.tools.toolbox_toolset import ToolboxToolset\n", "from google.genai import types\n", - "from toolbox_core import ToolboxSyncClient\n", "\n", "import os\n", "# TODO(developer): replace this with your Google API key\n", "os.environ['GOOGLE_API_KEY'] = \"\"\n", "\n", - "toolbox_client = ToolboxSyncClient(\"http://127.0.0.1:5000\")\n", + "# Configure toolset\n", + "toolset = ToolboxToolset(\n", + " server_url=\"http://127.0.0.1:5000\",\n", + " toolset_name=\"my-toolset\"\n", + ")\n", "\n", "prompt = \"\"\"\n", " You're a helpful hotel assistant. You handle hotel searching, booking and\n", @@ -549,7 +553,7 @@ " name='hotel_agent',\n", " description='A helpful AI assistant.',\n", " instruction=prompt,\n", - " tools=toolbox_client.load_toolset(\"my-toolset\"),\n", + " tools=[toolset],\n", ")\n", "\n", "session_service = InMemorySessionService()\n", diff --git a/docs/en/getting-started/local_quickstart.md b/docs/en/getting-started/local_quickstart.md index 684b4b03e9f..98dcd359d2c 100644 --- a/docs/en/getting-started/local_quickstart.md +++ b/docs/en/getting-started/local_quickstart.md @@ -52,7 +52,7 @@ runtime](https://research.google.com/colaboratory/local-runtimes.html). {{< tabpane persist=header >}} {{< tab header="ADK" lang="bash" >}} -pip install toolbox-core +pip install toolbox-adk {{< /tab >}} {{< tab header="Langchain" lang="bash" >}} diff --git a/docs/en/getting-started/quickstart/python/adk/quickstart.py b/docs/en/getting-started/quickstart/python/adk/quickstart.py index d341e898426..477ced578d3 100644 --- a/docs/en/getting-started/quickstart/python/adk/quickstart.py +++ b/docs/en/getting-started/quickstart/python/adk/quickstart.py @@ -1,15 +1,17 @@ from google.adk import Agent from google.adk.apps import App -from toolbox_core import ToolboxSyncClient +from google.adk.tools.toolbox_toolset import ToolboxToolset # TODO(developer): update the TOOLBOX_URL to your toolbox endpoint -client = ToolboxSyncClient("http://127.0.0.1:5000") +toolset = ToolboxToolset( + server_url="http://127.0.0.1:5000", +) root_agent = Agent( name='root_agent', model='gemini-2.5-flash', instruction="You are a helpful AI assistant designed to provide accurate and useful information.", - tools=client.load_toolset(), + tools=[toolset], ) app = App(root_agent=root_agent, name="my_agent") diff --git a/docs/en/getting-started/quickstart/python/adk/requirements.txt b/docs/en/getting-started/quickstart/python/adk/requirements.txt index 7fb84e8d674..230bf7313f2 100644 --- a/docs/en/getting-started/quickstart/python/adk/requirements.txt +++ b/docs/en/getting-started/quickstart/python/adk/requirements.txt @@ -1,3 +1,3 @@ google-adk==1.21.0 -toolbox-core==0.5.4 +toolbox-adk>=0.1.0 pytest==9.0.2 \ No newline at end of file diff --git a/docs/en/how-to/deploy_adk_agent.md b/docs/en/how-to/deploy_adk_agent.md index adb390352a7..169d2699ed9 100644 --- a/docs/en/how-to/deploy_adk_agent.md +++ b/docs/en/how-to/deploy_adk_agent.md @@ -49,7 +49,7 @@ with the necessary configuration for deployment to Vertex AI Agent Engine. 4. Add `toolbox-core` as a dependency to the new project: ```bash - uv add toolbox-core + uv add toolbox-adk ``` ## Step 3: Configure Google Cloud Authentication @@ -95,22 +95,23 @@ authentication token. ```python from google.adk import Agent from google.adk.apps import App - from toolbox_core import ToolboxSyncClient, auth_methods + from google.adk.tools.toolbox_toolset import ToolboxToolset + from toolbox_adk import CredentialStrategy # TODO(developer): Replace with your Toolbox Cloud Run Service URL TOOLBOX_URL = "https://your-toolbox-service-xyz.a.run.app" - # Initialize the client with the Cloud Run URL and Auth headers - client = ToolboxSyncClient( - TOOLBOX_URL, - client_headers={"Authorization": auth_methods.get_google_id_token(TOOLBOX_URL)} + # Initialize the toolset with Workload Identity (generates ID token for the URL) + toolset = ToolboxToolset( + server_url=TOOLBOX_URL, + credentials=CredentialStrategy.workload_identity(target_audience=TOOLBOX_URL) ) root_agent = Agent( name='root_agent', model='gemini-2.5-flash', instruction="You are a helpful AI assistant designed to provide accurate and useful information.", - tools=client.load_toolset(), + tools=[toolset], ) app = App(root_agent=root_agent, name="my_agent") diff --git a/docs/en/samples/bigquery/local_quickstart.md b/docs/en/samples/bigquery/local_quickstart.md index 01cc5d1937c..aaa72dce2cc 100644 --- a/docs/en/samples/bigquery/local_quickstart.md +++ b/docs/en/samples/bigquery/local_quickstart.md @@ -365,7 +365,7 @@ pip install llama-index-llms-google-genai {{< /tab >}} {{< tab header="ADK" lang="bash" >}} -pip install toolbox-core +pip install toolbox-adk {{< /tab >}} {{< /tabpane >}} @@ -607,8 +607,8 @@ from google.adk.agents import Agent from google.adk.runners import Runner from google.adk.sessions import InMemorySessionService from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService +from google.adk.tools.toolbox_toolset import ToolboxToolset from google.genai import types # For constructing message content -from toolbox_core import ToolboxSyncClient import os os.environ['GOOGLE_GENAI_USE_VERTEXAI'] = 'True' @@ -623,48 +623,47 @@ os.environ['GOOGLE_CLOUD_LOCATION'] = 'us-central1' # --- Load Tools from Toolbox --- -# TODO(developer): Ensure the Toolbox server is running at - -with ToolboxSyncClient("") as toolbox_client: - # TODO(developer): Replace "my-toolset" with the actual ID of your toolset as configured in your MCP Toolbox server. - agent_toolset = toolbox_client.load_toolset("my-toolset") - - # --- Define the Agent's Prompt --- - prompt = """ - You're a helpful hotel assistant. You handle hotel searching, booking and - cancellations. When the user searches for a hotel, mention it's name, id, - location and price tier. Always mention hotel ids while performing any - searches. This is very important for any operations. For any bookings or - cancellations, please provide the appropriate confirmation. Be sure to - update checkin or checkout dates if mentioned by the user. - Don't ask for confirmations from the user. - """ - - # --- Configure the Agent --- - - root_agent = Agent( - model='gemini-2.0-flash-001', - name='hotel_agent', - description='A helpful AI assistant that can search and book hotels.', - instruction=prompt, - tools=agent_toolset, # Pass the loaded toolset - ) +# TODO(developer): Ensure the Toolbox server is running at http://127.0.0.1:5000 +toolset = ToolboxToolset(server_url="http://127.0.0.1:5000") + +# --- Define the Agent's Prompt --- +prompt = """ + You're a helpful hotel assistant. You handle hotel searching, booking and + cancellations. When the user searches for a hotel, mention it's name, id, + location and price tier. Always mention hotel ids while performing any + searches. This is very important for any operations. For any bookings or + cancellations, please provide the appropriate confirmation. Be sure to + update checkin or checkout dates if mentioned by the user. + Don't ask for confirmations from the user. +""" - # --- Initialize Services for Running the Agent --- - session_service = InMemorySessionService() - artifacts_service = InMemoryArtifactService() +# --- Configure the Agent --- + +root_agent = Agent( + model='gemini-2.0-flash-001', + name='hotel_agent', + description='A helpful AI assistant that can search and book hotels.', + instruction=prompt, + tools=[toolset], # Pass the loaded toolset +) + +# --- Initialize Services for Running the Agent --- +session_service = InMemorySessionService() +artifacts_service = InMemoryArtifactService() + +runner = Runner( + app_name='hotel_agent', + agent=root_agent, + artifact_service=artifacts_service, + session_service=session_service, +) + +async def main(): # Create a new session for the interaction. - session = session_service.create_session( + session = await session_service.create_session( state={}, app_name='hotel_agent', user_id='123' ) - runner = Runner( - app_name='hotel_agent', - agent=root_agent, - artifact_service=artifacts_service, - session_service=session_service, - ) - # --- Define Queries and Run the Agent --- queries = [ "Find hotels in Basel with Basel in it's name.", @@ -687,6 +686,10 @@ with ToolboxSyncClient("") as toolbox_client: for text in responses: print(text) + +import asyncio +if __name__ == "__main__": + asyncio.run(main()) {{< /tab >}} {{< /tabpane >}}