利用ollama构建本地大模型服务
以本地windows PC机(配备英伟达rtx2060显卡)为例说明,
1、下载ollama安装包
ollama官网:https://ollama.com/
按需下载ollama安装包。
2、安装ollama
windows版为傻瓜式安装。
安装完验证:win+r-》cmd-》输入“ollama”,显示如下,安装成功。

3、部署模型
- 部署ollama模型仓库中的模型(需联网)
- 官网查看模型:https://ollama.com/search
- 找到想要的模型,执行:ollama run [模型名]。
如部署通义千问的“qwen3:1.7b”,执行命令:ollama run qwen3:1.7b,展示如下界面:


- 部署自定义模型
- 准备模型:在hugging face或其他模型仓库下载所需模型,或自行训练模型,或其他方式获取大模型,模型格式建议为 ollama 支持的 gguf 格式(体积小、运行快,适用于推理环境)。
- 创建 Modelfile 文件,添加如下内容:(具体参数参考:https://github.com/ollama/ollama/blob/main/docs/modelfile.md)
FROM /your_model_path/your-model-file.gguf # 替换为你的GGUF格式模型文件路径
# 以下来自deepseek,具体可选配置需查看ollama用户指南:https://github.com/ollama/ollama/blob/main/README.md#quickstart # 可选配置 # SYSTEM """你是一个专业助手。""" # 自定义系统提示 # PARAMETER temperature 0.7 # 调整参数 # PARAMETER num_ctx 4096 # 上下文长度
# 适配对话模板(根据模型要求,示例如下)
# TEMPLATE """[INST] {{ .System }} {{ .Prompt }} [/INST]"""
若自定义模型为Safetensors格式,Modelfile文件内容参考如下:
FROM /your_model_path/safetensors_model_dir # safetensors存储在/your_model_path/safetensors_model_dir 目录下。
# 若模型文件与 modelfile文件在同一路径下,则配置参数改为如下:
# FROM .
-
- 创建模型:在Modelfile文件同路径下,执行如下命令:
ollama create [自定义模型名称]
# 可以添加量化参数,在执行创建时将模型良化为4位或8位,如下
- 创建模型:在Modelfile文件同路径下,执行如下命令:
# ollama create --quantize q4_K_M mymodel # 具体参数参考https://github.com/ollama/ollama/blob/main/docs/import.md
-
- 运行模型:执行如下命令:
ollama run [自定义模型名称]
- 运行模型:执行如下命令:
4、启动服务
- 在命令行工具执行命令:
ollama serve # 监听 http://localhost:11434:cite[5]:cite[7]
# ollama run实际已经启动服务了,下面的 ollama serve主要用于无界面启动 ollama,启动后可以通过 ollama run model的方式切换使用的模型
服务启动后,可通过 http://localhost:11434 访问 API。
- 验证服务:执行以下命令
curl http://localhost:11434/api/tags # 列出本地模型:cite[2]:cite[7]
输出结果如下:

5、模型应用
- 界面问答:通过ollama.exe打开,实现对话框问答,如下:

- API调用:可调用多类别的api,如下,具体参见 https://github.com/ollama/ollama/blob/main/docs/api.md

调用示例如下:
a、python代码——单轮文本生成示例
# 单轮文本生成示例
1 import requests 2 3 url = "http://localhost:11434/api/generate" 4 data = { 5 "model": "deepseek-r1:1.5b", 6 "prompt": "解释量子纠缠", 7 "stream": False, 8 "temperature": 0.7 9 } 10 response = requests.post(url, json=data) 11 print(response.json()["response"])
1 # 多轮对话示例(带上下文)
2 messages = [ 3 {"role": "user", "content": "如何学习Python?"}, 4 {"role": "assistant", "content": "先掌握基础语法和数据结构。"}, 5 {"role": "user", "content": "推荐一本书?"} 6 ] 7 response = requests.post( 8 "http://localhost:11434/api/chat", 9 json={"model": "deepseek-r1:1.5b", "messages": messages} 10 ) 11 print(response.json()["message"]["content"]) # 输出助手回复:cite[2]:cite[4]
b、curl 命令
# 单轮文本生成示例
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt":"Why is the sky blue?"
}'
# 多轮对话示例
curl http://localhost:11434/api/chat -d '{
"model": "llama3.2",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'
========
zhcgis 版权所有,引用请注明出处!
========
浙公网安备 33010602011771号