JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型

本文涉及的产品
图像搜索,任选一个服务类型 1个月
简介: 随着大模型的越来越盛行,现在很多企业开始接入大模型的接口,今天我从java开发角度来写一个demo的示例,用于接入DeepSeek大模型,国内的大模型有很多的接入渠道,今天主要介绍下阿里云的百炼模型,因为这个模型是免费的,只要注册一个账户,就会免费送百万的token进行学习,今天就从一个简单的可以执行的示例开始进行介绍,希望可以分享给各位正在学习的同学们。

前言

随着大模型的越来越盛行,现在很多企业开始接入大模型的接口,今天我从java开发角度来写一个demo的示例,用于接入DeepSeek大模型,国内的大模型有很多的接入渠道,今天主要介绍下阿里云的百炼模型,因为这个模型是免费的,只要注册一个账户,就会免费送百万的token进行学习,今天就从一个简单的可以执行的示例开始进行介绍,希望可以分享给各位正在学习的同学们。

概念原理:

DeepSeek大模型是由深度求索(DeepSeek)公司开发的一种生成式人工智能模型,其核心目标是结合大规模语言模型与深度搜索技术,提供更精准、全面的信息服务和交互体验。以下从技术定位、核心功能及底层原理三个层面展开说明:

1. DeepSeek大模型的定位

DeepSeek旨在成为“搜索增强型大语言模型”,与传统搜索引擎或纯生成式AI(如ChatGPT)不同,它通过以下方式融合两者优势:

  • 搜索增强生成:将网络检索结果作为输入的一部分,辅助模型生成更实时、可信的内容。
  • 多模态交互:支持文本、图像、语音等多模态输入,扩展应用场景。
  • 长文本处理:优化上下文记忆能力,支持复杂任务的多轮对话。

2. 深度搜索(DeepSeek)的核心功能

深度搜索技术主要解决传统搜索的三大痛点:

  • 语义鸿沟:通过深度理解用户意图(而非关键词匹配),精准定位信息。例如,将“如何修复电脑蓝屏”转化为技术文档、论坛讨论和教程视频的关联。
  • 信息过时:实时抓取最新数据(如新闻、学术文献),动态更新知识库。
  • 长尾查询:通过生成能力补全冷门问题的信息缺失,如专业领域的细分问题。

具体技术手段包括:

  • 混合检索架构:结合向量数据库(语义搜索)与图数据库(知识关联),提升召回率。
  • 生成式补全:对检索结果不足的部分,用大模型生成补充内容,并标注来源可信度。
  • 多模态索引:对图像、表格等非文本数据建立嵌入表示(Embedding),实现跨模态检索。

3. 底层技术原理

DeepSeek的技术栈可分为四层架构:

(1)基础模型层

  • Transformer架构:采用解码器-only结构(类似GPT),通过自注意力机制捕捉长距离依赖。
  • 参数规模:推测为百亿级参数(具体未公开),支持复杂推理和生成任务。
  • 优化策略:可能引入混合专家系统(MoE)降低计算成本,或采用量化技术加速推理。

(2)预训练与微调

  • 多任务预训练
  • 语言建模:掩码语言模型(MLM)学习文本表征。
  • 知识注入:通过检索增强预训练(REALM等范式),将外部知识融入模型。
  • 对话建模:基于指令微调(Instruction Tuning)提升任务完成能力。
  • 持续学习:通过增量预训练吸收新数据,避免知识过时。

(3)搜索融合层

  • 动态检索:在用户输入时实时触发搜索,将结果编码为模型可读的向量。
  • 上下文融合:将检索内容与用户历史对话拼接,作为生成输入的上下文。
  • 可控生成:通过强化学习(RLHF)优化生成方向,确保答案符合搜索目标。

(4)系统优化层

  • 异构硬件适配:针对CPU/GPU/NPU优化推理速度,支持高并发场景。
  • 延迟-质量平衡:根据场景动态调整搜索深度和生成长度,例如简单问题直接检索,复杂问题启动生成。

JAVA实战

第一步:依赖的配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>spring.ai.text</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <java.version>17</java.version>
        <spring-ai.version>0.8.1</spring-ai.version>
    </properties>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <!-- 使用DashScope SDK -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dashscope-sdk-java</artifactId>
            <version>2.5.0</version> <!-- 使用最新版本 -->
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

第二步:接口的开发

