player-none 发表于 2025-4-30 17:19:39

(Windows)Ollama 本地部署 AI 大模型(附 OpenWebUI 部署和 Python 调用教程)

本帖最后由 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
ollama

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 --help" for more information about a command.


我们想做的是运行大模型(上面所说的 Run a model),我们应该怎么办呢?

C:\Users\Administrator>ollama run --help
Run a model

Usage:
ollama run MODEL

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,你会喜提:



被 qiáng 了。

解决办法是使用镜像站。链接: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 库,不难想到吧:

pip install ollama




等它安装完了,我们打开 Python 终端(Win+R,py):

Python 3.12.5 (tags/v3.12.5:ff3bc82, Aug6 2024, 20:45:27) 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。如果你有任何问题或需要帮助,我会尽力提供支持!&#128522;


(打脸了)

有谁能解释一下这是为啥?下到盗版的了?(自我感觉不是这样)

由于上面的原因,接下来我们使用 llama3.1:8b 演示。

Python 3.12.5 (tags/v3.12.5:ff3bc82, Aug6 2024, 20:45:27) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from ollama import chat
>>> response = chat(model='llama3.1:8b', messages=)
>>> print(response.message.content)
1+1等于2。


很简介明了。

我们封装下这个功能:

>>> def ask(msg):
...   print(chat(model='llama3.1:8b', messages=).message.content
...


接下来,我们就可以畅快地使用了:

>>> ask('提出让冷清的论坛重新火起来的5点建议')
以下是一些建议来促进冷清的论坛重新活跃:

- **优化论坛结构和用户体验**:检查论坛的布局和设计是否易于使用。确保新用户可以快速找到帮助和支持,内容是组织良好的,并且容易浏览。
- **创建有吸引力的内容策略**:提供高质量、相关、有趣的帖子和讨论主题。这包括发起讨论、分享有价值的信息、寻找专家意见,以及组织活动或竞赛等活动。
- **激励用户参与**:建立奖励计划或激励措施来吸引更多用户。例如,可以给出积分或徽章,或者举办抽奖和竞赛等活动。让用户有动力分享自己的想法、经历和知识。
- **重新连接社区**:重新联系论坛的老成员,并鼓励他们继续参与。这可以通过发起回归计划、组织聚会或线上活动来实现。同时,应积极吸引新成员,以保持增长和动力。
- **利用社交媒体推广**:通过社交媒体(如Face<防审核>book、Twi<防审核>tter等)宣传论坛,并与外部社区建立联系。这有助于吸引新的用户,并将现有会员与其他群体联系起来。


如果我们继续玩儿下去,就会发现有一点让我们很不爽:

等的时间太长了!

我们可以设置这样一个参数:`stream=True`。

>>> stream = chat(model='llama3.1:8b', messages=,stream=True)
>>> for chunk in stream:
...   print(chunk.message.content, end='', flush=True)
...


这样就能让 AI 一个词一个词(好像真的是这样哎?为什么是一个词一个词呢?)地回答你了。

接下来,我来填刚刚挖下的小坑:messages 参数是干啥用的?

看着刚才的代码,我们首先可以得出:messages 是一个 list。针对这个 dict,我们得知:


[*]role:user,代表话是用户说的
[*]content:用户说的话


未完待续……

FishC 发表于 2025-4-30 17:20:52

(Windows)Ollama 本地部署 AI 大模型教程(含问题解答)


一、Ollama 安装要点

[*]下载问题:若官网下载失败,推荐使用 Watt Toolkit 加速下载
[*]内存要求:建议 16G 内存及以上,8G 内存可能无法流畅运行 7B 以上模型
[*]验证安装:安装后cmd输入 ollama --version 显示版本即成功


二、模型下载答疑
问题现象:
qwen3:8b 显示为 Qwen2?
原因解析:
Ollama 官方模型库存在命名规范问题,建议改用:

ollama run qwen:7b
ollama run llama3:8b


三、Docker 避坑指南

[*]镜像加速:将命令中 ghcr.io 替换为 ghcr.nju.edu.cn
[*]安装验证:安装后任务栏出现鲸鱼图标即成功
[*]端口冲突:若 3000 端口被占用,修改命令中 -p 3000:8080 为其他端口


四、Python 调用完整示例

from ollama import chat

# 连续对话实现
messages = [
    {'role': 'user', 'content': '用Python写个斐波那契数列'},
    {'role': 'assistant', 'content': '需要递归还是迭代实现?'}
]

while True:
    response = chat(
      model='llama3:8b',
      messages=messages,
      stream=True
    )
   
    full_response = ""
    for chunk in response:
      print(chunk['message']['content'], end='', flush=True)
      full_response += chunk['message']['content']
   
    messages.append({'role': 'assistant', 'content': full_response})
    user_input = input("\n\n您:")
    messages.append({'role': 'user', 'content': user_input})



五、常见问题总结

[*]模型下载慢:在cmd执行 setx OLLAMA_MODELS ]https://ollama.cdn.kesh.ink 设置镜像源
[*]OpenWebUI 无法访问:检查Docker是否运行,浏览器访问 ]http://localhost:3000
[*]Python报错:先执行 pip install ollama 安装最新版库


更多问题欢迎在 FishC 论坛发帖交流:https://fishc.com.cn

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

player-none 发表于 2025-4-30 17:23:23

@liuhongrun2022
@不二如是
@琅琊王朝
@骆驼在西部
@追逐我的明天
@Mike_python小
@鱼小二

琅琊王朝 发表于 2025-4-30 23:01:40

https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=249682&pid=6651838


这些数据早就被 AI 学习过了,直接问 AI 即可。

不二如是 发表于 2025-5-1 10:16:22

{:10_256:}{:10_256:}{:10_256:}含金量满满

liuhongrun2022 发表于 2025-5-1 12:36:47

质量好高{:5_105:}
有时间去试试

player-none 发表于 2025-5-2 15:08:02

不二如是 发表于 2025-5-1 10:16
含金量满满

{:10_324:}这么好的帖子也能冷

不二如是 发表于 2025-5-2 15:59:53

player-none 发表于 2025-5-2 15:08
这么好的帖子也能冷

好帖不会沉!

快速收敛 发表于 2025-5-2 16:13:41

催更{:10_334:}

ydwb 发表于 2025-5-3 07:38:55

可以一试

d11111 发表于 2025-5-5 17:57:19

{:10_277:}

骆驼在西部 发表于 2025-5-5 22:13:06

player-none 发表于 2025-4-30 17:23
@liuhongrun2022
@不二如是
@琅琊王朝


很详细的教程,但是我还不知道这个大模型是做什么的?

player-none 发表于 2025-5-5 22:46:03

骆驼在西部 发表于 2025-5-5 22:13
很详细的教程,但是我还不知道这个大模型是做什么的?

它不需要网络,也不需要登录就能使用各种先进大模型

Tommy49 发表于 2025-5-5 23:19:10

Will try

yueyueyue1023W 发表于 2025-5-7 08:32:45

{:5_95:}

阳光开朗大难孩 发表于 2025-5-11 17:14:01

{:10_275:}

y981023WWW 发表于 2025-5-12 08:40:15

{:5_110:}

liujun_fishc 发表于 2025-5-14 08:35:52

{:5_108:}

好一大团 发表于 2025-5-15 08:14:22

收藏

jerry_126 发表于 2025-5-21 16:00:28

非常好,收藏起来
页: [1] 2
查看完整版本: (Windows)Ollama 本地部署 AI 大模型(附 OpenWebUI 部署和 Python 调用教程)