Of course. Here is the table with the 4th column for "Bedrock API" added.
| Feature | Gemini | Anthropic | AWS Bedrock API | Ollama | Azure OAI (redBus) | Bedrock+Anthropic |
|---|---|---|---|---|---|---|
| Chat | β | β | β | β | β | β |
| Tools/Function | β | β | β | β | β | β |
| Chat Stream | β | β | β | β | β | β |
| Image (Input) | β (Multimodal models) | β | β (Via models like Claude 3) | β | β | β (Claude 3 models) |
| Image Gen (Output) | β | β | β (Via Titan, Stable Diffusion) | β | β | β (Via other models like Titan Image Generator) |
| Audio Streaming (Input) | β (Some APIs/integrations) | β | β (Via Amazon Transcribe) | β | β | β (Via services like Amazon Transcribe) |
| Transcription | β (Some APIs/integrations) | β | β (Via Amazon Transcribe) | β | β | β (Via Amazon Transcribe) |
| Persistent session (MapDB) | β | β | β | β | β | β |
| Agents as Tool/Function | β | β | β | β | β | β |
| Interoperability (A2A) | β | β | β | β | β | β |
| Interoperability (Tools/Functions) | β | β | β | β | β | β |
| Interoperability (Agents as Tool/Function) | β | β | β | β | β | β |
| Agent Workflow | β | β | β | β | β | β |
| Parallel Agents | β | β | β | β | β | β |
| Sequential Agents | β | β | β | β | β | β |
| Agent Orchestration | β | β | β | β | β | β |
| Hierarchical Task Decomposition | β | β | β | β | β | β |
| Store | Chat | Stream | Artifact |
|---|---|---|---|
| MapDB | β | β | β |
| MongoDB | β | β | β |
| Postgres | β | β | β |
public BaseSessionService sessionService() {
try {
// TODO: Add logic to select service based on config (e.g., DB URL)
log.info("Using MapDbSessionService");
return new MapDbSessionService("map.db");
} catch (Exception ex) {
java.util.logging.Logger.getLogger(AdkWebServer.class.getName()).log(Level.SEVERE, null, ex);
}
// TODO: Add logic to select service based on config (e.g., DB URL)
log.info("Using InMemorySessionService");
return new InMemorySessionService();
}
LlmAgent coordinator = LlmAgent.builder()
.name("Coordinator")
. model(new com.google.adk.models.OllamaBaseLM("qwen3:0.6b"))//
.instruction("You are an assistant. Delegate requests to appropriate agent")
.description("Main coordinator.")
.build();
LlmAgent.builder()
.name(NAME)
.model(new com.google.adk.models.OllamaBaseLM("qwen3:0.6b"))//.model(new RedbusADG("40"))
.description("Agent to calculate trigonometric functions (sine, cosine, tangent) for given angles.") // Updated description
.instruction(
"You are a helpful agent who can calculate trigonometric functions (sine, cosine, and"
+ " tangent). Use the provided tools to perform these calculations."
+ " When the user provides an angle, identify the value and the unit (degrees or radians)."
+ " Call the appropriate tool based on the requested function (sin, cos, tan) and provide the angle value and unit."
+ " Ensure the angle unit is explicitly passed to the tool as 'degrees' or 'radians'.") // Updated instruction
.tools(
// Register the new trigonometry tools
FunctionTool.create(TrigonometryAgent.class, "calculateSine"),
FunctionTool.create(TrigonometryAgent.class, "calculateCosine"),
FunctionTool.create(TrigonometryAgent.class, "calculateTangent")
// Removed FunctionTool.create for getCurrentTime and getWeather
)
.build();
An open-source, code-first Java toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.
Important Links: Docs & Samples & Python ADK.
Agent Development Kit (ADK) is designed for developers seeking fine-grained control and flexibility when building advanced AI agents that are tightly integrated with services in Google Cloud. It allows you to define agent behavior, orchestration, and tool use directly in code, enabling robust debugging, versioning, and deployment anywhere β from your laptop to the cloud.
-
Rich Tool Ecosystem: Utilize pre-built tools, custom functions, OpenAPI specs, or integrate existing tools to give agents diverse capabilities, all for tight integration with the Google ecosystem.
-
Code-First Development: Define agent logic, tools, and orchestration directly in Java for ultimate flexibility, testability, and versioning.
-
Modular Multi-Agent Systems: Design scalable applications by composing multiple specialized agents into flexible hierarchies.
If you're using Maven, add the following to your dependencies:
<dependency>
<groupId>com.google.adk</groupId>
<artifactId>google-adk</artifactId>
<version>0.3.0</version>
</dependency>
<!-- Dev UI -->
<dependency>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-dev</artifactId>
<version>0.3.0</version>
</dependency>To instead use an unreleased version, you could use https://jitpack.io/#google/adk-java/; see https://github.com/enola-dev/LearningADK#jitpack for an example illustrating this.
For building, evaluating, and deploying agents by follow the Java documentation & samples:
import com.google.adk.agents.LlmAgent;
import com.google.adk.tools.GoogleSearchTool;
LlmAgent rootAgent = LlmAgent.builder()
.name("search_assistant")
.description("An assistant that can search the web.")
.model("gemini-2.0-flash") // Or your preferred models
.instruction("You are a helpful assistant. Answer user questions using Google Search when needed.")
.tools(new GoogleSearchTool())
.build();Same as the beloved Python Development UI.
A built-in development UI to help you test, evaluate, debug, and showcase your agent(s).

Coming soon...
For remote agent-to-agent communication, ADK integrates with the
A2A protocol.
See a2a/README.md for end-to-end setup instructions and sample commands.
We welcome contributions from the community! Whether it's bug reports, feature requests, documentation improvements, or code contributions, please see our Contributing Guidelines to get started.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the Service Specific Terms. Pre-GA features are available "as is" and might have limited support. For more information, see the launch stage descriptions.
Happy Agent Building!
