Skip to content

redbus-labs/adk-java

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Capability Supported

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 βœ… βœ… βœ… βœ… βœ… βœ…

Core Differences

Persistent session storage added,

Store Chat Stream Artifact
MapDB βœ… βœ… βœ…
MongoDB βœ… βœ… ❌
Postgres βœ… βœ… ❌

MapDbSessionService("map.db")

    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();
    }

Ollama API Supported,

OllamaBaseLM("qwen3:0.6b")

    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();

Secondary Auth Over Azure API

RedbusADG("40")

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();

Agent Development Kit (ADK) for Java

License Maven Central r/agentdevelopmentkit Ask DeepWiki

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.


✨ Key Features

  • 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.

πŸš€ Installation

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.

πŸ“š Documentation

For building, evaluating, and deploying agents by follow the Java documentation & samples:

🏁 Feature Highlight

Same Features & Familiar Interface As Python ADK:

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();

Development UI

Same as the beloved Python Development UI. A built-in development UI to help you test, evaluate, debug, and showcase your agent(s).

Evaluate Agents

Coming soon...

πŸ€– A2A and ADK integration

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.

🀝 Contributing

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.

πŸ“„ License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

Preview

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!

About

An open-source, code-first Java toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 97.9%
  • HTML 1.7%
  • Other 0.4%