ollama-python icon indicating copy to clipboard operation
ollama-python copied to clipboard

Tool calling example may have a glitch - seems to only record the result of the last tool call

Open janspoerer opened this issue 11 months ago • 1 comments

The tool calling example in /examples/tools.py seems to only record the last tool call.

Am I seeing this correctly? If so, please let me know; I'll make a PR.

if response.message.tool_calls:
  # There may be multiple tool calls in the response
  for tool in response.message.tool_calls:
    # Ensure the function is available, and then call it
    if function_to_call := available_functions.get(tool.function.name):
      print('Calling function:', tool.function.name)
      print('Arguments:', tool.function.arguments)
      output = function_to_call(**tool.function.arguments) ########### OVERWRITE PREVIOUS TOOL CALLS #############
      print('Function output:', output)
    else:
      print('Function', tool.function.name, 'not found')

# Only needed to chat with the model using the tool call results
if response.message.tool_calls:
  # Add the function response to messages for the model to use
  messages.append(response.message)
  messages.append({'role': 'tool', 'content': str(output), 'name': tool.function.name})

  # Get final response from model with function outputs
  final_response = chat('llama3.1', messages=messages)
  print('Final response:', final_response.message.content)

janspoerer avatar Mar 18 '25 09:03 janspoerer

No problem. You can try: What is three plus one, then plus two? The result is 6. hahaha I think the actual tool call should be like this:

Image

xuzexin-hz avatar May 03 '25 02:05 xuzexin-hz