package org.example;
import com.alibaba.dashscope.base.HalfDuplexServiceParam;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;
import java.lang.System;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class QwenController {
    private static StringBuilder reasoningContent = new StringBuilder();
    private static StringBuilder finalContent = new StringBuilder();
    private static boolean isFirstPrint = true;
    @GetMapping("/qwen")
    public String askQuestion(String question) throws NoApiKeyException, InputRequiredException {
        Generation gen = new Generation();
        HalfDuplexServiceParam generationParam = buildGenerationParam(question);
        Flowable<GenerationResult> result = gen.streamCall(generationParam);
        result.blockingForEach(message -> handleGenerationResult(message));
        return reasoningContent.toString();
    }
    @GetMapping("/deepseek")
    public String askDeepSeekQuestion(String question) throws NoApiKeyException, InputRequiredException {
        Generation gen = new Generation();
        HalfDuplexServiceParam generationParam = buildDeepSeekGenerationParam(question);
        Flowable<GenerationResult> result = gen.streamCall(generationParam);
        result.blockingForEach(message -> handleGenerationResult(message));
        return reasoningContent.toString();
    }
    private static HalfDuplexServiceParam buildDeepSeekGenerationParam(String Msg) {
        return GenerationParam.builder()
                // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
                .apiKey("")
                // 此处以 qwq-32b 为例,可按需更换模型名称
                .model("deepseek-r1")
                .prompt(Msg)
                .build();
    }
    private static HalfDuplexServiceParam buildGenerationParam(String Msg) {
        return GenerationParam.builder()
                // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
                .apiKey("")
                // 此处以 qwq-32b 为例,可按需更换模型名称
                .model("qwq-32b")
                .prompt(Msg)
                .build();
    }
    private static void handleGenerationResult(GenerationResult message) {
        String reasoning = message.getOutput().getChoices().get(0).getMessage().getContent();
        String content = message.getOutput().getChoices().get(0).getMessage().getContent();
        if (!reasoning.isEmpty()) {
            reasoningContent.append(reasoning);
            if (isFirstPrint) {
                System.out.println("====================思考过程====================");
                isFirstPrint = false;
            }
            System.out.print(reasoning);
        }
        if (!content.isEmpty()) {
            finalContent.append(content);
            if (!isFirstPrint) {
                System.out.println("\n====================完整回复====================");
                isFirstPrint = true;
            }
            System.out.print(content);
        }
    }
}

代码中的模型选择,可以选择目前百炼支持的模型,比如说阿里云的模型,比如说deepseek的模型,一般有deepseek-v1、deepseek-v2、deepseek-v3以及deepseek-r1等,每种不同的模型具备不同的推理能力不一样。具体的会在接口调用的时候进行介绍。

第三步:运行效果

3.1deepseek-r1的调用情况

3.2qwq-32b的调用情况

总结:

从运行的效果来看,整个的思考过程以及生成的结果来看,两个模型的思考几乎是差不多的,现在随着国内的大模型逐步开源,并且相互之间进行模型之间的学习以及蒸馏,这样的话,整个国内的AI大模型就会达到良性的发展,随着使用的人数越来越多,也能反向的促进人工智能的发展与进步。

目录
打赏
0
3
3
0
544
分享
相关文章
Java 17 探秘:不容错过的现代开发利器
Java 17 探秘:不容错过的现代开发利器
2025年WebStorm高效Java开发全指南:从配置到实战
WebStorm 2025不仅是一款强大的JavaScript IDE,也全面支持Java开发。本文详解其AI辅助编程、Java特性增强及性能优化,并提供环境配置、高效开发技巧与实战案例,助你打造流畅的全栈开发体验。
93 4
|
12天前
|
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
53 1
|
13天前
|
Java 17 新特性与微服务开发的实操指南
本内容涵盖Java 11至Java 17最新特性实战,包括var关键字、字符串增强、模块化系统、Stream API、异步编程、密封类等,并提供图书管理系统实战项目,帮助开发者掌握现代Java开发技巧与工具。
35 0
Springboot集成AI Springboot3 集成阿里云百炼大模型CosyVoice2 实现Ai克隆语音(未持久化存储)
本项目基于Spring Boot 3.5.3与Java 17,集成阿里云百炼大模型CosyVoice2实现音色克隆与语音合成。内容涵盖项目搭建、音色创建、音频合成、音色管理等功能,适用于希望快速掌握Spring Boot集成语音AI技术的开发者。需提前注册阿里云并获取API Key。
ollama部署本地DeepSeek大模型
本地部署大模型具有省钱省心、数据安全、使用自由、无需联网、量身定制及响应高效等优势。DeepSeek 提供满血版与多种蒸馏版模型,适配不同硬件条件。通过 Ollama 可便捷部署,并结合客户端工具如 AnythingLLM 提升交互体验,打造个性化本地 AI 助手。
201 0
Java 大学期末实操项目在线图书管理系统开发实例及关键技术解析实操项目
本项目基于Spring Boot 3.0与Java 17,实现在线图书管理系统,涵盖CRUD操作、RESTful API、安全认证及单元测试,助力学生掌握现代Java开发核心技能。
50 0
Java开发不可不知的秘密:类加载器实现机制
类加载器是Java中负责动态加载类到JVM的组件,理解其工作原理对开发复杂应用至关重要。本文详解类加载过程、双亲委派模型及常见类加载器,并介绍自定义类加载器的实现与应用场景。
AI大模型运维开发探索第五篇:GitOps 智能体
本文探讨了如何结合 Manus 的智能体设计理念与 GitOps 持续集成技术,构建低成本、高扩展性的智能体系统。通过借鉴 Manus 的沙箱机制与操作系统交互思路,利用 Git 作为智能体的记忆存储与任务调度核心,实现了推理过程可视化、自进化能力强的智能体架构。文章还分享了具体落地实践与优化经验,展示了其与 Manus 相当的功能表现,并提供了开源代码供进一步探索。
196 20

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问