Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

ADK Agent with Plugin

What is ADK Plugin?

At its core, ADK extensibility is built on callbacks: functions you write that ADK automatically executes at key stages of an agent's lifecycle. A Plugin is simply a class that packages these individual callback functions together for a broader purpose.

While a standard Agent Callback is configured on a single agent, a single tool for a specific task, a Plugin is registered once on the Runner and its callbacks apply globally to every agent, tool, and LLM call managed by that runner. This makes Plugins the ideal solution for implementing horizontal features that cut across your entire application.

What can plugins do?

Plugins are incredibly versatile. By implementing different callback methods, you can achieve a wide range of functionalities.

  • Logging & Tracing: Create detailed logs of agent, tool, and LLM activity for debugging and performance analysis.
  • Policy Enforcement: Implement security guardrails. For example, a before_tool_callback can check if a user is authorized to use a specific tool and prevent its execution by returning a value.
  • Monitoring & Metrics: Collect and export metrics on token usage, execution times, and invocation counts to monitoring systems like Prometheus or Stackdriver.
  • Caching: In before_model_callback or before_tool_callback, you can check if a request has been made before. If so, you can return a cached response, skipping the expensive LLM or tool call entirely.
  • Request/Response Modification: Dynamically add information to LLM prompts (e.g., in before_model_callback) or standardize tool outputs (e.g., in after_tool_callback).

Run the agent

Note: Plugin is NOT supported in adk webyet.

Use following command to run the main.py

python3 -m contributing.samples.plugin_basic.main

It should output the following content. Note that the outputs from plugin are printed.

[Plugin] Agent run count: 1
[Plugin] LLM request count: 1
** Got event from hello_world
Hello world: query is [hello world]
** Got event from hello_world
[Plugin] LLM request count: 2
** Got event from hello_world