Annotation Interface ConditionalAgent
Marks a method as a definition of a conditional agent, generally used to route the agentic workflow toward
one or more sub-agents according to the verification of their activation conditions.
Each sub-agent has its own activation condition, a static method annotated with
ActivationCondition that
determines when it should be invoked.
Example:
public interface ExpertsAgent {
@ConditionalAgent(outputKey = "response",
subAgents = { MedicalExpert.class, TechnicalExpert.class, LegalExpert.class } )
String askExpert(@V("request") String request);
@ActivationCondition(MedicalExpert.class)
static boolean activateMedical(@V("category") RequestCategory category) {
return category == RequestCategory.MEDICAL;
}
@ActivationCondition(TechnicalExpert.class)
static boolean activateTechnical(@V("category") RequestCategory category) {
return category == RequestCategory.TECHNICAL;
}
@ActivationCondition(LegalExpert.class)
static boolean activateLegal(AgenticScope agenticScope) {
return agenticScope.readState("category", RequestCategory.UNKNOWN) == RequestCategory.LEGAL;
}
}
-
Required Element Summary
Required Elements -
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionDescription of the agent.Name of the agent.Key of the output variable that will be used to store the result of the agent's invocation.Strongly typed key of the output variable that will be used to store the result of the agent's invocation.
-
Element Details
-
name
String nameName of the agent. If not provided, method name will be used.- Returns:
- name of the agent.
- Default:
""
-
description
String descriptionDescription of the agent. 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 the agent's invocation. It enforces type safety when retrieving the output from the agent's state and can be used in alternative to theoutputKey()attribute. Note that only one of those two attributes can be used at a time.- Returns:
- class representing the typed output variable.
- Default:
dev.langchain4j.agentic.Agent.NoTypedKey.class
-
subAgents
Class<?>[] subAgentsSub-agents that can be conditionally activated by this agent.- Returns:
- array of sub-agents.
-