
Ollama 0.9大版本重磅升级,新增流式响应与推理模式支持,大幅提升模型交互体验。
核心内容:
0.8版本引入工具调用流式响应功能
0.9版本新增推理模式开关支持
详细代码示例展示天气查询工具调用实现
简介
Ollama 连发两个大版本,分别是v0.8.0和v0.9.0,0.8 版本后直接发 0.9 大版本,中间没有小功能迭代。
在 0.8 版本中,ollama 支持工具调用流式响应(stream response with tool calls)。
在 0.9 版本中,ollama 增强了对推理模型的支持,支持开启和关闭模型的推理模式。
0.8.0
支持工具调用的开源模型比较多,有:
•Qwen 3[1]
•Devstral[2]
•Qwen2.5[3]and Qwen2.5-coder[4]
•Llama 3.1[5]
•Llama 4[6]
•其它模型[7]
我们以官方仓库 ollama-python/examples[8]中的例子修改得到获取天气的样例代码 weather.py:
from ollama import ChatResponse, chatdefgetcurrentweather(location: str, format: str) -> str:return"33"# Tools can still be manually defined and passed into chatgetcurrentweathertool = {'type': 'function','function': { 'name': 'getcurrentweather', 'description': 'Get weather of location', 'parameters': { 'type': 'object', 'required': ['location', 'format'], 'properties': { 'location': {'location': 'string', 'description': 'The location'}, 'format': {'format': 'string', 'description': 'The result format'}, }, }, },}messages = [{'role': 'user', 'content': 'What is the weather today in Shanghai?'}]print('Prompt:', messages[0]['content'])availablefunctions = {'getcurrentweather': getcurrentweather,}response: ChatResponse = chat('qwen3:latest', messages=messages, tools=[getcurrentweather, getcurrentweathertool], stream=True,)for resp in response:# print('resp {}'.format(resp))ifnot resp.message.toolcalls: print(resp['message']['content'], end='', flush=True)else: # There may be multiple tool calls in the response for tool in resp.message.toolcalls: # Ensure the function is available, and then call it if functiontocall := availablefunctions.get(tool.function.name): print('Calling function:', tool.function.name) print('Arguments:', tool.function.arguments) output = functiontocall(tool.function.arguments) print('Function output:', output) else: print('Function', tool.function.name, 'not found') # Add the function response to messages for the model to use messages.append(resp.message) messages.append({'role': 'tool', 'content': str(output), 'name': tool.function.name}) # Get final response from model with function outputs for fr in chat('qwen3:latest', messages=messages, stream=True): print(fr['message']['content'], end='', flush=True)
上述代码是获取指定位置的温度,得到结果后将温度传给模型,生成最终的结果:
$ python weather.pyPrompt: What is the weather today in Shanghai?<think>Okay, the user is asking for the weather in Shanghai today. Let me check the tools provided. There's a function called getcurrentweather. The parameters required are location and format. The description mentions getting the weather for a location. Even though the parameters' descriptions are a bit unclear, location is a string, so I should provide "Shanghai" as the location. For format, maybe the user wants a simple response, so I'll use "json" as a common format. I'll call the function with these arguments.</think>Calling function: getcurrentweatherArguments: {'format': 'json', 'location': 'Shanghai'}Function output: 33<think>Okay, the user asked about the weather in Shanghai today. I called the getcurrentweather function with the location set to Shanghai and format as JSON. The response came back as "33". Hmm, that's not a typical weather description. Maybe the API returned a temperature in Celsius? 33°C is quite hot. Let me check if there's more data. Wait, the response was just "33", so maybe the API is broken or there was an error. Alternatively, maybe it's a placeholder. I should inform the user that the information is incomplete. I'll mention the temperature if I assume it's Celsius and note that other details aren't available. Let me make sure to ask them to check again later or try another source.</think>The current weather in Shanghai is not fully available. However, based on the data received, the temperature is approximately 33°C. For more detailed information (e.g., humidity, wind speed, or conditions), please check again later or use a dedicated weather service. Let me know if you'd like further assistance! ?️
0.9.0
当前,只有 DeepSeek R1[9]和 Qwen3[10]支持推理能力,后续会有更多模型支持。
开启和关闭推理能力,可以在调用 Ollama API 时指定"think": true
curl http://localhost:11434/api/chat -d '{ "model": "deepseek-r1", "messages": [ { "role": "user", "content": "Why is the sky blue?" }, ], "think": true}'
也可以在 ollama 终端用/set think和/set nothink来开启和关闭推理模式。
总结
工具调用的流式响应,可以带来更好的用户体验。推理模式开启和关闭,ollama 支持的有点晚,印象中最先支持的是 qwen3。
这两个功能都很酷,目前看一些开源 对话应用、支持库都还没支持 开启、关闭推理模式,希望开源社区尽快支持。
[](javascript:void (0);)
开源大模型开源大模型有哪些开源大模型和闭源大模型的区别





