Skip to content

Commit

Permalink
docs(Agent.java): add JavaDoc comments for better code readability an…
Browse files Browse the repository at this point in the history
…d maintainability
  • Loading branch information
bsorrentino committed Dec 15, 2024
1 parent 0b0424d commit 17386f5
Showing 1 changed file with 36 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,34 @@
import java.util.Objects;
import java.util.stream.Collectors;

/**
* Represents an agent that can process chat messages and execute actions using specified tools.
*/
@Builder
public class Agent {

private final ChatLanguageModel chatLanguageModel;
private final ChatLanguageModel chatLanguageModel;
private final StreamingChatLanguageModel streamingChatLanguageModel;
@Singular private final List<ToolSpecification> tools;
@Singular private final List<ToolSpecification> tools;

/**
* Checks if the agent is currently streaming.
*
* @return true if the agent is streaming, false otherwise.
*/
public boolean isStreaming() {
return streamingChatLanguageModel != null;
}

/**
* Prepares a list of chat messages based on the input and intermediate steps.
*
* @param input the input string to process.
* @param intermediateSteps a list of intermediate steps to consider.
* @return a list of prepared chat messages.
*/
private List<ChatMessage> prepareMessages(String input, List<IntermediateStep> intermediateSteps) {
var userMessageTemplate = PromptTemplate.from( "{{input}}" )
var userMessageTemplate = PromptTemplate.from("{{input}}")
.apply(Map.of("input", input));

var messages = new ArrayList<ChatMessage>();
Expand All @@ -56,14 +71,28 @@ private List<ChatMessage> prepareMessages(String input, List<IntermediateStep> i
return messages;
}

public void execute( String input, List<IntermediateStep> intermediateSteps, StreamingResponseHandler<AiMessage> handler ) {
/**
* Executes the agent's action based on the input and intermediate steps, using a streaming response handler.
*
* @param input the input string to process.
* @param intermediateSteps a list of intermediate steps to consider.
* @param handler the handler for streaming responses.
*/
public void execute(String input, List<IntermediateStep> intermediateSteps, StreamingResponseHandler<AiMessage> handler) {
Objects.requireNonNull(streamingChatLanguageModel, "streamingChatLanguageModel is required!");

streamingChatLanguageModel.generate( prepareMessages(input, intermediateSteps), tools, handler );
streamingChatLanguageModel.generate(prepareMessages(input, intermediateSteps), tools, handler);
}

public Response<AiMessage> execute( String input, List<IntermediateStep> intermediateSteps ) {
/**
* Executes the agent's action based on the input and intermediate steps, returning a response.
*
* @param input the input string to process.
* @param intermediateSteps a list of intermediate steps to consider.
* @return a response containing the generated AI message.
*/
public Response<AiMessage> execute(String input, List<IntermediateStep> intermediateSteps) {
Objects.requireNonNull(chatLanguageModel, "chatLanguageModel is required!");
return chatLanguageModel.generate( prepareMessages(input, intermediateSteps), tools );
return chatLanguageModel.generate(prepareMessages(input, intermediateSteps), tools);
}
}

0 comments on commit 17386f5

Please sign in to comment.