【deepseek-r1模型】linux部署deepseek

news/2025/2/23 4:32:59
aidu_pl">

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

以下是请求成功的示例

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


http://www.niftyadmin.cn/n/5862962.html

相关文章

Linux系统编程之无名管道

概述 在Linux系统中,无名管道是一种简单的进程间通信机制。它允许一个进程创建一对文件描述符,其中一个用于读取,另一个用于写入。当一个进程通过系统调用创建了一个无名管道后,便可以将这两个文件描述符传递给它的子进程&#xf…

长尾关键词增效逻辑:SEO搜索可见度与精准捕获

内容概要 随着搜索引擎算法智能化的深化,长尾关键词的战略价值已从辅助工具演变为SEO优化的核心支点。本文构建的增效逻辑框架揭示:在流量红利消退的竞争环境下,长尾词库的精准度与内容匹配效率直接决定搜索可见度的提升幅度,并最…

如何在 Ubuntu 上安装 Docker:详细步骤指南

文章目录 前言一、更新软件包列表二、安装 Docker三、启动并启用 Docker 服务四、验证 Docker 安装五、检查 Docker 服务状态六、将当前用户加入 Docker 组(可选)七、测试 Docker 是否正常运行八、安装 Podman-Docker(可选)九、总…

【CI/CD】CI/CD环境搭建流程和持续集成环境配置

文章目录 CI/CD环境搭建流程一、GitLab 安装与配置1. 环境准备2. 安装依赖3. 下载安装GitLab4. 修改配置5. 应用配置并启动6. 初始化设置 二、GitLab 项目管理1. 创建群组与项目2. 用户管理3. 上传代码 三、Jenkins 安装与配置1. 安装JDK172. 安装Jenkins3. 修改配置4. 启动服务…

Linux命令终极指南:从入门到精通掌握150+核心指令

一、文件与目录管理 1. 基础导航 pwd # 显示当前工作目录 (Print Working Directory) ls -lah # 列出所有文件包括隐藏文件,人性化大小显示# -l 长格式 -a 所有文件 -h 易读大小 cd ~ # 切换到用户家目录 (Change Directory) cd - # 返回上…

一周学会Flask3 Python Web开发-flask3模块化blueprint配置

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们在项目开发的时候,多多少少会划分几个或者几十个业务模块,如果把这些模块的视图方法都写在app.py…

C++ ——继承

体现的是代码复用的思想 1、子类继承父类,子类就拥有了父类的特性(成员方法和成员属性) 2、已存在的类被称为“基类”或者“父类”或者“超类”;新创建的类被称为“派生类”或者“子类” 注意: (1&#…

数据结构之【顺序表简介】

1.顺序表的概念 顺序表 是 用一段物理地址连续的存储单元 依次 存储数据元素的线性结构 一般情况下采用数组存储 2.顺序表的结构 既然顺序表可以用来存储数据元素, 那就少不了 增删查改 的操作 此时,单一地只创建数组满足不了上述操作 创建相应的结构…