找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3378

积分

0

好友

466

主题
发表于 13 小时前 | 查看: 2| 回复: 0

如何在本地快速调试自己的AI应用?Ollama 这类工具提供了便捷的本地大模型运行环境,而其内置的 REST API 则是实现应用集成的关键。当你启动 Ollama 后,它会自动运行一个侦听端口 11434 的 REST API 服务,让你能够通过 HTTP 请求与模型进行交互,无论是查询、管理配置还是集成到其他应用程序中都十分方便。这对于构建需要统一访问 AI 能力的多语言应用栈尤其有用。想了解更多此类实践,可以到云栈社区的开发者板块交流讨论。

1. 使用 API 生成文本

要调用大模型生成文本,可以直接使用 curl 命令与 Ollama 的 API 端点通信:

$ curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Tell me a joke"
}'

以上命令指定使用 llama3.2 模型,并要求它讲一个笑话。注意,默认情况下响应是流式输出的,即模型会逐词生成结果。这种方式能降低延迟,为需要实时交互的应用提供更快的反馈,在处理长文本或优化低延迟场景时特别有用。

2. 禁用流式输出

虽然流式输出对实时交互有利,但有时我们更希望一次性获得完整响应。可以通过将 stream 参数设为 false 来关闭流式输出:

$ curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Tell me a joke", 
  "stream": false 
}'

3. 在 Python 中使用 Ollama API

借助 Python 的 requests 库,可以轻松地通过 HTTP 请求与 REST API 交互。下面的例子演示了如何发送 POST 请求让模型生成一个笑话:

import requests

url = "http://localhost:11434/api/generate"
model = "llama3.2" 

headers = {
    "Content-Type": "application/json",
}

data = {
    "model": model,
    "prompt": "Tell me a joke",
    "stream": False
}

response = requests.post(url, 
                         json = data,
                         headers = headers
                         )
print(response.json())

我们可以进一步从 API 响应中提取出我们需要的文本内容:

print(response.json()["response"])

4. 获取已安装模型列表

如果想查看当前服务器上已下载的模型列表,可以调用 /api/tags 端点:

import requests

url = "http://localhost:11434/api/tags"

response = requests.get(url)
print(response.json())

返回结果示例:

{
'models': [
{
'name': 'llama3.2:latest',
'model': 'llama3.2:latest',
'modified_at': '2025-06-20T09:19:47.514667577+08:00',
'size': 2019393189,
'digest': 'a80c4f17acd55265feec403c7aef86be0c25983ab279d83f3bcd3abbcb5b8b72',
'details': {
'parent_model': '',
'format': 'gguf',
'family': 'llama',
'families': ['llama'],
'parameter_size': '3.2B',
'quantization_level': 'Q4_K_M'
}
}
]
}

5. 获取特定模型的详细信息

要查看某个模型的详细配置信息,可以使用 /api/show 端点并在请求体中指定模型名称:

import requests

url = "http://localhost:11434/api/show"
headers = {
    "Content-Type": "application/json",
}
data = {
    "model": "llama3.2",
    "stream": False
}

response = requests.post(url, 
                         json = data,
                         headers = headers
                         )
print(response.json())

6. 生成文本嵌入向量

我们可以使用 /api/embed 端点来为输入的文本字符串生成嵌入向量:

import requests

url = "http://localhost:11434/api/embed"

headers = {
    "Content-Type": "application/json"   
}

data = {
    "model": "llama3.2",
    "input": "Generate embeddings for this text."
}

response = requests.post(url, json=data, headers=headers)
print(response.json())

向量嵌入技术能让模型根据上下文捕捉词语间的语义关系,是许多自然语言处理任务(如相似性检测、聚类等)的基础。

7. 控制模型在内存中的驻留时间

默认情况下,Ollama 会在模型最后一次被使用后,将其在内存中保留 5 分钟。这平衡了频繁调用的响应速度与内存释放的需求。

如果希望立即从内存中卸载某个模型,可以使用 stop 命令:

$ ollama stop llama3.2

执行后,该模型将从内存中卸载。但后续若再次调用,它又会被重新加载。

如果希望模型永久驻留内存(不主动卸载),可以在调用时设置 keep_alive 参数为 -1(或任意负值):

$ curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Why is the sky blue?", 
  "keep_alive": -1
}'

如何验证呢?使用 ollama ps 命令:

$ ollama ps
NAME               ID              SIZE      PROCESSOR    UNTIL   
llama3.2:latest    a80c4f17acd5    4.0 GB    100% GPU     Forever

