依赖版本冲突问题

目前遇到最多的是 SpringBoot 兼容性问题

Spring Boot 兼容性问题

当使用 Spring Boot 2.4.x 以下版本时,可能会遇到 Jackson 和 OkHttp 的版本冲突问题。这是因为较低版本的 Spring Boot 依赖的这些库版本与 deepseek4j 所需版本不兼容。

解决方案

请将以下依赖管理配置添加到项目根 pom.xml 文件的 dependencyManagement 节点中,以确保全局依赖版本的正确覆盖。
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.12.0</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp-sse</artifactId>
            <version>4.12.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson</groupId>
            <artifactId>jackson-bom</artifactId>
            <version>2.12.4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

中文编码问题

问题描述

如果开发环境的字符编码不是 UTF-8,或在输出响应时遇到中文乱码问题,可能会出现如下情况:

解决方案

在 Spring Controller 中设置响应的 Content-Type 时,需要明确指定字符编码为 UTF-8:

@GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE + ";charset=UTF-8")
public Flux<ChatCompletionResponse> chat(String prompt) {
    // 你的业务逻辑
}

多厂商动态切换

问题描述

在某些场景下,可能需要根据不同的业务需求动态切换不同的模型厂商。例如,在某些场景下,可能需要根据不同的业务需求动态切换不同的模型厂商。

解决方案

  • 不再引入 deepseek-spring-boot-starter 依赖,而是引入 deepseek4j-core 依赖自行配置 DeepSeekClient
@Bean
public DeepSeekClient aliyunDeepSeekClient() {
    DeepSeekClient.Builder builder = DeepSeekClient.builder().baseUrl(deepSeekProperties.getBaseUrl())
            .model(deepSeekProperties.getModel()).openAiApiKey(deepSeekProperties.getApiKey())
            .logRequests(deepSeekProperties.isLogRequests()).logResponses(deepSeekProperties.isLogResponses());
    return builder.build();
}


@Bean
public DeepSeekClient txDeepSeekClient() {

    DeepSeekClient.Builder builder = DeepSeekClient.builder().baseUrl(deepSeekProperties.getBaseUrl())
            .model(deepSeekProperties.getModel()).openAiApiKey(deepSeekProperties.getApiKey())
            .logRequests(deepSeekProperties.isLogRequests()).logResponses(deepSeekProperties.isLogResponses());
    return builder.build();
}

API 使用量统计

获取请求用量统计

Deepseek 官方 API 会在流式响应的最后返回本次请求的用量统计信息。你可以通过以下方式获取:

return deepSeekClient.chatFluxCompletion(prompt)
    .doOnNext(response -> {
        if (Objects.nonNull(response.usage())) {
            // 在这里处理用量统计信息
            // 可以记录到日志或数据库中
        }
    });

PIG AI应用开发平台 | 适合中大型企业构建自主可控的AI中台

为Java开发者提供全栈式AI工程化解决方案,强类型/高可维护性架构,内置30+主流大模型支持。

  • 🔍 知识引擎体系:RAG 知识引擎全自动化多模态解决方案
  • 📝 AI-OCR 中枢:复杂非标场景高精度识别
  • ⚙️ 业务智能融合:函数编排 + Chat2SQL,无缝对接现有业务系统
  • 🛡️ N维风控体系:敏感词/IP/Token/User 规则控制引擎

文档有误?请协助编辑

发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!