马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 player-none 于 2025-5-5 23:12 编辑
(Windows)Ollama 本地部署 AI 大模型(附 OpenWebUI 部署和 Python 调用教程)
DeepSeek-R1 / Qwen3 / Llama 等 AI 大模型不是梦!
Ollama 是什么?
我们拿 360 软件管家举个例子:它可以管理电脑上的软件,从安装到卸载,一个 360 软件管家就可以解决了。
好吧我编不下去了……不过就大概这个意思,大家 Get 到就行。
Ollama 和 360 软件管家有着共同点:它们都负责某一内容的安装到删除。Ollama 是一个负责管理本地大模型的软件。
不过它们也有不同点,除了负责的内容不一样之外,Ollama 没有 360 各种各样的缺点。
Ollama 安装
打开 Ollama 官网(https://ollama.com/download),点击“Download for Windows”按钮,Ollama 的安装包就会开始下载了,如图所示:
温馨提示:若因网络原因无法顺利下载,请考虑使用 NeatDownloadManager (NDM) / Watt Toolkit / FastGitHub 等工具。
点击“Install”开始安装,然后等进度条走完,整个过程耗时 3-5 分钟左右。注:Ollama 所需内存较大,不适合在虚拟机里安装
使用 Ollama 安装大模型
这是用时最长但最简单的一步了。按下 Win(Windows 徽标键)+R,输入“cmd”(也可以是 powershell),就可以打开终端(界面不一样没关系)。
先输入“ollama help”,显示的文字清楚地显示了 Ollama 的用法。
- C:\Users\Administrator>ollama help
- Large language model runner
- Usage:
- ollama [flags]
- ollama [command]
- Available Commands:
- serve Start ollama
- create Create a model from a Modelfile
- show Show information for a model
- run Run a model
- stop Stop a running model
- pull Pull a model from a registry
- push Push a model to a registry
- list List models
- ps List running models
- cp Copy a model
- rm Remove a model
- help Help about any command
- Flags:
- -h, --help help for ollama
- -v, --version Show version information
- Use "ollama [command] --help" for more information about a command.
复制代码
我们想做的是运行大模型(上面所说的 Run a model),我们应该怎么办呢?
- C:\Users\Administrator>ollama run --help
- Run a model
- Usage:
- ollama run MODEL [PROMPT] [flags]
- Flags:
- --format string Response format (e.g. json)
- -h, --help help for run
- --insecure Use an insecure registry
- --keepalive string Duration to keep a model loaded (e.g. 5m)
- --nowordwrap Don't wrap words to the next line automatically
- --verbose Show timings for response
- Environment Variables:
- OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)
- OLLAMA_NOHISTORY Do not preserve readline history
复制代码
可以看到 ollama run 命令有两个一个固定参数 MODEL 和两个可选参数 PROMPT 和 FLAGS,MODEL 代表 AI 大模型名称,PROMPT 代表我们向 AI 说的话,FLAGS 代表对 AI 回答的要求,上面写的很清楚了。
那 MODEL 该怎么填呢?
我们打开这个链接:https://ollama.com/models,里面有很多大模型:
可是具体需要多少内存呢?这里写的很清楚了:(再往下滑有关于这个大模型的介绍)
如图所示,选择你想下载的版本,例如 qwen3:8b。
所以我们在终端输入 ollama run qwen3:8b,等待下载即可(很慢,建议等的时候做下一步):
我们要等它变成这样:
Ollama 会自动在终端里运行大模型(如果你不想运行的话,下次安装的时候记得使用 ollama pull MODEL,不运行,只拉取(下载)即可。
Docker + OpenWebUI
如果你尝试不看教程直接去官网安装 Docker,你会喜提:
解决办法是使用镜像站。链接:https://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/stable/
接下来我们应该开始安装 Docker。
运行你下载的 Docker Desktop Installer.exe,等待几秒让安装程序做准备(太快了没截下来),再点击“Ok”:
然后静等安装好即可,点击 Close and Restart:
接下来,我们就可以让 Docker 下载 OpenWebUI 了。(我对 Docker 操作不是很熟,不能详细说明每一步的作用)
打开 https://github.com/open-webui/open-webui,可以看见一条命令:
- docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
复制代码
放终端里运行下就好了。但是!!会很慢!!(自己挂了一个小时之后才想办法找捷径.png)
首先,暴力停止它!!!(Ctrl+C)
然后,把 ghcr.io 改成 ghcr.nju.edu.cn(镜像源)下载速度飞起!!!
打开 Docker,可以看到 OpenWebUI 已经自动运行了。点击这里,打开浏览器:
点这个:
然后输入信息:
Done!
Python 调用
Python 调用 Ollama 需要安装 ollama 库,不难想到吧:
等它安装完了,我们打开 Python 终端(Win+R,py):
- Python 3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> from ollama import chat
- >>> response = chat(model='qwen3:8b', messages=[
- ... {'role':'user','content':'你好!你是Qwen3吗?'}]
- ... )
复制代码
这个 messages 参数的功能很强大,可以用来做连续对话,这个放到后面讲。
你会发现命令执行下来略有延迟,不用管它,等着就行(咱也没办法啊)。
- >>> print(response.message.content)
- <think>
- 嗯,用户问我是Qwen3吗?首先,我需要确认自己是不是Qwen3。根据我的知识,Qwen3是通义千问的最新版本,而我是Qwen2。所以我要告诉用户我不是Qwen3,而是Qwen2。不过,用户可能对版本不太清楚,所以我要解释清楚两者的区别,比如Qwen3可能有更强大的功能或者优化过的模型。同时,我应该保持友好,邀请用户提问,这样他们可以得到更好的帮助。另外,用户可能是在测试我的身份,或者想确认我的功能是否符合他们的需求。所以,我需要用简单明了的语言回答,避免使用专业术语,让用户容易理解。最后,确保回答准确,同时保持亲切的语气。
- </think>
- 你好!我不是Qwen3,我是Qwen2。Qwen3是通义千问的最新版本,而我是Qwen2。如果你有任何问题或需要帮助,我会尽力提供支持!😊
复制代码
(打脸了)
有谁能解释一下这是为啥?下到盗版的了?(自我感觉不是这样)
由于上面的原因,接下来我们使用 llama3.1:8b 演示。
- Python 3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)] on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> from ollama import chat
- >>> response = chat(model='llama3.1:8b', messages=[dict(role='user', content='你好!1+1等于几?')])
- >>> print(response.message.content)
- 1+1等于2。
复制代码
很简介明了。
我们封装下这个功能:
- >>> def ask(msg):
- ... print(chat(model='llama3.1:8b', messages=[dict(role='user', content=msg)]).message.content
- ...
复制代码
接下来,我们就可以畅快地使用了:
- >>> ask('提出让冷清的论坛重新火起来的5点建议')
- 以下是一些建议来促进冷清的论坛重新活跃:
- - **优化论坛结构和用户体验**:检查论坛的布局和设计是否易于使用。确保新用户可以快速找到帮助和支持,内容是组织良好的,并且容易浏览。
- - **创建有吸引力的内容策略**:提供高质量、相关、有趣的帖子和讨论主题。这包括发起讨论、分享有价值的信息、寻找专家意见,以及组织活动或竞赛等活动。
- - **激励用户参与**:建立奖励计划或激励措施来吸引更多用户。例如,可以给出积分或徽章,或者举办抽奖和竞赛等活动。让用户有动力分享自己的想法、经历和知识。
- - **重新连接社区**:重新联系论坛的老成员,并鼓励他们继续参与。这可以通过发起回归计划、组织聚会或线上活动来实现。同时,应积极吸引新成员,以保持增长和动力。
- - **利用社交媒体推广**:通过社交媒体(如Face<防审核>book、Twi<防审核>tter等)宣传论坛,并与外部社区建立联系。这有助于吸引新的用户,并将现有会员与其他群体联系起来。
复制代码
如果我们继续玩儿下去,就会发现有一点让我们很不爽:
我们可以设置这样一个参数:`stream=True`。
- >>> stream = chat(model='llama3.1:8b', messages=[dict(role='user', content='为什么水是蓝绿色的?')],stream=True)
- >>> for chunk in stream:
- ... print(chunk.message.content, end='', flush=True)
- ...
复制代码
这样就能让 AI 一个词一个词(好像真的是这样哎?为什么是一个词一个词呢?)地回答你了。
接下来,我来填刚刚挖下的小坑:messages 参数是干啥用的?
看着刚才的代码,我们首先可以得出:messages 是一个 list[dict]。针对这个 dict,我们得知:
- role:user,代表话是用户说的
- content:用户说的话
未完待续……
|