From c702b2ac2b51717f13f24ee963e0925ee70869ff Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Thu, 5 Feb 2026 18:45:19 +0530 Subject: [PATCH] docs(adk): align quickstart script with other orchestrations This brings the ADK Python quickstart sample up to par with the other orchestrations (like Langchain), removing the need for special test handling. --- .../quickstart/python/adk/quickstart.py | 42 ++++++++++++++++++- .../quickstart/python/quickstart_test.py | 15 +------ 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/docs/en/getting-started/quickstart/python/adk/quickstart.py b/docs/en/getting-started/quickstart/python/adk/quickstart.py index 477ced578d..2d28f5122d 100644 --- a/docs/en/getting-started/quickstart/python/adk/quickstart.py +++ b/docs/en/getting-started/quickstart/python/adk/quickstart.py @@ -1,6 +1,27 @@ +import asyncio + from google.adk import Agent from google.adk.apps import App +from google.adk.runners import InMemoryRunner from google.adk.tools.toolbox_toolset import ToolboxToolset +from google.genai.types import Content, Part + +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. +""" + +queries = [ + "Find hotels in Basel with Basel in its name.", + "Can you book the Hilton Basel for me?", + "Oh wait, this is too expensive. Please cancel it and book the Hyatt Regency instead.", + "My check in dates would be from April 10, 2024 to April 19, 2024.", +] # TODO(developer): update the TOOLBOX_URL to your toolbox endpoint toolset = ToolboxToolset( @@ -8,10 +29,27 @@ toolset = ToolboxToolset( ) root_agent = Agent( - name='root_agent', + name='hotel_assistant', model='gemini-2.5-flash', - instruction="You are a helpful AI assistant designed to provide accurate and useful information.", + instruction=prompt, tools=[toolset], ) app = App(root_agent=root_agent, name="my_agent") + +async def main(): + runner = InMemoryRunner(agent=root_agent, app=app) + session = await runner.session_service.create_session( + app_name=app.name, user_id="test_user" + ) + + for query in queries: + print(f"\nUser: {query}") + user_message = Content(parts=[Part.from_text(text=query)]) + + async for event in runner.run_async(session_id=session.id, new_message=user_message): + if event.is_final_response(): + print(f"Agent: {event.content.parts[0].text}") + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/docs/en/getting-started/quickstart/python/quickstart_test.py b/docs/en/getting-started/quickstart/python/quickstart_test.py index eb46bee1f8..0f3fd9e82c 100755 --- a/docs/en/getting-started/quickstart/python/quickstart_test.py +++ b/docs/en/getting-started/quickstart/python/quickstart_test.py @@ -44,28 +44,15 @@ class TestExecution: @pytest.fixture(scope="function") def script_output(self, capsys): """Run the quickstart function and return its output.""" - - # TODO: Add better validation for ADK once we have a way to capture its - # output. - if ORCH_NAME == "adk": - return quickstart.app.root_agent.name - else: - asyncio.run(quickstart.main()) - + asyncio.run(quickstart.main()) return capsys.readouterr() def test_script_runs_without_errors(self, script_output): """Test that the script runs and produces no stderr.""" - if ORCH_NAME == "adk": - return assert script_output.err == "", f"Script produced stderr: {script_output.err}" def test_keywords_in_output(self, script_output, golden_keywords): """Test that expected keywords are present in the script's output.""" - - if ORCH_NAME == "adk": - assert script_output == "root_agent" - return output = script_output.out missing_keywords = [kw for kw in golden_keywords if kw not in output] assert not missing_keywords, f"Missing keywords in output: {missing_keywords}"