diff --git a/langchain4j-ollama/src/main/java/dev/langchain4j/model/ollama/OllamaMessagesUtils.java b/langchain4j-ollama/src/main/java/dev/langchain4j/model/ollama/OllamaMessagesUtils.java index 3ba5e1ea2..abb3670c1 100644 --- a/langchain4j-ollama/src/main/java/dev/langchain4j/model/ollama/OllamaMessagesUtils.java +++ b/langchain4j-ollama/src/main/java/dev/langchain4j/model/ollama/OllamaMessagesUtils.java @@ -42,7 +42,7 @@ class OllamaMessagesUtils { .function(Function.builder() .name(toolSpecification.name()) .description(toolSpecification.description()) - .parameters(Parameters.builder() + .parameters(toolSpecification.parameters() == null ? null : Parameters.builder() .properties(toolSpecification.parameters().properties()) .required(toolSpecification.parameters().required()) .build()) diff --git a/langchain4j-ollama/src/test/java/dev/langchain4j/model/ollama/OllamaToolChatModelIT.java b/langchain4j-ollama/src/test/java/dev/langchain4j/model/ollama/OllamaToolChatModelIT.java index 5f4c944bb..735bc97d1 100644 --- a/langchain4j-ollama/src/test/java/dev/langchain4j/model/ollama/OllamaToolChatModelIT.java +++ b/langchain4j-ollama/src/test/java/dev/langchain4j/model/ollama/OllamaToolChatModelIT.java @@ -20,6 +20,7 @@ import static dev.langchain4j.model.ollama.OllamaImage.TOOL_MODEL; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; class OllamaToolChatModelIT extends AbstractOllamaToolsLanguageModelInfrastructure { @@ -31,6 +32,11 @@ class OllamaToolChatModelIT extends AbstractOllamaToolsLanguageModelInfrastructu .addParameter("location", STRING, description("The location to get the weather for, e.g. San Francisco, CA")) .build(); + ToolSpecification toolWithoutParameter = ToolSpecification.builder() + .name("get_current_time") + .description("Get the current time") + .build(); + ChatLanguageModel ollamaChatModel = OllamaChatModel.builder() .baseUrl(ollama.getEndpoint()) .modelName(TOOL_MODEL) @@ -90,4 +96,22 @@ class OllamaToolChatModelIT extends AbstractOllamaToolsLanguageModelInfrastructu assertThat(aiMessage.toolExecutionRequests()).isNull(); } + @Test + void should_handle_tool_without_parameter() { + + // given + List toolSpecifications = singletonList(toolWithoutParameter); + + // when + List chatMessages = singletonList( + userMessage("What is the current time?") + ); + + // then + assertDoesNotThrow(() -> { + ollamaChatModel.generate(chatMessages, toolSpecifications); + }); + + } + } \ No newline at end of file