当前位置: 首页 > news >正文

【deepseek-r1模型】linux部署deepseek

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. 参数说明

参数名

类型

说明

prompt

string

生成文本的提示。

messages

array

对话模式中的消息列表,每条消息包含 role

(user/assistant)和 content

max_tokens

integer

生成的最大 token 数量。

temperature

float

控制生成文本的随机性,值越高越随机。

top_p

float

控制生成文本的多样性,值越高越多样。

stop

array

生成停止的标记列表。


4. 错误响应

如果请求失败,Ollama 会返回以下格式的错误信息:

{
  "error": "错误描述",
  "code": 400 // 错误码
}

常见错误码:

  • 400: 请求参数错误。
  • 404: 接口不存在。
  • 500: 服务器内部错误。

5. 注意事项

  • 确保 Ollama 服务已正确启动,并且模型 deepseek-r1:7b 已加载。
  • 如果服务监听在 127.0.0.1,外部无法访问,请修改为 0.0.0.0
  • 如果需要更高的性能,可以调整模型的参数(如 max_tokenstemperature)。

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();
        }
    }

以下是请求成功的示例

如果对你有帮助请帮忙点个👍

相关文章:

  • 【Elasticsearch】搜索时分片路由
  • ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek
  • Chatgpt论文润色指令整理
  • LeetCode 0624.数组列表中的最大距离:只关心最小最大值
  • el-table 结合 slot 具名插槽遍历封装列表模板
  • jenkins自动发版vue前端笔记
  • JSON格式,C语言自己实现,以及直接调用库函数(一)
  • HTTP、HTTPS区别可靠性及POST为什么比GET安全的探讨
  • 结构风荷载理论与Matlab计算
  • Linux后台启动命令nohup并且MobaXterm后台启动断网也不关闭软件
  • 《探秘DeepSeek优化器:解锁模型训练的高效密码》
  • nodejs及搭建
  • 零基础用AI—AI伦理风险防控的十大核心策略与全球协同治理实践
  • 文章学习---经颅聚焦超声刺激(TUS)对灵长类动物大脑皮层激活的影响
  • SOME/IP--协议英文原文讲解6
  • Centos7 使用 yum 报错 Could not retrieve mirrorlist
  • Nmap:网络扫描与安全评估的多功能工具
  • leetcode4:寻找两个正序数组的中位数
  • 双非一本电子信息专业自学嵌入式,学完 Linux 后咋走?单片机 FreeRTOS 要补吗?
  • Elasticsearch7.6.2 安装过程
  • 科普|“小石头,大麻烦”,出现输尿管结石如何应对?
  • 金科股份:因信披违规,公司及董事长、总裁、财务负责人等收到行政监管措施决定书
  • 阿根廷发生5.8级地震
  • 体重管理门诊来了,瘦不下来的我们有救了?|健康有方FM
  • 当老年人加入“行为艺术基础班”
  • 浙商银行外部监事高强无法履职:已被查,曾任建行浙江省分行行长