Skip to content

Fix ToolCallingChatOptions isInternalToolExecutionEnabled #2730

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -416,8 +416,8 @@ Prompt buildRequestPrompt(Prompt prompt) {
requestOptions.setHttpHeaders(
mergeHttpHeaders(runtimeOptions.getHttpHeaders(), this.defaultOptions.getHttpHeaders()));
requestOptions.setInternalToolExecutionEnabled(
ModelOptionsUtils.mergeOption(runtimeOptions.isInternalToolExecutionEnabled(),
this.defaultOptions.isInternalToolExecutionEnabled()));
ModelOptionsUtils.mergeOption(runtimeOptions.getInternalToolExecutionEnabled(),
this.defaultOptions.getInternalToolExecutionEnabled()));
requestOptions.setToolNames(ToolCallingChatOptions.mergeToolNames(runtimeOptions.getToolNames(),
this.defaultOptions.getToolNames()));
requestOptions.setToolCallbacks(ToolCallingChatOptions.mergeToolCallbacks(runtimeOptions.getToolCallbacks(),
Expand All @@ -427,7 +427,7 @@ Prompt buildRequestPrompt(Prompt prompt) {
}
else {
requestOptions.setHttpHeaders(this.defaultOptions.getHttpHeaders());
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.isInternalToolExecutionEnabled());
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.getInternalToolExecutionEnabled());
requestOptions.setToolNames(this.defaultOptions.getToolNames());
requestOptions.setToolCallbacks(this.defaultOptions.getToolCallbacks());
requestOptions.setToolContext(this.defaultOptions.getToolContext());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ public static AnthropicChatOptions fromOptions(AnthropicChatOptions fromOptions)
.toolCallbacks(
fromOptions.getToolCallbacks() != null ? new ArrayList<>(fromOptions.getToolCallbacks()) : null)
.toolNames(fromOptions.getToolNames() != null ? new HashSet<>(fromOptions.getToolNames()) : null)
.internalToolExecutionEnabled(fromOptions.isInternalToolExecutionEnabled())
.internalToolExecutionEnabled(fromOptions.getInternalToolExecutionEnabled())
.toolContext(fromOptions.getToolContext() != null ? new HashMap<>(fromOptions.getToolContext()) : null)
.httpHeaders(fromOptions.getHttpHeaders() != null ? new HashMap<>(fromOptions.getHttpHeaders()) : null)
.build();
Expand Down Expand Up @@ -216,7 +216,7 @@ public void setToolNames(Set<String> toolNames) {
@Override
@Nullable
@JsonIgnore
public Boolean isInternalToolExecutionEnabled() {
public Boolean getInternalToolExecutionEnabled() {
return this.internalToolExecutionEnabled;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -642,8 +642,8 @@ Prompt buildRequestPrompt(Prompt prompt) {
// Jackson, used by ModelOptionsUtils.
if (runtimeOptions != null) {
requestOptions.setInternalToolExecutionEnabled(
ModelOptionsUtils.mergeOption(runtimeOptions.isInternalToolExecutionEnabled(),
this.defaultOptions.isInternalToolExecutionEnabled()));
ModelOptionsUtils.mergeOption(runtimeOptions.getInternalToolExecutionEnabled(),
this.defaultOptions.getInternalToolExecutionEnabled()));
requestOptions.setToolNames(ToolCallingChatOptions.mergeToolNames(runtimeOptions.getToolNames(),
this.defaultOptions.getToolNames()));
requestOptions.setToolCallbacks(ToolCallingChatOptions.mergeToolCallbacks(runtimeOptions.getToolCallbacks(),
Expand All @@ -652,7 +652,7 @@ Prompt buildRequestPrompt(Prompt prompt) {
this.defaultOptions.getToolContext()));
}
else {
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.isInternalToolExecutionEnabled());
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.getInternalToolExecutionEnabled());
requestOptions.setToolNames(this.defaultOptions.getToolNames());
requestOptions.setToolCallbacks(this.defaultOptions.getToolCallbacks());
requestOptions.setToolContext(this.defaultOptions.getToolContext());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ public void setToolNames(Set<String> toolNames) {
@Override
@Nullable
@JsonIgnore
public Boolean isInternalToolExecutionEnabled() {
public Boolean getInternalToolExecutionEnabled() {
return this.internalToolExecutionEnabled;
}

Expand Down Expand Up @@ -265,7 +265,7 @@ public static AzureOpenAiChatOptions fromOptions(AzureOpenAiChatOptions fromOpti
.topLogprobs(fromOptions.getTopLogProbs())
.enhancements(fromOptions.getEnhancements())
.toolContext(fromOptions.getToolContext() != null ? new HashMap<>(fromOptions.getToolContext()) : null)
.internalToolExecutionEnabled(fromOptions.isInternalToolExecutionEnabled())
.internalToolExecutionEnabled(fromOptions.getInternalToolExecutionEnabled())
.streamOptions(fromOptions.getStreamOptions())
.toolCallbacks(
fromOptions.getToolCallbacks() != null ? new ArrayList<>(fromOptions.getToolCallbacks()) : null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -301,9 +301,9 @@ Prompt buildRequestPrompt(Prompt prompt) {
: this.defaultOptions.getToolNames())
.toolContext(runtimeOptions.getToolContext() != null ? runtimeOptions.getToolContext()
: this.defaultOptions.getToolContext())
.internalToolExecutionEnabled(runtimeOptions.isInternalToolExecutionEnabled() != null
? runtimeOptions.isInternalToolExecutionEnabled()
: this.defaultOptions.isInternalToolExecutionEnabled())
.internalToolExecutionEnabled(runtimeOptions.getInternalToolExecutionEnabled() != null
? runtimeOptions.getInternalToolExecutionEnabled()
: this.defaultOptions.getInternalToolExecutionEnabled())
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -399,8 +399,8 @@ else if (prompt.getOptions() instanceof FunctionCallingOptions functionCallingOp
// Jackson, used by ModelOptionsUtils.
if (runtimeOptions != null) {
requestOptions.setInternalToolExecutionEnabled(
ModelOptionsUtils.mergeOption(runtimeOptions.isInternalToolExecutionEnabled(),
this.defaultOptions.isInternalToolExecutionEnabled()));
ModelOptionsUtils.mergeOption(runtimeOptions.getInternalToolExecutionEnabled(),
this.defaultOptions.getInternalToolExecutionEnabled()));
requestOptions.setToolNames(ToolCallingChatOptions.mergeToolNames(runtimeOptions.getToolNames(),
this.defaultOptions.getToolNames()));
requestOptions.setToolCallbacks(ToolCallingChatOptions.mergeToolCallbacks(runtimeOptions.getToolCallbacks(),
Expand All @@ -409,7 +409,7 @@ else if (prompt.getOptions() instanceof FunctionCallingOptions functionCallingOp
this.defaultOptions.getToolContext()));
}
else {
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.isInternalToolExecutionEnabled());
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.getInternalToolExecutionEnabled());
requestOptions.setToolNames(this.defaultOptions.getToolNames());
requestOptions.setToolCallbacks(this.defaultOptions.getToolCallbacks());
requestOptions.setToolContext(this.defaultOptions.getToolContext());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ public static MistralAiChatOptions fromOptions(MistralAiChatOptions fromOptions)
.toolChoice(fromOptions.getToolChoice())
.toolCallbacks(fromOptions.getToolCallbacks())
.toolNames(fromOptions.getToolNames())
.internalToolExecutionEnabled(fromOptions.isInternalToolExecutionEnabled())
.internalToolExecutionEnabled(fromOptions.getInternalToolExecutionEnabled())
.toolContext(fromOptions.getToolContext())
.build();
}
Expand Down Expand Up @@ -287,8 +287,8 @@ public void setToolNames(Set<String> toolNames) {
@Override
@Nullable
@JsonIgnore
public Boolean isInternalToolExecutionEnabled() {
return this.internalToolExecutionEnabled;
public Boolean getInternalToolExecutionEnabled() {
return internalToolExecutionEnabled;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ void whenToolRuntimeOptionsThenMergeWithDefaults() {
Prompt prompt = chatModel.buildRequestPrompt(new Prompt("Test message content", runtimeOptions));

assertThat(((ToolCallingChatOptions) prompt.getOptions())).isNotNull();
assertThat(((ToolCallingChatOptions) prompt.getOptions()).isInternalToolExecutionEnabled()).isFalse();
assertThat(((ToolCallingChatOptions) prompt.getOptions()).getInternalToolExecutionEnabled()).isFalse();
assertThat(((ToolCallingChatOptions) prompt.getOptions()).getToolCallbacks()).hasSize(2);
assertThat(((ToolCallingChatOptions) prompt.getOptions()).getToolCallbacks()
.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -389,8 +389,8 @@ Prompt buildRequestPrompt(Prompt prompt) {
// Jackson, used by ModelOptionsUtils.
if (runtimeOptions != null) {
requestOptions.setInternalToolExecutionEnabled(
ModelOptionsUtils.mergeOption(runtimeOptions.isInternalToolExecutionEnabled(),
this.defaultOptions.isInternalToolExecutionEnabled()));
ModelOptionsUtils.mergeOption(runtimeOptions.getInternalToolExecutionEnabled(),
this.defaultOptions.getInternalToolExecutionEnabled()));
requestOptions.setToolNames(ToolCallingChatOptions.mergeToolNames(runtimeOptions.getToolNames(),
this.defaultOptions.getToolNames()));
requestOptions.setToolCallbacks(ToolCallingChatOptions.mergeToolCallbacks(runtimeOptions.getToolCallbacks(),
Expand All @@ -399,7 +399,7 @@ Prompt buildRequestPrompt(Prompt prompt) {
this.defaultOptions.getToolContext()));
}
else {
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.isInternalToolExecutionEnabled());
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.getInternalToolExecutionEnabled());
requestOptions.setToolNames(this.defaultOptions.getToolNames());
requestOptions.setToolCallbacks(this.defaultOptions.getToolCallbacks());
requestOptions.setToolContext(this.defaultOptions.getToolContext());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ public static OllamaOptions fromOptions(OllamaOptions fromOptions) {
.penalizeNewline(fromOptions.getPenalizeNewline())
.stop(fromOptions.getStop())
.toolNames(fromOptions.getToolNames())
.internalToolExecutionEnabled(fromOptions.isInternalToolExecutionEnabled())
.internalToolExecutionEnabled(fromOptions.getInternalToolExecutionEnabled())
.toolCallbacks(fromOptions.getToolCallbacks())
.toolContext(fromOptions.getToolContext()).build();
}
Expand Down Expand Up @@ -736,9 +736,9 @@ public void setToolNames(Set<String> toolNames) {
@Override
@Nullable
@JsonIgnore
public Boolean isInternalToolExecutionEnabled() {
public Boolean getInternalToolExecutionEnabled() {
return this.internalToolExecutionEnabled;
}
}

@Override
@JsonIgnore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ void whenToolRuntimeOptionsThenMergeWithDefaults() {
Prompt prompt = chatModel.buildRequestPrompt(new Prompt("Test message content", runtimeOptions));

assertThat(((ToolCallingChatOptions) prompt.getOptions())).isNotNull();
assertThat(((ToolCallingChatOptions) prompt.getOptions()).isInternalToolExecutionEnabled()).isFalse();
assertThat(((ToolCallingChatOptions) prompt.getOptions()).getInternalToolExecutionEnabled()).isFalse();
assertThat(((ToolCallingChatOptions) prompt.getOptions()).getToolCallbacks()).hasSize(2);
assertThat(((ToolCallingChatOptions) prompt.getOptions()).getToolCallbacks()
.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -513,8 +513,8 @@ else if (prompt.getOptions() instanceof FunctionCallingOptions functionCallingOp
requestOptions.setHttpHeaders(
mergeHttpHeaders(runtimeOptions.getHttpHeaders(), this.defaultOptions.getHttpHeaders()));
requestOptions.setInternalToolExecutionEnabled(
ModelOptionsUtils.mergeOption(runtimeOptions.isInternalToolExecutionEnabled(),
this.defaultOptions.isInternalToolExecutionEnabled()));
ModelOptionsUtils.mergeOption(runtimeOptions.getInternalToolExecutionEnabled(),
this.defaultOptions.getInternalToolExecutionEnabled()));
requestOptions.setToolNames(ToolCallingChatOptions.mergeToolNames(runtimeOptions.getToolNames(),
this.defaultOptions.getToolNames()));
requestOptions.setToolCallbacks(ToolCallingChatOptions.mergeToolCallbacks(runtimeOptions.getToolCallbacks(),
Expand All @@ -524,7 +524,7 @@ else if (prompt.getOptions() instanceof FunctionCallingOptions functionCallingOp
}
else {
requestOptions.setHttpHeaders(this.defaultOptions.getHttpHeaders());
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.isInternalToolExecutionEnabled());
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.getInternalToolExecutionEnabled());
requestOptions.setToolNames(this.defaultOptions.getToolNames());
requestOptions.setToolCallbacks(this.defaultOptions.getToolCallbacks());
requestOptions.setToolContext(this.defaultOptions.getToolContext());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ public static OpenAiChatOptions fromOptions(OpenAiChatOptions fromOptions) {
fromOptions.getToolCallbacks() != null ? new ArrayList<>(fromOptions.getToolCallbacks()) : null)
.toolNames(fromOptions.getToolNames() != null ? new HashSet<>(fromOptions.getToolNames()) : null)
.httpHeaders(fromOptions.getHttpHeaders() != null ? new HashMap<>(fromOptions.getHttpHeaders()) : null)
.internalToolExecutionEnabled(fromOptions.isInternalToolExecutionEnabled())
.internalToolExecutionEnabled(fromOptions.getInternalToolExecutionEnabled())
.toolContext(fromOptions.getToolContext() != null ? new HashMap<>(fromOptions.getToolContext()) : null)
.store(fromOptions.getStore())
.metadata(fromOptions.getMetadata())
Expand Down Expand Up @@ -444,7 +444,11 @@ public void setToolChoice(Object toolChoice) {
@Deprecated
@JsonIgnore
public Boolean getProxyToolCalls() {
return this.internalToolExecutionEnabled != null ? !this.internalToolExecutionEnabled : null;
return this.getToolExecutionEnabled() != null ? !this.internalToolExecutionEnabled : null;
}

private Boolean getToolExecutionEnabled() {
return this.internalToolExecutionEnabled;
}

@Deprecated
Expand Down Expand Up @@ -501,8 +505,8 @@ public void setToolNames(Set<String> toolNames) {
@Override
@Nullable
@JsonIgnore
public Boolean isInternalToolExecutionEnabled() {
return this.internalToolExecutionEnabled;
public Boolean getInternalToolExecutionEnabled() {
return internalToolExecutionEnabled;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ void whenToolRuntimeOptionsThenMergeWithDefaults() {
Prompt prompt = chatModel.buildRequestPrompt(new Prompt("Test message content", runtimeOptions));

assertThat(((ToolCallingChatOptions) prompt.getOptions())).isNotNull();
assertThat(((ToolCallingChatOptions) prompt.getOptions()).isInternalToolExecutionEnabled()).isFalse();
assertThat(((ToolCallingChatOptions) prompt.getOptions()).getInternalToolExecutionEnabled()).isFalse();
assertThat(((ToolCallingChatOptions) prompt.getOptions()).getToolCallbacks()).hasSize(2);
assertThat(((ToolCallingChatOptions) prompt.getOptions()).getToolCallbacks()
.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -503,8 +503,8 @@ Prompt buildRequestPrompt(Prompt prompt) {
// Jackson, used by ModelOptionsUtils.
if (runtimeOptions != null) {
requestOptions.setInternalToolExecutionEnabled(
ModelOptionsUtils.mergeOption(runtimeOptions.isInternalToolExecutionEnabled(),
this.defaultOptions.isInternalToolExecutionEnabled()));
ModelOptionsUtils.mergeOption(runtimeOptions.getInternalToolExecutionEnabled(),
this.defaultOptions.getInternalToolExecutionEnabled()));
requestOptions.setToolNames(ToolCallingChatOptions.mergeToolNames(runtimeOptions.getToolNames(),
this.defaultOptions.getToolNames()));
requestOptions.setToolCallbacks(ToolCallingChatOptions.mergeToolCallbacks(runtimeOptions.getToolCallbacks(),
Expand All @@ -518,7 +518,7 @@ Prompt buildRequestPrompt(Prompt prompt) {
this.defaultOptions.getSafetySettings()));
}
else {
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.isInternalToolExecutionEnabled());
requestOptions.setInternalToolExecutionEnabled(this.defaultOptions.getInternalToolExecutionEnabled());
requestOptions.setToolNames(this.defaultOptions.getToolNames());
requestOptions.setToolCallbacks(this.defaultOptions.getToolCallbacks());
requestOptions.setToolContext(this.defaultOptions.getToolContext());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ public static VertexAiGeminiChatOptions fromOptions(VertexAiGeminiChatOptions fr
options.setResponseMimeType(fromOptions.getResponseMimeType());
options.setGoogleSearchRetrieval(fromOptions.getGoogleSearchRetrieval());
options.setSafetySettings(fromOptions.getSafetySettings());
options.setInternalToolExecutionEnabled(fromOptions.isInternalToolExecutionEnabled());
options.setInternalToolExecutionEnabled(fromOptions.getInternalToolExecutionEnabled());
options.setToolContext(fromOptions.getToolContext());
return options;
}
Expand Down Expand Up @@ -287,7 +287,7 @@ public void setToolNames(Set<String> toolNames) {

@Override
@Nullable
public Boolean isInternalToolExecutionEnabled() {
public Boolean getInternalToolExecutionEnabled() {
return this.internalToolExecutionEnabled;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public void setToolContext(Map<String, Object> toolContext) {

@Override
@Nullable
public Boolean isInternalToolExecutionEnabled() {
public Boolean getInternalToolExecutionEnabled() {
return this.internalToolExecutionEnabled;
}

Expand Down Expand Up @@ -141,7 +141,7 @@ public void setFunctions(Set<String> functions) {
@Override
@Nullable
public Boolean getProxyToolCalls() {
return isInternalToolExecutionEnabled() != null ? !isInternalToolExecutionEnabled() : null;
return getInternalToolExecutionEnabled() != null ? !getInternalToolExecutionEnabled() : null;
}

@Override
Expand Down Expand Up @@ -236,7 +236,7 @@ public <T extends ChatOptions> T copy() {
options.setToolCallbacks(getToolCallbacks());
options.setToolNames(getToolNames());
options.setToolContext(getToolContext());
options.setInternalToolExecutionEnabled(isInternalToolExecutionEnabled());
options.setInternalToolExecutionEnabled(getInternalToolExecutionEnabled());
options.setModel(getModel());
options.setFrequencyPenalty(getFrequencyPenalty());
options.setMaxTokens(getMaxTokens());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
* including tool calling.
*
* @author Thomas Vitale
* @author Ilayaperumal Gopinathan
* @since 1.0.0
*/
public interface ToolCallingChatOptions extends FunctionCallingOptions {
Expand Down Expand Up @@ -68,7 +69,17 @@ public interface ToolCallingChatOptions extends FunctionCallingOptions {
* the model or if the tools should be executed directly by the caller.
*/
@Nullable
Boolean isInternalToolExecutionEnabled();
Boolean getInternalToolExecutionEnabled();

/**
* Whether the {@link ChatModel} is responsible for executing the tools requested by
* the model or if the tools should be executed directly by the caller.
*/
@Nullable
@Deprecated
default Boolean isInternalToolExecutionEnabled() {
return getInternalToolExecutionEnabled();
}

/**
* Set whether the {@link ChatModel} is responsible for executing the tools requested
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,9 @@ default boolean isInternalToolExecutionEnabled(ChatOptions chatOptions) {
Assert.notNull(chatOptions, "chatOptions cannot be null");
boolean internalToolExecutionEnabled;
if (chatOptions instanceof ToolCallingChatOptions toolCallingChatOptions
&& toolCallingChatOptions.isInternalToolExecutionEnabled() != null) {
internalToolExecutionEnabled = Boolean.TRUE.equals(toolCallingChatOptions.isInternalToolExecutionEnabled());
&& toolCallingChatOptions.getInternalToolExecutionEnabled() != null) {
internalToolExecutionEnabled = Boolean.TRUE
.equals(toolCallingChatOptions.getInternalToolExecutionEnabled());
}
else if (chatOptions instanceof FunctionCallingOptions functionCallingOptions
&& functionCallingOptions.getProxyToolCalls() != null) {
Expand Down
Loading