from ollama import Client client = Client( host='https://ollama.molodetz.nl/', headers={'x-some-header': 'some-value'} ) def times_two(nr_1: int) -> int: return nr_1 * 2 available_functions = { 'times_two': times_two } messages = [] def chat_stream(message): if message: messages.append({'role': 'user', 'content': message}) content = '' for response in client.chat(model='qwen2.5-coder:0.5b', messages=messages, stream=True): content += response.message.content print(response.message.content, end='', flush=True) messages.append({'role': 'assistant', 'content': content}) print("") def chat(message, stream=False): if stream: return chat_stream(message) if message: messages.append({'role': 'user', 'content': message}) response = client.chat(model='qwen2.5:3b', messages=messages, tools=[times_two]) if response.message.tool_calls: for tool in response.message.tool_calls: 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) print('Function output:', output) else: print('Function', tool.function.name, 'not found') if response.message.tool_calls: messages.append(response.message) messages.append({'role': 'tool', 'content': str(output), 'name': tool.function.name}) return chat(None) return response.message.content while True: chat_stream("A farmer and a sheep are standing on one side of a river. There is a boat with enough room for one human and one animal. How can the farmer get across the river with the sheep in the fewest number of trips?")