# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import random from google.adk.agents.llm_agent import LlmAgent from google.adk.agents.sequential_agent import SequentialAgent from google.genai import types # --- Roll Die Sub-Agent --- def roll_die(sides: int) -> int: """Roll a die and return the rolled result.""" return random.randint(1, sides) roll_agent = LlmAgent( name="roll_agent", description="Handles rolling dice of different sizes.", model="gemini-2.0-flash", instruction=""" You are responsible for rolling dice based on the user's request. When asked to roll a die, you must call the roll_die tool with the number of sides as an integer. """, tools=[roll_die], generate_content_config=types.GenerateContentConfig( safety_settings=[ types.SafetySetting( # avoid false alarm about rolling dice. category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=types.HarmBlockThreshold.OFF, ), ] ), ) def check_prime(nums: list[int]) -> str: """Check if a given list of numbers are prime.""" primes = set() for number in nums: number = int(number) if number <= 1: continue is_prime = True for i in range(2, int(number**0.5) + 1): if number % i == 0: is_prime = False break if is_prime: primes.add(number) return ( "No prime numbers found." if not primes else f"{', '.join(str(num) for num in primes)} are prime numbers." ) prime_agent = LlmAgent( name="prime_agent", description="Handles checking if numbers are prime.", model="gemini-2.0-flash", instruction=""" You are responsible for checking whether numbers are prime. When asked to check primes, you must call the check_prime tool with a list of integers. Never attempt to determine prime numbers manually. Return the prime number results to the root agent. """, tools=[check_prime], generate_content_config=types.GenerateContentConfig( safety_settings=[ types.SafetySetting( # avoid false alarm about rolling dice. category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=types.HarmBlockThreshold.OFF, ), ] ), ) root_agent = SequentialAgent( name="simple_sequential_agent", sub_agents=[roll_agent, prime_agent], # The agents will run in the order provided: roll_agent -> prime_agent )