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接入到自己的业务中去使用了。
好不好玩,看自己怎么弄了。