# Class GlobalInstructionPlugin

java.lang.Object
com.google.adk.plugins.BasePlugin
com.google.adk.plugins.GlobalInstructionPlugin

All Implemented Interfaces:
  `Plugin`

public class GlobalInstructionPlugin extends BasePlugin
Plugin that provides global instructions functionality at the App level.

Global instructions are applied to all agents in the application, providing a consistent way to set application-wide instructions, identity, or personality. Global instructions can be provided as a static string, or as a function that resolves the instruction based on the `CallbackContext`.

The plugin operates through the before_model_callback, allowing it to modify LLM requests before they are sent to the model by prepending the global instruction to any existing system instructions provided by the agent.

- ## Field Summary

  ### Fields inherited from class BasePlugin

  `name`
  Modifier and Type
  Field
  Description
  `protected final String`
  `name`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GlobalInstructionPlugin(String globalInstruction)`
  `GlobalInstructionPlugin(String globalInstruction, String name)`
  `GlobalInstructionPlugin(Function<CallbackContext, io.reactivex.rxjava3.core.Maybe<String>> instructionProvider)`
  `GlobalInstructionPlugin(Function<CallbackContext, io.reactivex.rxjava3.core.Maybe<String>> instructionProvider, String name)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `io.reactivex.rxjava3.core.Maybe<LlmResponse>`
  `beforeModelCallback(CallbackContext callbackContext, LlmRequest.Builder llmRequest)`
  Callback executed before a request is sent to the model.

  ### Methods inherited from class BasePlugin

  `getName`
  Modifier and Type
  Method
  Description
  `String`
  `getName()`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface Plugin

  `afterAgentCallback, afterModelCallback, afterRunCallback, afterToolCallback, beforeAgentCallback, beforeRunCallback, beforeToolCallback, close, onEventCallback, onModelErrorCallback, onToolErrorCallback, onUserMessageCallback`
  Modifier and Type
  Method
  Description
  `default io.reactivex.rxjava3.core.Maybe<com.google.genai.types.Content>`
  `afterAgentCallback(BaseAgent agent, CallbackContext callbackContext)`
  Callback executed after an agent's primary logic has completed.
  `default io.reactivex.rxjava3.core.Maybe<LlmResponse>`
  `afterModelCallback(CallbackContext callbackContext, LlmResponse llmResponse)`
  Callback executed after a response is received from the model.
  `default io.reactivex.rxjava3.core.Completable`
  `afterRunCallback(InvocationContext invocationContext)`
  Callback executed after an ADK runner run has completed.
  `default io.reactivex.rxjava3.core.Maybe<Map<String,Object>>`
  `afterToolCallback(BaseTool tool, Map<String,Object> toolArgs, ToolContext toolContext, Map<String,Object> result)`
  Callback executed after a tool has been called.
  `default io.reactivex.rxjava3.core.Maybe<com.google.genai.types.Content>`
  `beforeAgentCallback(BaseAgent agent, CallbackContext callbackContext)`
  Callback executed before an agent's primary logic is invoked.
  `default io.reactivex.rxjava3.core.Maybe<com.google.genai.types.Content>`
  `beforeRunCallback(InvocationContext invocationContext)`
  Callback executed before the ADK runner runs.
  `default io.reactivex.rxjava3.core.Maybe<Map<String,Object>>`
  `beforeToolCallback(BaseTool tool, Map<String,Object> toolArgs, ToolContext toolContext)`
  Callback executed before a tool is called.
  `default io.reactivex.rxjava3.core.Completable`
  `close()`
  Method executed when the runner is closed.
  `default io.reactivex.rxjava3.core.Maybe<Event>`
  `onEventCallback(InvocationContext invocationContext, Event event)`
  Callback executed after an event is yielded from runner.
  `default io.reactivex.rxjava3.core.Maybe<LlmResponse>`
  `onModelErrorCallback(CallbackContext callbackContext, LlmRequest.Builder llmRequest, Throwable error)`
  Callback executed when a model call encounters an error.
  `default io.reactivex.rxjava3.core.Maybe<Map<String,Object>>`
  `onToolErrorCallback(BaseTool tool, Map<String,Object> toolArgs, ToolContext toolContext, Throwable error)`
  Callback executed when a tool call encounters an error.
  `default io.reactivex.rxjava3.core.Maybe<com.google.genai.types.Content>`
  `onUserMessageCallback(InvocationContext invocationContext, com.google.genai.types.Content userMessage)`
  Callback executed when a user message is received before an invocation starts.

- ## Constructor Details

  - ### GlobalInstructionPlugin

    public GlobalInstructionPlugin(String globalInstruction)

  - ### GlobalInstructionPlugin

    public GlobalInstructionPlugin(String globalInstruction, String name)

  - ### GlobalInstructionPlugin

    public GlobalInstructionPlugin(Function<CallbackContext, io.reactivex.rxjava3.core.Maybe<String>> instructionProvider)

  - ### GlobalInstructionPlugin

    public GlobalInstructionPlugin(Function<CallbackContext, io.reactivex.rxjava3.core.Maybe<String>> instructionProvider, String name)

- ## Method Details

  - ### beforeModelCallback

    public io.reactivex.rxjava3.core.Maybe<LlmResponse> beforeModelCallback(CallbackContext callbackContext, LlmRequest.Builder llmRequest)
    Description copied from interface: `Plugin`
    Callback executed before a request is sent to the model.
    Parameters:
      `callbackContext` - The context for the current agent call.
      `llmRequest` - The mutable request builder, allowing modification of the request before it is sent to the model.
    Returns:
      An optional LlmResponse to trigger an early exit. Returning Empty to proceed normally.