Annotation Interface Agent
@Agent are considered agents that other agents can invoke.-
Nested Class Summary
Nested Classes -
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionbooleanIf true, the agent will be invoked in an asynchronous manner, allowing the workflow to continue without waiting for the agent's result.booleanIf true, all previously successful tool invocations with@CompensateForactions will be compensated in reverse order when any tool in this agent fails.Description of the agent.Name of the agent.booleanIf true, the agent's execution will be silently skipped when any of its arguments is missing in the agentic scope, instead of making the agentic system's execution fail.Key of the output variable that will be used to store the result of the agent's invocation.String[]Names of other agents participating in the definition of the context of this agent.Strongly typed key of the output variable that will be used to store the result of this agent's invocation in theAgenticScope.Description of the agent.
-
Element Details
-
name
String nameName of the agent. If not provided, method name will be used.- Returns:
- name of the agent.
- Default:
""
-
value
String valueDescription of the agent. This is an alias of thedescriptionattribute, and it is possible to use either. It should be clear and descriptive to allow language model to understand the agent's purpose and its intended use.- Returns:
- description of the agent.
- Default:
""
-
description
String descriptionDescription of the agent. This is an alias of thevalueattribute, and it is possible to use either. It should be clear and descriptive to allow language model to understand the agent's purpose and its intended use.- Returns:
- description of the agent.
- Default:
""
-
outputKey
String outputKeyKey of the output variable that will be used to store the result of the agent's invocation.- Returns:
- name of the output variable.
- Default:
""
-
typedOutputKey
Strongly typed key of the output variable that will be used to store the result of this agent's invocation in theAgenticScope.This attribute provides a type-safe alternative to
outputKey(). Instead of identifying the output variable using aString, the output is identified by a class implementingTypedKey.The generic type declared by the
TypedKeyrepresents the type of value associated with the output variable.For example:
public class Category implements TypedKey<RequestCategory> { } @Agent( name = "categoryRouter", typedOutputKey = Category.class ) RequestCategory classify(String request);When the agent completes successfully, its returned
RequestCategoryvalue is stored in the agentic scope usingCategory.classas the typed state key.The value can later be retrieved without using a string key and without requiring an explicit type cast:
RequestCategory category = scope.readState(Category.class);This is particularly useful in multi-agent workflows where the output of one agent becomes the input of another agent. The typed key acts as both:
- the identity of the state variable, and
- the declaration of the Java type associated with that variable.
Multiple typed keys may use the same Java value type while still representing different state variables. For example:
public class InitialCategory implements TypedKey<RequestCategory> { } public class ValidatedCategory implements TypedKey<RequestCategory> { }Even though both keys contain
RequestCategoryvalues,InitialCategory.classandValidatedCategory.classidentify two independent variables in the agentic scope.typedOutputKeyandoutputKey()are alternative ways of defining the output variable. Only one of them should be configured for an agent:-
outputKey()identifies the output using aString. -
typedOutputKeyidentifies the output using aTypedKeyimplementation and preserves its associated Java type.
- Returns:
- the
TypedKeyclass identifying the strongly typed output variable where the result of this agent invocation will be stored - See Also:
- Default:
dev.langchain4j.agentic.Agent.NoTypedKey.class
-
async
boolean asyncIf true, the agent will be invoked in an asynchronous manner, allowing the workflow to continue without waiting for the agent's result.- Returns:
- true if the agent should be invoked in an asynchronous manner, false otherwise.
- Default:
false
-
optional
boolean optionalIf true, the agent's execution will be silently skipped when any of its arguments is missing in the agentic scope, instead of making the agentic system's execution fail.- Returns:
- true if the agent is optional, false otherwise.
- Default:
false
-
compensateOnError
boolean compensateOnErrorIf true, all previously successful tool invocations with@CompensateForactions will be compensated in reverse order when any tool in this agent fails.- Returns:
- true if cross-agent compensation should be enabled, false otherwise.
- Default:
false
-
summarizedContext
String[] summarizedContextNames of other agents participating in the definition of the context of this agent.- Returns:
- array of names of other agents participating in the definition of the context of this agent.
- Default:
{}
-