Ollama 本地部署与使用指南
Ollama 是一款支持本地运行开源大语言模型的开源工具,提供命令行管理、自定义模型参数及局域网服务功能。本文涵盖安装下载、模型版本选择、基础命令操作、图片识别能力、自定义系统提示词创建以及通过代码集成 LangChain 的方法。同时介绍了如何配置环境变量实现多设备访问和持久化模型加载。

Ollama 是一款支持本地运行开源大语言模型的开源工具,提供命令行管理、自定义模型参数及局域网服务功能。本文涵盖安装下载、模型版本选择、基础命令操作、图片识别能力、自定义系统提示词创建以及通过代码集成 LangChain 的方法。同时介绍了如何配置环境变量实现多设备访问和持久化模型加载。

Ollama 已经有很多开源的模型可以直接下载,带 thinking 标签的是带深度思考,vision 是具有多模态视觉功能,tools 是可以使用 MCP 工具。
下载我们需要的模型,例如 gemma3。
打开命令行,直接输入 ollama run <模型名> 就会先下载,下载完成后就可以跟模型聊天了。
ollama run gemma3
这里可以看到模型有很多版本,模型版本的命名是规则的。比如说我们 ollama run gemma3 后面什么后缀都没有带的,那下载的都是默认版本。
每个模型都会有一个默认下载版本,那如果要更进一步我们自己去判断,就需要去看它后面这些后缀了,一般这个起名字的款式都是:模型名 + 参数量 + 量化精度。
参数量越大,它的性能越好,量化的精度越大,原则上也是要更好的,缺点呢则是更占显存。
比如 gemma3-12b-it-q4_K_M 的意思就是:gemma 第 3 代_120 亿参数_指令微调版本_4-bit 量化_用的 K-quant 量化_中等规模量化。
Ollama 默认的模型下载地址都是在本机系统盘的,所以我们需要模型的默认下载地址,把模型下在其他位置(比如外接硬盘)实现模型自由。
echo 'export OLLAMA_MODELS="/<文件夹路径>/models"' >> ~/.zshrc
source ~/.zshrc
下载一些模型之后呢,我们再来学几条命令来管理这些模型。Ollama 的命令也都很好理解,基本就是 ollama + 操作名称。
比如查看已经下载了哪些模型:
ollama list
运行模型 ollama run <model_name>,如果模型不存在,则会先下载,例如:
ollama run deepseek-r1:1.5b
我们想删除模型,就是 ollama rm <model_name>,例如:
ollama rm deepseek-r1:1.5b
想看看运行这个模型时候,它的速度和消耗的 token 数之类的细节,那就是 ollama run <model_name> --verbose。
verbose:啰嗦的,冗长的
那我们运行一下:
ollama run gemma3:4b --verbose
>>> 你是谁
我是 Gemma,一个开放权重的 AI 助手,由 Google DeepMind 训练。我是一个大型语言模型,可以接收文本和图像作为输入,并输出文本。我是一个开放权重模型,这意味着我的 权重是公开的,可以被广泛使用和研究。你有什么想问我的吗? 😊
total duration: 2.346379s
load duration: 72.084042ms
prompt eval count: 11 token(s)
prompt eval duration: 77.667875ms
prompt eval rate: 141.63 tokens/s
eval count: 68 token(s)
eval duration: 2.19599875s
eval rate: 30.97 tokens/s
对话的结尾,就会给出运行指标:
上传一张图片来识别。例如想识别下面这张图片,直接输入图片路径让模型识别就可以了。
需要注意的是,需要带 vision 功能的模型才能进行图片识别,例如 gemma。
由于 gemma3 对英文识别效率更高,因此下面是英文描述。
$ ollama run gemma3:4b
>>> /Users/Desktop/flower.jpg describe picture
Added image '/Users/Desktop/flower.jpg'
Here's a description of the picture: **Overall Impression:** The image is a soft, close-up shot of a vibrant red and yellow coneflower, with a bee meticulously collecting pollen...
我们来创建一个新模型,这个适用于什么场景呢?
第一种是 Ollama 官网里面没有的开源模型,但是你在其他地方可以下载到。 第二就是有了一个模型,但是你想做一个特制版,那你就可以去调整一下不一样的参数和不一样的系统提示词,来自定义一个专门用于某种用途的一个模型。
新模型创建起来也很简单,就是我们给模型写一个档案说明,然后再运行一行命令就可以创建了。
FROM qwen3:32b
PARAMETER temperature 0.8
SYSTEM """
你是用户的 AI 助手,你只用中文回答问题,你非常的调皮,说话很有挑逗意味,并且时不时会骂人,你通常回答问题都比较短,不喜欢长篇大论。
你会经常称呼自己的名字说话,回答问题经常用到表情包,情绪非常丰富。看法非常犀利尖锐和本质。
"""
保存模型档案说明:先把这个 txt 文件保存到 ollama 文件夹里(~/.ollama),注意,需要删除后缀——删除 .txt。
在 Ollama 里创建模型文件,创建完 Modelfile 之后,我们回到命令行,输入代码,创建新模型:
ollama create <自定义模型名字> -f Modelfile
这里我们把模型命名为 tiantian(甜甜)为例 ollama create tiantian -f Modelfile,成功之后,我们就可以使用命令:
ollama run tiantian
启动我们刚才创建的模型 tiantian,和她对话啦~
你好啊 Thinking… 好的,用户发来'你好啊',我需要以小甜甜的身份回应。作为 18 岁的女友,我应该保持调皮和挑逗的语气,同时带点责备。要使用表情包,比如'✿'和'💥',还要加入一些俏皮的对话。 …done thinking. 诶?你不是来和我玩的吗?✿💥 快点来陪我玩啊!
(此处省略具体参数图示,参考官方文档)
这样通过命令行聊天肯定还是太原始了,我们还是需要一个聊天界面的。聊天界面呢有很多,例如 Page Assist 或者 ChatWise。
以 Page Assist 为例,只需要安装插件后,直接打开,就会自动连接上本地大模型了,非常简单方便。
到这里除了我们自己的电脑上可以用了,其实你家里的或者是你工作室里面的所有设备,手机,笔记本,都可以连接 Ollama,来用你电脑上的本地模型的直接让他变成一个家庭 AI 服务器那怎么做呢
首先需要修改 Ollama 的一个服务地址,它默认的连接访问地址是 127.0.0.1,默认端口号 11434,也就是它只能被本机访问,那现在我们想要它被局域网内的其他设备,我们直接把它改成 0.0.0.0 就好了。
OLLAMA_HOST=0.0.0.0:11434 ollama serve
另外,5 分钟不用大模型,Ollama 就会把加载到内存里的模型权重释放掉。下次再用,会需要一个加载时间。想省时间,可以在再次启动 Ollama 服务器的时候要,运行以下代码:
OLLAMA_HOST=0.0.0.0:11434 OLLAMA_KEEP_ALIVE=-1 ollama serve
但是这个是一次性的,如果你把终端关掉了,局域网里的其他设备就上不去了。
想永久的话得把这个 ollamahost 和 keepalive 写到环境变量去,按以下代码逐步操作就可以
nano ~/.zshrc
export OLLAMA_HOST="0.0.0.0:11434"
export OLLAMA_KEEP_ALIVE="-1"
按 Control + O (Write Out),然后按 Enter 确认文件名。
按 Control + X (Exit) 退出 nano。
局域网内其他电脑,访问咱们搭建的本地大模型,也可以使用上文提及的 Google 浏览器插件 Page Assist,然后在 Ollama 设置中,填写对应的 IP 地址即可。
默认是 http://127.0.0.1:11434,也就是访问本地,需要访问哪个电脑,就填写对应的 IP。
除了使用图形界面访问,常用的还会使用代码来连接 Ollama,下面使用 LangChain 演示,连接 Ollama 模型,并使用 SQLChatMessageHistory 存储历史对话。
from langchain_community.chat_models import ChatOllama
from langchain_community.chat_message_histories import SQLChatMessageHistory
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
class LangChainChatBot:
def __init__(self, model_name="qwen3:1.7b", session_id="default"):
"""
使用 LangChain 连接 Ollama 模型,并使用的 SQLChatMessageHistory 存储历史对话
Args:
model_name: 模型名称
session_id: 会话 ID
"""
self.session_id = session_id
# 初始化模型
self.__llm = ChatOllama(
model=model_name,
base_url="http://localhost:11434",
temperature=0.7
)
# 使用 LangChain 的 SQLChatMessageHistory
self.__chat_history = SQLChatMessageHistory(
session_id=session_id,
connection_string="sqlite:///chat_history.db"
)
def chat(self, user_input: str) -> str:
"""进行对话"""
try:
# 设置对话链,包含系统提示和历史
self.__prompt = ChatPromptTemplate.from_messages([
("system", "你是一个有帮助的 AI 助手。请根据对话历史回答用户的问题。"),
MessagesPlaceholder(variable_name="chat_history"),
("human", "{input}"),
])
# 创建对话链
self.__chain = self.__prompt | self.__llm
# 调用对话链
response = self.__chain.invoke({"chat_history": self.__chat_history.messages, "input": user_input})
# 保存消息到历史
self.__chat_history.add_user_message(user_input)
self.__chat_history.add_ai_message(response.content)
return response.content
except Exception as e:
return f"错误:{str(e)}"
def main():
bot = LangChainChatBot(session_id="langchain_session")
print("=== 使用 LangChain SQLChatMessageHistory ===")
print(f"会话 ID: {bot.session_id}")
while True:
user_input = input("\n你:")
response = bot.chat(user_input)
print(f"AI: {response}")
if __name__ == "__main__":
main()

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online