DeepSeek满血版JAVA接入指南(问答接入、流式接入双模式)

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、必要信息准备
  • 二、HTTP问答接入
    • 1.配置文件
    • 2.创建实例类
    • 3.创建调用外部API接口
    • 4.创建调用服务service
    • 5.业务层service选择模型,并调用刚刚的服务
  • 三、WSS流式调用
    • 1.先写一个处理流式响应的方法
    • 2.业务层service调用
    • 3.WebSocket调用
  • 总结


前言

硅基流动推出了功能完备的DeepSeek满血版,然而众多用户在尝试接入大型模型时仍面临诸多挑战,特别是在流式接入方面。今天,我将引领大家通过Java实现双模式接入DeepSeek满血版,这涵盖了利用HTTP协议实现的问答模式,以及借助WSS协议实现的流式问答功能。话不多说,我们直接开始。


一、必要信息准备

在这里插入图片描述

接入满血版DeepSeek,肯定要有个硅基流动账号和秘钥啦,搜索一下硅基流动官网,打开硅基流动首页,注册账号,别忘了填邀请码wkzJFskh,注册后可以获取14元的赠送额度,嫌麻烦的同学可以直接复制https://cloud.siliconflow.cn/i/wkzJFskh,可以直接跳转到官网。
在这里插入图片描述
注册完成后,左侧菜单栏点击API秘钥,然后选择右上角的创建秘钥,输入必要信息后,秘钥创建完成,鼠标点击刚刚创建的秘钥,单击复制,这一步可以先把秘钥用个记事本记录一下,等会代码里会用到。
在这里插入图片描述

点击左侧模型广场,选取DeepSeekR1满血版模型,可以看到,广场里面有很多小模型是免费的,大家有空可以都尝试玩一下。
在这里插入图片描述

复制一下模型名称,写在记事本里,等会会用到。点击API文档,进入官方接入指南。
在这里插入图片描述

记住这边的路径,请求以及响应,下面要开始代码部分啦。

二、HTTP问答接入

我们先进行HTTP问答接入,这种接入方式需要等大模型完全回答完问题,将答案生成好之后,全部返回,这种方式的优点是前后端交互方便,缺点是在用户看来等待好长时间才返回答案。下面开始上代码

1.配置文件

代码如下(示例):

sili:
  apiKey: sk-xxxxxxxxx-your-api-key
  baseUrl: https://api.siliconflow.cn/v1/

2.创建实例类

会看第一节的官方API指南,根据官方的请求体和响应,构造实体类,我这边不展开篇幅

3.创建调用外部API接口

这里将普通调用和流模式均展示在了下面,流式调用需要用@Streaming注解。这里不使用openFeign是因为openFeign不支持流式响应的接收。

package com.example.awesome.feign.siliconflow;

import com.example.awesome.feign.siliconflow.req.ChatCompletionReq;
import com.example.awesome.feign.siliconflow.res.ChatCompletionRes;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.HeaderMap;
import retrofit2.http.POST;
import retrofit2.http.Streaming;

import java.util.Map;

/**
 * 定义与 SiliconFlow API 交互的 Retrofit 接口。
 */
public interface SiliconFlowApiService {
   
   

    /**
     * 发起同步的聊天完成请求。
     *
     * @param chatCompletionReq 请求体,包含聊天完成所需的参数。
     * @param headers           HTTP 请求头,包括授权信息等。
     * @return 返回一个 {@link Call} 对象,用于执行HTTP请求并获取 {@link ChatCompletionRes} 响应。
     */
    @POST("/chat/completions")
    Call<ChatCompletionRes> getChatCompletions(
        @Body ChatCompletionReq chatCompletionReq,
        @HeaderMap Map<String, String> headers
    );

    /**
     * 发起流式的聊天完成请求。
     *
     * @param chatCompletionReq 请求体,包含聊天完成所需的参数。
     * @param headers           HTTP 请求头,包括授权信息等。
     * @return 返回一个 {@link Call} 对象,用于执行HTTP请求并获取 {@link ResponseBody} 流式响应。
     * @see Streaming 表示该请求是流式的,不会将整个响应体加载到内存中。
     */
    @POST("/chat/completions")
    @Streaming
    Call<ResponseBody> getChatCompletionsStream(
        @Body ChatCompletionReq chatCompletionReq,
        @HeaderMap Map<String, String> headers
    );
}

4.创建调用服务service

package com.example.awesome.feign.siliconflow;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.example.awesome.feign.siliconflow.req.ChatCompletionReq;
import com.example.awesome.feign.siliconflow.res.ChatCompletionRes;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionResult;
import com.volcengine.ark.runtime.utils.ResponseBodyCallback;
import com.volcengine.ark.runtime.utils.SSE;
import io.reactivex.BackpressureStrategy;
import io.reactivex.Flowable;
import lombok.extern.slf4j.Slf4j;
import okhttp3.OkHttpClient;
import okhttp3.ResponseBody;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * 实现与 SiliconFlow API 交互的服务类。
 */
@Service
@Slf4j

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值