1、快速安装
Ollama 下载:Download Ollama on macOS
Ollama 官方主页:https://ollama.com
Ollama 官方 GitHub 源代码仓库:https://github.com/ollama/ollama/
官网提供了一条命令行快速安装的方法。
(1)下载Ollama
curl -fsSL https://ollama.com/install.sh | sh
此命令将自动下载最新版本的 Ollama 并完成安装,以下是 Ollama 使用常见的指令:
ollama serve #启动ollama
ollama create #从模型文件创建模型
ollama show #显示模型信息
ollama run #运行模型
ollama pull #从注册表中拉取模型
ollama push #将模型推送到注册表
ollama list #列出模型
ollama cp #复制模型
ollama rm #删除模型
ollama help #获取有关任何命令的帮助信息
- 验证安装完成,在
Exec
处输入:
ollama -h
输出如下:即表示安装成功🎉
(2)开启并使用 Ollama
1).在Service中增加下面两行
vi /etc/systemd/system/ollama.service
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
2).首先,在终端中开启 Ollama,并在后台挂起(这里有可能有问题,启动的时候是127.0.0.1监听的)
ollama serve
(3)下载大模型
然后下载大模型选择Models 选择一个模型 我这里选择的是deepseek-r1
执行命令以下是成功的结果
(4)以下是常用的指令
1.运行指定大模型指令
ollama run deepseek-r1:7b
2.停止ollama服务
systemctl stop ollama
3.指令启动方式(这个是解决ollama serve启动时ip监听错误的指令)
OLLAMA_HOST=0.0.0.0:11434 /usr/local/bin/ollama serve
这是错误的监听界面
这是正确的监听界面
2. Ollama接口概览
Ollama 提供了以下主要接口:
(1) 生成文本
- URL:
POST /api/generate
- 功能: 向模型发送提示(prompt),生成文本。
请求体:
{
"prompt": "你的提示文本",
"max_tokens": 50, // 可选,生成的最大 token 数量
"temperature": 0.7, // 可选,控制生成文本的随机性
"top_p": 0.9, // 可选,控制生成文本的多样性
"stop": ["\n", "。"] // 可选,生成停止的标记
}
响应体:
{
"response": "模型生成的文本",
"tokens_used": 50 // 使用的 token 数量
}
(2) 对话模式
- URL:
POST /api/chat
- 功能: 与模型进行多轮对话。
请求体:
{
"messages": [
{"role": "user", "content": "你好!"},
{"role": "assistant", "content": "你好,有什么可以帮助你的?"}
],
"max_tokens": 100, // 可选,生成的最大 token 数量
"temperature": 0.7 // 可选,控制生成文本的随机性
}
响应体:
{
"response": "模型生成的回复",
"tokens_used": 100 // 使用的 token 数量
}
(3) 获取模型信息
- URL:
GET /api/model
- 功能: 获取当前加载的模型信息。
响应体:
{
"model_name": "deepseek-r1:7b",
"model_size": "7B",
}
(4) 重新加载模型
- URL:
POST /api/reload
- 功能: 重新加载模型。
请求体:
{
"model": "deepseek-r1:7b" // 可选,指定重新加载的模型
}
响应体:
{
"status": "success",
"message": "Model reloaded successfully"
}
(5) 停止服务
- URL:
POST /api/stop
- 功能: 停止 Ollama 服务。
响应体:
{
"status": "success",
"message": "Service stopped successfully"
}
3. 参数说明
参数名 | 类型 | 说明 |
| string | 生成文本的提示。 |
| array | 对话模式中的消息列表,每条消息包含 (user/assistant)和 。 |
| integer | 生成的最大 token 数量。 |
| float | 控制生成文本的随机性,值越高越随机。 |
| float | 控制生成文本的多样性,值越高越多样。 |
| array | 生成停止的标记列表。 |
4. 错误响应
如果请求失败,Ollama 会返回以下格式的错误信息:
{
"error": "错误描述",
"code": 400 // 错误码
}
常见错误码:
400
: 请求参数错误。404
: 接口不存在。500
: 服务器内部错误。
5. 注意事项
- 确保 Ollama 服务已正确启动,并且模型
deepseek-r1:7b
已加载。 - 如果服务监听在
127.0.0.1
,外部无法访问,请修改为0.0.0.0
。 - 如果需要更高的性能,可以调整模型的参数(如
max_tokens
和temperature
)。
6. Java调用demo
public static void main(String[] args) {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpPost post = new HttpPost("http://你的ip:11434/api/generate");
// 注意Ollama的API参数格式
String json = "{"
+ "\"model\": \"deepseek-r1:7b\","
+ "\"prompt\": \"Hello World!\","
// + "\"temperature\": 0.7," // 新增温度参数
// + "\"top_p\": 0.9," // 新增top_p参数
+ "\"stream\": false," // 是否启用流式 true时会逐个返回结果,而不是一次性返回全部结果
+ "\"max_tokens\": 50"
+ "}";
post.setEntity(new StringEntity(json));
post.setHeader("Content-Type", "application/json");
HttpResponse response = httpClient.execute(post);
String result = EntityUtils.toString(response.getEntity());
System.out.println("API Response:\n" + result);
// 解析 JSON
JSONObject jsonObject = JSON.parseObject(result);
// 提取 "response" 字段的值
String responseStr = jsonObject.getString("response");
// 去除 HTML 标签(如果需要)
String cleanedResponse = responseStr.replaceAll("\\u003c/?.*?\\u003e", "").trim();
// 打印结果
System.out.println(String.format("提取的回答内容:%s", cleanedResponse));
} catch (Exception e) {
e.printStackTrace();
}
}
以下是请求成功的示例
如果对你有帮助请帮忙点个👍