Home
avatar

小五

Mac中如何用Java和Python代码调用DeepSeek R1

上篇文章中,介绍了如何通过Ollama和LM Studio本地搭建DeepSeek模型,本篇将,利用这2款工具,提供的API。来实现Java和Python 的调用。

LM Studio开启OpenAI API兼容模式,提供API服务

打开LM Studio,下载好DeepSeek R1的蒸馏模型。

在左边第二个开发者中,加载模型,并开启API模式。

开启成功会提示API地址。收工。可以调用了。

Ollama开启OpenAI API兼容格式。(二选一即可,不用都开。)

如果不想使用蒸馏的模型,可以用Ollama来开启, 1、上篇文章有讲,先下载模型。

2、命令行直接开启服务模式 ollama serve 日志会提示成功,此时不要关闭命令行窗口,保持开启。

测试一,通过API Fox测试连通性。

1、安装Api Fox,免费创建账号并登陆 2、进入API Hub,选择OpenAI

3、在聊天目录中,选择创建聊天补全,把本地地址替换掉。模型名称和你的聊天问题也替换掉。

地址:本机统一为:http://127.0.0.1:1234/v1/chat/completions model:参考LM界面上的设置,下图有说明。

模型名称和地址,在LM Studio中有

4、发送请求,就可以看到AI的回复。

如果是Ollama的API 地址则为:http://127.0.0.1:11434/v1/chat/completions model名称,为ollama list命令中,输出的模型名称,比如:deepseek-r1

Java中使用SpringBoot来调用Deep Seek R1 API

Java中调用一般有2种形式。 1、Spring AI框架,这是Spring官方支持的,但是功能比较弱,目前还在发展阶段,用起来需要自己做一些封装 参考:https://spring.io/projects/spring-ai/

2、使用三方的langchain4j 参考文档:https://docs.langchain4j.dev/get-started/

目前看langchain4j要简单一些。我们来实现API调用DeepSeek

1、添加依赖

可以直接用版本号来管理

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-spring-boot-starter</artifactId>
    <version>1.0.0-alpha1</.version>
</dependency>

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
    <version>1.0.0-alpha1</.version>
</dependency>

但是,最好通过BOM引用,省得管理版本号

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-bom</artifactId>
            <version>1.0.0-alpha1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2、测试连通性

public static void main(String[] args) {
    String baseUrl = "http://127.0.0.1:11434/v1";
    String apiKey = "test";
    String modelName = "deepseek-r1:14b";

    ChatLanguageModel model = OpenAiChatModel.builder()
        .baseUrl(baseUrl)
        .apiKey(apiKey)
        .modelName(modelName)
        .temperature(0.8)
        .seed(RandomUtil.randomInt())
        .build();
    String result = model.generate("帮我写一个Python对list去重的代码");
    System.out.println(result);
}

其中: a、baseUrl是本机的API服务地址。一般是带/v1结尾。比如Ollama是11434端口就是: http://127.0.0.1:11434/v1

如果是LM Studio就是:http://127.0.0.1:1234/v1

如果想直接连DeepSeek官方,就用官方提供的API地址即可。

b、密钥api key APIKey也是官方提供的密钥,本地ollama和LM Studio时,这个随便录一个值就行了,不能为空,随便填。

c、modelName,是想要调用的模型名称。 同样,录入ollama list的结果,或者LM Studio中提供的名称。

最后执行结果如下:

可以看到推理过程,Java中,拿去Happy吧。

Python中调用

python也有2种常规调用方式, 1、是直接用requests库,通过HTTP请求调用。

直接上代码:

import requests

# 替换成你的refresh_token
api_token = 'test'
api_url = 'http://localhost:11434/v1/chat/completions'


def get_response_from_api(user_input, model_name):
    headers = {
        'Authorization': f'Bearer {api_token}',
        'Content-Type': 'application/json'
    }
    data = {
        "model": model_name,
        "messages": [
            {
                "role": "user",
                "content": user_input
            }
        ],
        "stream": False
    }
    response = requests.post(api_url, headers=headers, json=data)
    completion = response.json()
    if completion and len(completion['choices']) > 0:
        return completion['choices'][0]['message']['content']
    print(f"API请求失败,返回信息为:[{completion}]")
    return None


resp = get_response_from_api('你好,你是谁', "deepseek-r1:14b")
print(resp)

2、通过openai的公共包调用。这种比较简单。

直接上代码,这块比较简单 先安装openai包

pip install openai

运行python

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="sk-test",  # 随便填写,只是为了通过接口参数校验
)

completion = client.chat.completions.create(
    model="deepseek-r1:14b",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "你好"}
    ],
    stream=False
)

print(completion.choices[0].message)

用jupyterlab写文档,比直接写python好用。

后记

代码调用成功了,后面就可以将DeepSeek R1接入到自己的业务中去使用了。

好不好玩,看自己怎么弄了。

DeepSeek R1调用 Java调用DeepSeek python调用DeepSeek