利用ollama构建本地大模型服务

以本地windows PC机(配备英伟达rtx2060显卡)为例说明,

1、下载ollama安装包

ollama官网:https://ollama.com/

按需下载ollama安装包。

2、安装ollama

windows版为傻瓜式安装。

安装完验证:win+r-》cmd-》输入“ollama”,显示如下,安装成功。

image

 

3、部署模型

  • 部署ollama模型仓库中的模型(需联网

如部署通义千问的“qwen3:1.7b”,执行命令:ollama run qwen3:1.7b,展示如下界面:

image

image

  • 部署自定义模型
    • 准备模型:在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位,如下
# 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]

输出结果如下:

image

5、模型应用

  • 界面问答:通过ollama.exe打开,实现对话框问答,如下:

image

 

image

 调用示例如下:

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?" }
  ]
}'
 

posted on 2025-08-17 19:09  zhcgis  阅读(557)  评论(0)    收藏  举报

导航