Compare commits

..

2 Commits

3 changed files with 26 additions and 3 deletions

View File

@@ -209,7 +209,6 @@ To download/pull the model into your Ollama server, run the following command in
```shell ```shell
ollama pull mistral ollama pull mistral
``` ```
You can list the models available on your model server by running the following command in your terminal. You can list the models available on your model server by running the following command in your terminal.

View File

@@ -31,7 +31,19 @@ You could do that with ease with the `function calling` capabilities of the mode
### Create Tools/Functions ### Create Tools/Functions
We can create static functions as our tools. There are two ways to create and register your tools:
1. **Define static or regular methods and register them explicitly as tools.**
You can create standalone functions (static or instance methods) and manually associate them with your tool specifications.
2. **Use annotation-based tool discovery for automatic registration.**
By annotating your tool methods, you can leverage `registerAnnotatedTools()` to automatically scan your classpath, find all annotated tool functions, and register them without extra boilerplate.
Learn more about annotation-based tool registration [here](/apis-generate/chat-with-tools#annotation-based-tool-registration).
Choose the approach that best fits your project—manual for precise control, or annotation-based for easier scaling.
Let's start by exploring the first approach: manually defining and registering your tools/functions.
This function takes the arguments `location` and `fuelType` and performs an operation with these arguments and returns This function takes the arguments `location` and `fuelType` and performs an operation with these arguments and returns
fuel price value. fuel price value.

View File

@@ -804,9 +804,21 @@ public class Ollama {
ocm.setResponse(request.getPrompt()); ocm.setResponse(request.getPrompt());
chatRequest.setMessages(msgs); chatRequest.setMessages(msgs);
msgs.add(ocm); msgs.add(ocm);
// Merge request's tools and globally registered tools into a new list to avoid mutating the
// original request
List<Tools.Tool> allTools = new ArrayList<>();
if (request.getTools() != null) {
allTools.addAll(request.getTools());
}
List<Tools.Tool> registeredTools = this.getRegisteredTools();
if (registeredTools != null) {
allTools.addAll(registeredTools);
}
OllamaChatTokenHandler hdlr = null; OllamaChatTokenHandler hdlr = null;
chatRequest.setUseTools(true); chatRequest.setUseTools(true);
chatRequest.setTools(request.getTools()); chatRequest.setTools(allTools);
if (streamObserver != null) { if (streamObserver != null) {
chatRequest.setStream(true); chatRequest.setStream(true);
if (streamObserver.getResponseStreamHandler() != null) { if (streamObserver.getResponseStreamHandler() != null) {