输出显示 llama3.2 模型已完全加载至 GPU 内存,并将一直保留。

若希望请求结束后立即卸载模型,则将 keep_alive 设为 0
如果希望模型在内存中保留指定时长,可以将 keep_alive 设为一个时间字符串,如 "24h"(24小时)或 "15m"(15分钟):

$ curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Why is the sky blue?", 
  "keep_alive": "15m"
}'

此命令将使 llama3.2 模型在内存中驻留 15 分钟。

8. 更改模型存储目录

大模型体积庞大,动辄数GB甚至更大,默认存储在 ~/.ollama 目录可能会迅速占满主磁盘空间,尤其是在存储空间有限的设备上。

一个有效的解决方案是将所有模型转移到外部存储器,如外接 SSD 或硬盘。对于 Ollama,可以通过设置 OLLAMA_MODELS 环境变量来指定新的存储路径。以下命令将路径指向一个外接 SSD:

$ export OLLAMA_MODELS="/Volumes/MySSD/ollama"

设置环境变量后,需要退出并重启 Ollama,然后运行一个模型以使设置生效:

$ ollama run llama3.2
pulling manifest 
pulling dde5aa3fc5ff... 100% ▕████████████████▏ 2.0 GB                         
pulling 966de95ca8a6... 100% ▕████████████████▏ 1.4 KB                         
pulling fcc5a6bec9da... 100% ▕████████████████▏ 7.7 KB                         
pulling a70ff7e570d9... 100% ▕████████████████▏ 6.0 KB                         
pulling 56bb8bd477a5... 100% ▕████████████████▏   96 B                         
pulling 34bb5ab01051... 100% ▕████████████████▏  561 B                         
verifying sha256 digest 
writing manifest 
success

如果 llama3.2 模型不在新目录中,它将被下载并保存到指定位置。

请注意,在终端中直接 export 是临时生效的,系统重启后会失效。要永久设置,需要将 export 语句添加到 shell 配置文件中(如 .zshrc.bash_profile),保存后执行 source ~/.zshrc 重新加载配置即可。

9. 更改 API 服务端口号

如果需要更改 Ollama REST API 的监听端口(默认为 11434),可以通过 OLLAMA_HOST 环境变量来配置:

$ export OLLAMA_HOST=127.0.0.1:8081

上面的命令将端口改为 8081。在终端中设置后,重启 Ollama 服务:

$ ollama serve

同样,若需永久生效,请将 export 语句添加到 shell 配置文件并重新加载。这有助于适应特定环境或避免端口冲突。

10. 在 Ollama 中使用 MCP

Model Context Protocol (MCP) 为AI应用连接工具和数据提供了标准化方式。配置 MCP 服务时,需要一个 JSON 文件来定义各个服务器。保存文件时需注意编码格式应为 UTF-8,以防乱码。下面是一个配置示例:

{
"globalShortcut": "Ctrl+Space",
"mcpServers": {
"sqlite": {
"command": "C:\\Users\\datas\\anaconda3\\Scripts\\uvx.exe",
"args": ["mcp-server-sqlite", "--db-path", "C:\\Users\\datas\\AI_Docs.db"]
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"C:\\Users\\datas\\OneDrive\\Desktop\\ollama-mcp"
]
}
}
}

安装好所需的 MCP server 后,可以使用以下命令启动服务(以Windows系统为例),并提供上面创建的配置文件路径:

mcphost -m ollama:qwen2.5 --config "C:\Users\datas\OneDrive\Desktop\local.json"

启动后,Ollama 就可以作为主机或客户端来使用配置好的 MCP 服务了。

小结

本文介绍了 Ollama 的几项实用配置技巧,包括如何通过环境变量将模型存储目录转移到外部存储以节省空间,以及如何使用 curlPythonrequests 库与 REST API 进行交互。我们还探讨了如何通过 keep_alive 参数精细控制模型在内存中的驻留时长,以及如何修改 API 服务的监听端口。最后,简要介绍了如何配置和使用 MCP 服务来扩展 Ollama 的能力。掌握这些技巧,能让你在本地 AI 应用开发和调试中更加得心应手。




上一篇:马斯克轨道AI数据中心计划:算力上天是商业博弈还是技术必然?
下一篇:性能工程专家Brendan Gregg加入OpenAI,专注AI数据中心性能优化与成本挑战
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-9 20:30 , Processed in 0.428093 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表