forked from Mirror/ollama4j
Enables in chat tool calling
This commit is contained in:
@@ -777,6 +777,22 @@ public class OllamaAPI {
|
||||
result = requestCaller.call(request, streamHandler);
|
||||
} else {
|
||||
result = requestCaller.callSync(request);
|
||||
// check if toolCallIsWanted
|
||||
List<OllamaChatToolCalls> toolCalls = result.getResponseModel().getMessage().getToolCalls();
|
||||
int toolCallTries = 0;
|
||||
while(toolCalls != null && !toolCalls.isEmpty() && toolCallTries <3){
|
||||
for (OllamaChatToolCalls toolCall : toolCalls){
|
||||
String toolName = toolCall.getFunction().getName();
|
||||
ToolFunction toolFunction = toolRegistry.getToolFunction(toolName);
|
||||
Map<String, Object> arguments = toolCall.getFunction().getArguments();
|
||||
Object res = toolFunction.apply(arguments);
|
||||
request.getMessages().add(new OllamaChatMessage(OllamaChatMessageRole.TOOL,"[ToolCall-Result]" + toolName + "(" + arguments.keySet() +") : " + res + "[/ToolCall-Result]"));
|
||||
}
|
||||
result = requestCaller.callSync(request);
|
||||
toolCalls = result.getResponseModel().getMessage().getToolCalls();
|
||||
toolCallTries++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -12,5 +12,5 @@ import java.util.Map;
|
||||
public class OllamaToolCallsFunction
|
||||
{
|
||||
private String name;
|
||||
private Map<String,String> arguments;
|
||||
private Map<String,Object> arguments;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user