微信扫码
添加专属顾问
老牛同学在前面有关大模型应用的文章中,多次使用了Ollama来管理和部署本地大模型(包括:Qwen2、Llama3、Phi3、Gemma2等),但对Ollama这个非常方便管理本地大模型的软件的介绍却很少。
目前,清华和智谱 AI 联合发布开源的GLM4-9B大模型也能支持Ollama进行本地部署了(本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验),Ollama支持的大模型越多越普及,对于的应用也就越多。为了降低大家查阅资料等学习时间,老牛同学今天尝试着对 Ollama 进行一次详细完整介绍。毕竟老牛同学也在不断学习中,若有疏漏或者错误之处,还请各位朋友多多指正,谢谢大家。
本文将分为以下章节对 Ollama 进行介绍:
Ollama官网:https://ollama.com/,官方网站的介绍就一句话:Get up and running with large language models. (开始使用大语言模型。)
Ollama是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型、降低使用大语言模型的门槛,使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和部署最新大语言模型,包括如Qwen2、Llama3、Phi3、Gemma2等开源的大型语言模型。
Ollama支持的大语言模型列表,可通过搜索模型名称查看:https://ollama.com/library
Ollama官方 GitHub 源代码仓库:https://github.com/ollama/ollama/
Llama是 Meta 公司开源的备受欢迎的一个通用大语言模型,和其他大模型一样,Llama可以通过Ollama进行管理部署和推理等。
因此,Ollama与Llama的关系:Llama是大语言模型,而Ollama是大语言模型(不限于Llama模型)便捷的管理和运维工具,它们只是名字后面部分恰巧相同而已!
在官网首页,我们可以直接下载Ollama安装程序(支持 Windows/MacOS/Linux):https://ollama.com/
Ollama的安装过程,与安装其他普通软件并没有什么两样,安装完成之后,有几个常用的系统环境变量参数建议进行设置:
C:\Users%username%.ollama\models,MacOS 目录:~/.ollama/models,Linux 目录:/usr/share/ollama/.ollama/models),如果是 Windows 系统建议修改(如:D:\OllamaModels),避免 C 盘空间吃紧【展示本地大模型列表:ollama list】
>ollama listNAMEIDSIZEMODIFIEDgemma2:9b c19987e1e6e25.4 GB7 days agoqwen2:7be0d4e1163c584.4 GB10 days ago
可以看到,老牛同学本地有 2 个大模型,它们的名称(NAME)分别为gemma2:9b和qwen2:7b。
【删除单个本地大模型:ollama rm 本地模型名称】
>ollama rm gemma2:9bdeleted 'gemma2:9b'>ollama listNAMEIDSIZEMODIFIEDqwen2:7be0d4e1163c584.4 GB10 days ago
老牛同学通过rm命令删除了gemma2:9b大模型之后,再次通过list命令查看,本地只有qwen2:7b一个大模型了。
【启动本地模型:ollama run 本地模型名】
>ollama run qwen2:0.5b>>>
启动成功之后,就可以通过终端对话界面进行对话了(本命令下面也会讲到,其他详细暂且忽略)
【查看本地运行中模型列表:ollama ps】
>ollama psNAMEIDSIZEPROCESSOR UNTILqwen2:0.5b6f48b936a09f693 MB100% CPU4 minutes from now
通过ps命名可以看到,老牛同学本地qwen2:0.5b大模型正在运行中。
【复制本地大模型:ollama cp 本地存在的模型名 新复制模型名】
>ollama cp qwen2:0.5b Qwen2-0.5Bcopied 'qwen2:0.5b' to 'Qwen2-0.5B'>ollama listNAMEIDSIZEMODIFIEDQwen2-0.5B:latest 6f48b936a09f352 MB4 seconds agoqwen2:0.5b6f48b936a09f352 MB29 minutes agoqwen2:7be0d4e1163c584.4 GB10 days ago
上面cp命令,老牛同学把本地qwen2:0.5b复制了一份,新模型名为Qwen2-0.5B
下面老牛同学介绍三种通过 Ollama 下载到本地大模型方式:
【下载或者更新本地大模型:ollama pull 本地/远程仓库模型名称】
本pull命令从 Ollama 远程仓库完整下载或增量更新模型文件,模型名称格式为:模型名称:参数规格;如ollama pull qwen2:0.5b 则代表从 Ollama 仓库下载qwen2大模型的0.5b参数规格大模型文件到本地磁盘:
如果参数规格标记为latest则代表为默认参数规格,下载时可以不用指定,如Qwen2的7b被标记为latest,则ollama pull qwen2和ollama pull qwen2:7b这 2 个命令的意义是一样的,都下载的为7b参数规格模型。为了保证后续维护方便、避免误操作等,老牛同学建议不管是否为默认参数规格,我们下载命令中均明确参数规格。
值得一提的是,今天开始GLM4支持 Ollama 部署和推理,老牛同学特意列出它的下载命令:ollama pull glm4:9b(和其他模型相比,其实并没有特殊支出)。需要注意的是:Ollama 最低版本为0.2.0才能支持GLM4大模型!
>ollama pull qwen2:0.5bpulling manifestpulling manifestpulling manifestpulling manifestpulling manifestpulling 8de95da68dc4... 100% ▕████████████████████████▏ 352 MBpulling 62fbfd9ed093... 100% ▕████████████████████████▏182 Bpulling c156170b718e... 100% ▕████████████████████████▏11 KBpulling f02dd72bb242... 100% ▕████████████████████████▏ 59 Bpulling 2184ab82477b... 100% ▕████████████████████████▏488 Bverifying sha256 digestwriting manifestremoving any unused layerssuccess>ollama listNAMEIDSIZEMODIFIEDqwen2:0.5b6f48b936a09f352 MB9 minutes agoqwen2:7be0d4e1163c584.4 GB10 days ago
若本地不存在大模型,则下载完整模型文件到本地磁盘;若本地磁盘存在该大模型,则增量下载大模型更新文件到本地磁盘。
从上面最后的list命令结果可以看到,老牛同学本地存在了qwen2:0.5b这个名称的大模型。
【下载且运行本地大模型:ollama run 本地/远程仓库模型名称】
>ollama run qwen2:0.5b>>>
若本地不存在大模型,则下载完整模型文件到本地磁盘(类似于pull命令),然后启动大模型;若本地存在大模型,则直接启动(不进行更新)。
启动成功后,默认为终端对客界面:
"""这里是多行文本"""/clear清除对话上下文信息/bye则退出对话窗口/set parameter num_ctx 4096可设置窗口大小为 4096 个 Token,也可以通过请求设置,如:curl <http://localhost:11434/api/generate> -d '{ "model": "qwen2:7b", "prompt": "Why is the sky blue?", "options": { "num_ctx": 4096 }}'/show info可以查看当前模型详情:
,>>> /show infoModelarchqwen2parameters494.03MquantizationQ4_0context length32768embedding length896Parametersstop"<|im_start|>"stop"<|im_end|>"LicenseApache LicenseVersion 2.0, January 2004
若我们已经从 HF 或者 ModeScope 下载了 GGUF 文件(文件名为:Meta-Llama-3-8B-Instruct.Q4_K_M.gguf),在我们存放Llama3-8B的 GGUF 模型文件目录中,创建一个文件名为Modelfile的文件,该文件的内容如下:
FROM ./Meta-Llama-3-8B-Instruct.Q4_K_M.gguf
然后,打开终端,执行命令导入模型文件:ollama create 模型名称 -f ./Modelfile
>ollama create Llama-3-8B -f ./Modelfiletransferring model datausing existing layer sha256:647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1387b7a4365781fcreating new layer sha256:459d7c837b2bd7f895a15b0a5213846912693beedaf0257fbba2a508bc1c88d9writing manifestsuccess
导入成功之后,我们就可以通过list命名,看到名为Llama-3-8B的本地模型了,后续可以和其他模型一样进行管理了。
官方操作文档:https://ollama.fan/getting-started/import/#importing-pytorch-safetensors
若我们已经从 HF 或者 ModeScope 下载了 safetensors 文件(文件目录为:Mistral-7B),
git lfs installgit clone https://www.modelscope.cn/rubraAI/Mistral-7B-Instruct-v0.3.git Mistral-7B
然后,我们转换模型(结果:Mistral-7B-v0.3.bin):
python llm/llama.cpp/convert.py ./Mistral-7B --outtype f16 --outfile Mistral-7B-v0.3.bin
接下来,进行量化量化:
llm/llama.cpp/quantize Mistral-7B-v0.3.bin Mistral-7B-v0.3_Q4.bin q4_0
最后,通过 Ollama 导入到本地磁盘,创建Modelfile模型文件:
FROM Mistral-7B-v0.3_Q4.bin
执行导入命令,导入模型文件:ollama create 模型名称 -f ./Modelfile
>ollama create Mistral-7B-v0.3 -f ./Modelfiletransferring model datausing existing layer sha256:647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1387b7a4365781fcreating new layer sha256:459d7c837b2bd7f895a15b0a5213846912693beedaf0257fbba2a508bc1c88d9writing manifestsuccess
导入成功之后,我们就可以通过list命名,看到名为Mistral-7B-v0.3的本地模型了,后续可以和其他模型一样进行管理了。
Ollama自带控制台对话界面体验总归是不太好,接下来部署 Web 可视化聊天界面:
ollama-webui工程代码:git clone https://github.com/ollama-webui/ollama-webui-lite ollama-webuiollama-webui代码的目录:cd ollama-webuinpm config set registry http://mirrors.cloud.tencent.com/npm/npm installnpm run dev如果看到以上输出,代表 Web 可视化界面已经成功了!
浏览器打开 Web 可视化界面:http://localhost:3000/
Ollama 默认提供了generate和chat这 2 个原始的 API 接口,使用方式如下:
generate接口的使用样例:curl http://localhost:11434/api/generate -d "{'model': 'qwen:0.5b','prompt': '为什么天空是蓝色的?'}"chat接口的使用样例:curl http://localhost:11434/api/chat -d '{"model": "qwen:7b","messages": [{ "role": "user", "content": "为什么天空是蓝色的?" }]}'接下来的Python和Java客户端应用,都是对这 2 个接口的封装。
我们把 Ollama 集成到 Python 应用中,只需要以下简单 2 步即可:
第一步,安装 Python 依赖包:
pip install ollama
第二步,使用 Ollama 接口,stream=True代表按照流式输出:
import ollama# 流式输出def api_generate(text:str):print(f'提问:{text}')stream = ollama.generate(stream=True,model='qwen:7b',prompt=text,)print('-----------------------------------------')for chunk in stream:if not chunk['done']:print(chunk['response'], end='', flush=True)else:print('\n')print('-----------------------------------------')print(f'总耗时:{chunk['total_duration']}')print('-----------------------------------------')if __name__ == '__main__':# 流式输出api_generate(text='天空为什么是蓝色的?')# 非流式输出content = ollama.generate(model='qwen:0.5b', prompt='天空为什么是蓝色的?')print(content)
我们也可以把 Ollama 集成到 SpringBoot 应用中,只需要以下简单 3 步即可:
第一步,在总pom.xml中新增 SpringBoot Starter 依赖:
<dependency><groupId>io.springboot.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId><version>1.0.0</version></dependency>
第二步,在 SpringBoot 配置文件application.properties中增加 Ollama 配置信息:
server.port=8088spring.application.name=NTopicBootXspring.ai.ollama.base-url=http://localhost:11434spring.ai.ollama.chat.options.model=qwen:0.5b
配置文件指定了 Ollama API 地址和端口,同时指定了默认模型qwen:0.5b(注意:模型需要在本地已经存在)
第三步,使用OllamaChatClient进行文字生成或者对话:
import org.springframework.ai.chat.ChatResponse;import org.springframework.ai.chat.prompt.Prompt;import org.springframework.ai.ollama.OllamaChatClient;import org.springframework.ai.ollama.api.OllamaOptions;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class OllamaClientController {@Autowired@Qualifier("ollamaChatClient")private OllamaChatClient ollamaChatClient;/*** http://localhost:8088/ollama/chat/v1?msg=天空为什么是蓝色的?*/@GetMapping("/ollama/chat/v1")public String ollamaChat(@RequestParam String msg) {return this.ollamaChatClient.call(msg);}/*** http://localhost:8088/ollama/chat/v2?msg=人为什么要不断的追求卓越?*/@GetMapping("/ollama/chat/v2")public Object ollamaChatV2(@RequestParam String msg) {Prompt prompt = new Prompt(msg);ChatResponse chatResponse = ollamaChatClient.call(prompt);return chatResponse;}/*** http://localhost:8088/ollama/chat/v3?msg=你认为老牛同学的文章如何?*/@GetMapping("/ollama/chat/v3")public Object ollamaChatV3(@RequestParam String msg) {Prompt prompt = new Prompt(msg,OllamaOptions.create().withModel("qwen:0.5b").withTemperature(0.4F));ChatResponse chatResponse = ollamaChatClient.call(prompt);return chatResponse.getResult().getOutput().getContent();}}
以上是 Java 客户端的简单样例,我们可以通过OllamaChatClient访问 Ollama 接口,既可以使用默认大模型,也可以在参数指定模型名称!
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-06-30
花叔的这个神器直接让你的AI Agent出高保真原型、PPT和动画,20k stars不是盖的
2026-06-30
阿里达摩院开源语音识别:比Whisper快170倍还免费,CPU就能跑
2026-06-30
MiniMax M3 实测:第一流的模型,已经对执行层动手了
2026-06-30
DSpark:DeepSeek 如何让大模型推理提速 85%
2026-06-30
告别云端付费!3秒克隆你的声音,这款开源AI不用GPU,手机CPU就能实时跑
2026-06-30
阿里开源 ReMe:像写双链笔记一样给 AI Agent 做长期记忆
2026-06-30
一次关于 AI 需求交付Skills的优化升级
2026-06-30
阿里开源 Open Code Review:让 AI 代码审查从“会看”走向“看得准”
2026-04-09
2026-04-03
2026-04-18
2026-04-18
2026-06-22
2026-04-02
2026-05-10
2026-05-06
2026-05-20
2026-05-31
2026-06-16
2026-05-30
2026-05-16
2026-04-22
2026-04-21
2026-04-15
2026-04-09
2026-04-01
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。