微信扫码
添加专属顾问
 
                        我要投稿
Ollama 0.9大版本重磅升级,新增流式响应与推理模式支持,大幅提升模型交互体验。 核心内容: 1. 0.8版本引入工具调用流式响应功能 2. 0.9版本新增推理模式开关支持 3. 详细代码示例展示天气查询工具调用实现
 
                                Ollama 连发两个大版本,分别是 v0.8.0和v0.9.0,0.8 版本后直接发 0.9 大版本,中间没有小功能迭代。
在 0.8 版本中,ollama 支持工具调用流式响应(stream response with tool calls)。
在 0.9 版本中,ollama 增强了对推理模型的支持,支持开启和关闭模型的推理模式。
支持工具调用的开源模型比较多,有:
我们以官方仓库 ollama-python/examples[8] 中的例子修改得到获取天气的样例代码 weather.py:
from ollama import ChatResponse, chat
defget_current_weather(location: str, format: str) -> str:
return"33"
# Tools can still be manually defined and passed into chat
get_current_weather_tool = {
'type': 'function',
'function': {
    'name': 'get_current_weather',
    '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'])
available_functions = {
'get_current_weather': get_current_weather,
}
response: ChatResponse = chat(
'qwen3:latest',
  messages=messages,
  tools=[get_current_weather, get_current_weather_tool],
  stream=True,
)
for resp in response:
# print('resp {}'.format(resp))
ifnot resp.message.tool_calls:
    print(resp['message']['content'], end='', flush=True)
else:
    # There may be multiple tool calls in the response
    for tool in resp.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)
        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.py
Prompt: 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 get_current_weather. 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: get_current_weather
Arguments: {'format': 'json', 'location': 'Shanghai'}
Function output: 33
<think>
Okay, the user asked about the weather in Shanghai today. I called the get_current_weather 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! ?️当前,只有 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。
这两个功能都很酷,目前看一些开源 对话应用、支持库都还没支持 开启、关闭推理模式,希望开源社区尽快支持。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-31
Google DeepMind揭秘:开源AI模型如何泄露训练秘方
2025-10-31
有人问我会不会用 AI,我直接拿出这个 Ollama + FastGPT 项目给他看
2025-10-30
开源可信MCP,AICC机密计算新升级!
2025-10-30
OpenAI 开源了推理安全模型-gpt-oss-safeguard-120b 和 gpt-oss-safeguard-20b
2025-10-29
刚刚,OpenAI 再次开源!安全分类模型 gpt-oss-safeguard 准确率超越 GPT-5
2025-10-29
AI本地知识库+智能体系列:手把手教你本地部署 n8n,一键实现自动采集+智能处理!
2025-10-29
n8n如何调用最近爆火的deepseek OCR?
2025-10-29
OpenAI终于快要上市了,也直面了这23个灵魂拷问。
 
            2025-08-20
2025-09-07
2025-08-05
2025-08-20
2025-08-26
2025-08-22
2025-09-06
2025-08-06
2025-10-20
2025-08-22
2025-10-29
2025-10-28
2025-10-13
2025-09-29
2025-09-17
2025-09-09
2025-09-08
2025-09-07