概叙

科普文:AI时代的程序员【DeepSeek API 请求参数和API调用说明】-CSDN博客

前面演示了通过DeepSeek API分别访问deepseek和火山引擎提供的模型服务,均以失败告终,这里我们再来看看如何访问本地的模型服务。

环境要求

  1. 已安装 Ollama 服务并加载 DeepSeek 模型(如执行ollama run deepseek-r1:8b完成部署)
  2. 本地 Ollama 服务运行在默认端口 11434(可通过http://localhost:11434验证)

操作前的准备工作:安装ollama、deepseek-r1:8b、qwen:0.5b-chat,可参考下面链接,这里就不再赘述。

科普文:AI时代DeepSeek【ollama本地傻瓜式安装deepseek-r1】_630的显卡可以装deepseek嘛-CSDN博客

科普文:AI时代的程序员【Page Assist插件搭建本地DeepSeek服务】-CSDN博客

Java 中调用Ollama 服务的模型

Ollama 服务:确保模型服务已经开启

访问Ollama 服务地址

访问Ollama中的模型服务

协议/方法/请求体格式:http ,请求方法POST,application/json

Ollama的API URL: http://localhost:11434/v1/generate

请求体参数:

{
  "model": "deepseek-r1:8b",
  "prompt": "中国全称和简介",
  "max_tokens": 50,
  "temperature": 0.7,
  "top_p": 1,
  "stream": false
}

java实现 

    public String callOllamaApi(String query,String model) {
        // 设置请求头(根据需要添加)
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        // 构建请求体
        Map<String, Object> requestBody = new HashMap<>();
        requestBody.put("model",model);
        requestBody.put("prompt", query);
        requestBody.put("keep_alive", "10m");
        requestBody.put("stream", false);

        // 将请求体和请求头封装到HttpEntity中
        HttpEntity<Map<String, Object>> entity = new HttpEntity<>(requestBody, headers);

        // 发送POST请求,并接收响应
        ResponseEntity<String> response = restTemplate.postForEntity(
                ollamaApiUrl,
                entity,
                String.class
        );
        if (response.getStatusCode() == HttpStatus.OK) {

        }

        // 返回响应体
        return response.getBody();
    }

关键参数说明

参数 类型 必填 说明
model String

模型标识符,需与ollama run启动时指定的名称一致

C:\Users\Admin>ollama ps
NAME              ID              SIZE      PROCESSOR    UNTIL
deepseek-r1:8b    28f8fd6cdc67    6.5 GB    100% CPU     9 minutes from now
qwen:0.5b-chat    b5dc5e784f2a    1.5 GB    100% CPU     4 minutes from now

prompt String 输入的问题或指令文本
stream Boolean 是否启用流式传输(true 实时返回 /false 完整响应)
max_tokens Integer 限制生成文本的最大长度(默认无限制)
temperature Float 控制输出随机性(0.0-1.0,值越高创造性越强)

ollama的这两个地址的异同

在 Ollama 框架中,http://localhost:11434/v1/completionshttp://localhost:11434/api/generate两个接口地址具有以下核心差异与关联:

功能定位与协议兼容性

  1. OpenAI API 兼容接口
    /v1/completions是 Ollama 对 OpenAI API 规范的兼容实现,其参数格式、请求头定义(如Authorization字段)及响应结构均遵循 OpenAI 标准。该接口适用于需要与现有 OpenAI 生态工具(如 LangChain、OpenAI SDK)无缝集成的场景。

  2. Ollama 原生接口
    /api/generate为 Ollama 原生 API 端点,采用其自定义的请求参数和响应格式。此接口支持更细粒度的模型控制,例如流式传输(stream参数)、上下文管理(context字段)等专有特性。

技术参数对比

特性 /v1/completions /api/generate
请求方法 POST POST
Content-Type application/json application/json
必填参数 modelprompt modelprompt
流式响应支持 通过stream: true启用 默认支持流式,需设置stream: true
上下文管理 依赖messages数组传递历史对话 需显式传递context字段维护状态
超时控制 通过timeout参数(单位:秒) 无原生超时参数

典型应用场景

  • 迁移开发场景
    若项目原基于 OpenAI 接口开发,需迁移至本地模型,优先选择/v1/completions以减少代码改动量。

  • 高性能交互场景
    当需要低延迟流式输出或深度定制模型参数时,建议使用原生接口/api/generate,其响应速度优化更适配本地部署环境。

请求示例对比

// OpenAI兼容接口请求
{
  "model": "deepseek-s1",
  "prompt": "中国的全称和简介",
  "max_tokens": 512,
  "temperature": 0.7
}

// Ollama原生接口请求
{
  "model": "deepseek-s1",
  "prompt": "中国的全称和简介",
  "stream": false,
  "options": {
    "num_ctx": 4096,
    "seed": 42
  }
}

实际开发中,接口选择需综合项目架构兼容性、功能需求及性能要求进行权衡。若需同时兼容云服务与本地模型,建议采用抽象层封装两类接口的差异化逻辑。

访问效果

跑起来真的慢,真的耗资源,建议配置的restTemplate超时时间设置长一些。

deepseek-r1:8b

 访问成功,不过真的很慢,都快300秒(5分钟):GET: application/json;charset=UTF-8:  status: 200:  costTime: 294585ms;所以本地还是尽量选择小一点的参数模型。

返回结果:{"model":"deepseek-r1:8b","created_at":"2025-02-23T01:37:19.9524682Z","response":"\u003cthink\u003e\n好,我需要详细地介绍一下关于“中国”这个词的全称、简介以及相关的历史背景。首先,中国的全称应该是中华人民共和国,这是我了解到的最常用的正式名称。然后,简介部分要涵盖它的位置、人口、面积,还有发展成就,比如经济和科技方面。\n\n接下来,时间轨迹部分需要从古代到现在梳理一下历史大致脉络,提到几个重要的朝代如秦、汉、唐宋等,以及近现代的革命和改革开放。地理位置方面,要包括中国的具体坐标,大致描述其周围的地形,比如山川河流。\n\n最后,在语言表达上,我要保持口语化,用自然的方式连接这些信息,让读者容易理解。不过,注意不要使用任何Markdown格式,只用纯文本回答。内容需要全面,但也要简洁明了,不涉及过于深入的专业知识。\n\u003c/think\u003e\n\n**中国的全称和简介**\n\n**全称:** 中华人民共和国  \n**简介:** 中国位于东亚大陆,是世界上人口最多、面积第二大的国家。拥有超过14亿的人口,国土面积广阔,自然资源丰富。在经济、科技、文化等方面都取得了显著的发展。\n\n**时间轨迹:**  \n中国有着悠久的历史和文化,古代文明如黄河流域的原始社会、商周青铜文化、中世纪的秦汉唐宋等都对世界文明产生了深远影响。近现代中国经历了多次重大变革,尤其是在20世纪中叶的新民主主义革命后,建立中华人民共和国,开启了社会主义建设的新纪元。改革开放以来,中国经济快速发展,成为世界第二大经济体,并在国际舞台上扮演重要角色。\n\n**地理位置:**  \n中国位于东亚,与北朝鲜、韩国、日本等国家接壤,西部与蒙古和俄罗斯接壤,南部有印度洋和太平洋沿岸。首都北京是政治、文化中心,上海、广州、深圳等城市是重要的经济中心。\n\n中国不仅在国际社会中扮演着重要角色,而且在全球治理和发展中发挥着越来越重要的作用。","done":true,"done_reason":"stop","context":[128011,59795,9554,37087,25666,34208,99337,75910,128012,128013,198,53901,101602,86206,67933,105986,30590,117814,111230,111912,2118,59795,863,103624,106015,9554,37087,25666,5486,99337,75910,109717,79656,9554,113691,124858,1811,61075,61826,3922,59795,9554,37087,25666,107585,21043,119635,118514,103138,120651,114706,123703,32335,40053,116958,117727,31091,1811,109530,3922,99337,75910,105494,31634,96311,113,113333,103282,9554,82912,5486,113073,5486,122858,110235,19361,106246,13153,81258,126900,30624,109144,34208,107015,108900,3490,30177,113931,3922,21082,15568,101,120671,105494,86206,46281,102491,31640,28037,105456,101862,111,22649,111230,113691,27384,105260,101171,231,69165,3922,29172,28037,123092,107693,9554,103293,31640,30624,120006,5486,108850,5486,112609,74138,50667,120920,60358,120589,9554,125981,34208,119254,124648,1811,30590,22649,82912,108900,114985,108399,59795,9554,118789,107810,31944,112886,105260,54581,42246,41642,105885,126315,83799,126900,30624,58911,101701,103232,89753,3490,112271,97150,120074,21405,94588,17905,101602,31634,118551,40526,73981,33208,119977,109683,9554,76868,65164,108787,28469,114165,58653,30046,119237,113954,125241,3922,61633,113473,38129,109545,69105,69905,107191,11883,118465,17161,22656,113925,1811,44915,86206,123201,102378,75863,31634,99337,121730,31958,35287,102836,117947,82317,39282,35304,102987,17701,9554,107371,116658,9174,128014,271,334,59795,9554,37087,25666,34208,99337,75910,57277,334,37087,25666,5232,334,73958,86461,118514,2355,334,99337,75910,5232,334,107637,121245,68464,101630,27384,98245,105187,102616,17905,113073,32335,43240,5486,122858,106135,108199,106444,1811,123882,121150,975,54456,104123,40526,3922,29504,74090,122858,82042,33443,242,3922,109683,86429,113928,105469,107644,109144,5486,107015,5486,106581,50667,108900,72368,115181,35287,105593,102700,9554,106246,3490,334,21082,15568,101,120671,5232,334,2355,59795,19361,100815,116511,101704,9554,113691,34208,106581,3922,102491,31640,17161,31958,30624,105310,103232,89753,103438,9554,124586,106222,5486,33122,41642,103271,44659,250,106581,121270,101083,108142,9554,120006,108850,112609,74138,50667,72368,33764,102616,17161,31958,116498,35287,102987,106297,109829,1811,60358,120589,59795,54493,82302,35287,43240,33671,125478,75140,107804,3922,120308,42246,112213,508,101083,108142,16325,109339,9554,17039,121302,115657,125981,34547,3922,114690,119635,118514,3922,30867,69496,35287,106222,115657,108053,9554,17039,108142,24186,1811,119254,124648,123434,3922,59795,109144,119702,106246,3922,112743,102616,106135,27384,109144,33014,91495,19000,107604,107875,55038,17905,15355,106,102446,107693,125499,3490,334,30590,22649,82912,5232,334,2355,59795,121245,68464,101630,126240,49409,103293,118882,5486,109863,29504,123085,50667,106444,30177,45826,97,3922,61786,34048,58318,110919,102491,34208,113231,127037,30177,45826,97,3922,59563,34048,19361,104371,27479,106390,34208,101402,50211,106390,117989,111418,1811,61075,72368,70090,21043,110886,5486,106581,104356,3922,110666,5486,82042,55139,5486,119365,50667,109572,21043,107693,9554,109144,104356,3490,59795,16937,110395,19000,107604,106222,16325,15355,106,102446,100815,107693,125499,116496,19000,117805,71005,22649,34208,106246,16325,29391,115683,100815,104087,37507,104087,107693,9554,113266,1811],"total_duration":293261184600,"load_duration":10525717700,"prompt_eval_count":10,"prompt_eval_duration":3726000000,"eval_count":520,"eval_duration":279005000000}
返回status:200

qwen:0.5b-chat

访问成功,千问的小模型,5秒就能给出结果:GET: application/json;charset=UTF-8:  status: 200:  costTime: 5190ms

 

返回结果:{"model":"qwen:0.5b-chat","created_at":"2025-02-23T01:41:00.9368795Z","response":"中国全称:中华人民共和国。\n简介:中华人民共和国(简称“中国”)是世界上人口最多的国家,也是世界上面积最大的发展中国家。","done":true,"done_reason":"stop","context":[151644,872,198,105538,35987,24641,33108,102335,151645,198,151644,77091,198,58695,35987,24641,5122,105492,104773,1773,198,102335,5122,105492,104773,9909,102500,2073,58695,854,7552,20412,102506,102055,106654,99599,3837,100000,102506,100210,104003,99185,58695,45629,1773],"total_duration":4244444400,"load_duration":2124928400,"prompt_eval_count":13,"prompt_eval_duration":306000000,"eval_count":32,"eval_duration":1811000000}
返回status:200

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