> 技术文档 > 【AI大模型】——使用Java调用国内各种流行的AI大语言模型,全世界都在拥抱AI!!!_java 调用 大模型

【AI大模型】——使用Java调用国内各种流行的AI大语言模型,全世界都在拥抱AI!!!_java 调用 大模型


 

🎼个人主页:【Y小夜】

😎作者简介:一位双非学校的大三学生,编程爱好者,

专注于基础和实战分享,欢迎私信咨询!

🎆入门专栏:🎇【MySQL,Javaweb,Rust,python】

🎈热门专栏:🎊【Springboot,Redis,Springsecurity,Docker,AI】 

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

目录

🎈Java调用通义千问

🎄开通服务

🎄调用模型

🎈Java调用deepseek

🎄快速开始

🎄多轮对话

🎄流式输出


🎈Java调用通义千问

        通义千问是由阿里云自主研发的大模型,用于理解和分析用户输入的自然语言,以及图片、音频、视频等多模态数据。 在不同领域和任务为用户提供服务和帮助。 您可以通过提供尽可能清晰详细的指令,来获取符合您预期的结果。 您可以在 模型体验中心 试用通义千问模型。

🎄开通服务

官网:阿里云百炼阿里云百炼阿里云百炼

点击开通服务

然后正在开通中,耐心等待一下。

点击API-KEY

创建一个自己的KEY

🎄调用模型

然后根据API文档,调用一下自己的模型:

通义千问API参考_大模型服务平台百炼(Model Studio)-阿里云帮助中心

这演示的是通过 DashScope(模型服务灵积) 的方式调用模型。

先引入依赖

  com.alibaba dashscope-sdk-java 2.9.0 

然后进行调用: 

// 建议dashscope SDK的版本 >= 2.12.0import java.util.Arrays;import java.lang.System;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.common.Message;import com.alibaba.dashscope.common.Role;import com.alibaba.dashscope.exception.ApiException;import com.alibaba.dashscope.exception.InputRequiredException;import com.alibaba.dashscope.exception.NoApiKeyException;import com.alibaba.dashscope.utils.JsonUtils;public class Main { public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException { Generation gen = new Generation(); Message systemMsg = Message.builder() .role(Role.SYSTEM.getValue()) .content(\"You are a helpful assistant.\") .build(); Message userMsg = Message.builder() .role(Role.USER.getValue()) .content(\"你是谁?\") .build(); GenerationParam param = GenerationParam.builder() // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey(\"sk-xxx\") .apiKey(System.getenv(\"DASHSCOPE_API_KEY\")) // 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models .model(\"qwen-plus\") .messages(Arrays.asList(systemMsg, userMsg)) .resultFormat(GenerationParam.ResultFormat.MESSAGE) .build(); return gen.call(param); } public static void main(String[] args) { try { GenerationResult result = callWithMessage(); System.out.println(JsonUtils.toJson(result)); } catch (ApiException | NoApiKeyException | InputRequiredException e) { // 使用日志框架记录异常信息 System.err.println(\"An error occurred while calling the generation service: \" + e.getMessage()); } System.exit(0); }}

 输出是JSON格式的

如果你只想要输出内容,可以替换为以下代码 

GenerationResult result = callWithMessage();String content =result.getOutput().getChoices().get(0).getMessage().getContent();System.out.println(content);

 输出就只有内容了:

🎈Java调用deepseek

🎄快速开始

还是在大模型服务平台百炼上,我们直接使用官方提供的示例代码:

        但是注意,因为我们要 返回reasoning_content(思考过程)字段,你的 DashScope Java SDK 版本需要不低于2.18.2。

// dashscope SDK的版本 >= 2.18.2import java.util.Arrays;import java.lang.System;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.common.Message;import com.alibaba.dashscope.common.Role;import com.alibaba.dashscope.exception.ApiException;import com.alibaba.dashscope.exception.InputRequiredException;import com.alibaba.dashscope.exception.NoApiKeyException;public class Main { public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException { Generation gen = new Generation(); Message userMsg = Message.builder() .role(Role.USER.getValue()) .content(\"你是谁?\") .build(); GenerationParam param = GenerationParam.builder() // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey(\"sk-xxx\") .apiKey(System.getenv(\"DASHSCOPE_API_KEY\")) .model(\"deepseek-r1\") .messages(Arrays.asList(userMsg)) // 不可以设置为\"text\" .resultFormat(GenerationParam.ResultFormat.MESSAGE) .build(); return gen.call(param); } public static void main(String[] args) { try { GenerationResult result = callWithMessage(); System.out.println(\"思考过程:\"); System.out.println(result.getOutput().getChoices().get(0).getMessage().getReasoningContent()); System.out.println(\"回复内容:\"); System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent()); } catch (ApiException | NoApiKeyException | InputRequiredException e) { // 使用日志框架记录异常信息 System.err.println(\"An error occurred while calling the generation service: \" + e.getMessage()); } System.exit(0); }}

🎄多轮对话

        百炼提供的 DeepSeek API 默认不会记录你的历史对话信息。多轮对话功能可以让大模型“拥有记忆”,满足如追问、信息采集等需要连续交流的场景。

// dashscope SDK的版本 >= 2.18.2import java.util.Arrays;import java.lang.System;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.common.Message;import com.alibaba.dashscope.common.Role;import com.alibaba.dashscope.exception.ApiException;import com.alibaba.dashscope.exception.InputRequiredException;import com.alibaba.dashscope.exception.NoApiKeyException;import com.alibaba.dashscope.utils.JsonUtils;public class Main { public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException { Generation gen = new Generation(); Message userMsg1 = Message.builder() .role(Role.USER.getValue()) .content(\"你好\") .build(); Message AssistantMsg = Message.builder() .role(Role.ASSISTANT.getValue()) .content(\"你好!很高兴见到你,有什么我可以帮忙的吗?\") .build(); Message UserMsg2 = Message.builder() .role(Role.USER.getValue()) .content(\"你是谁\") .build(); GenerationParam param = GenerationParam.builder() // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey(\"sk-xxx\") .apiKey(System.getenv(\"DASHSCOPE_API_KEY\")) .model(\"deepseek-r1\") .messages(Arrays.asList(userMsg1,AssistantMsg,UserMsg2)) // 不可以设置为\"text\" .resultFormat(GenerationParam.ResultFormat.MESSAGE) .build(); return gen.call(param); } public static void main(String[] args) { try { GenerationResult result = callWithMessage(); System.out.println(\"思考过程:\"); System.out.println(result.getOutput().getChoices().get(0).getMessage().getReasoningContent()); System.out.println(\"回复内容:\"); System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent()); } catch (ApiException | NoApiKeyException | InputRequiredException e) { // 使用日志框架记录异常信息 System.err.println(\"An error occurred while calling the generation service: \" + e.getMessage()); } System.exit(0); }}

这样模型就有了记忆长对话的能力

🎄流式输出

        DeepSeek-R1 类模型可能会输出较长的思考过程,为了降低超时风险,建议使用流式输出方式调用 DeepSeek-R1 类模型。

// dashscope SDK的版本 >= 2.18.2import java.util.Arrays;import org.slf4j.Logger;import org.slf4j.LoggerFactory;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.common.Message;import com.alibaba.dashscope.common.Role;import com.alibaba.dashscope.exception.ApiException;import com.alibaba.dashscope.exception.InputRequiredException;import com.alibaba.dashscope.exception.NoApiKeyException;import io.reactivex.Flowable;import java.lang.System;public class Main { private static final Logger logger = LoggerFactory.getLogger(Main.class); private static StringBuilder reasoningContent = new StringBuilder(); private static StringBuilder finalContent = new StringBuilder(); private static boolean isFirstPrint = true; private static void handleGenerationResult(GenerationResult message) { String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent(); 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); } } private static GenerationParam buildGenerationParam(Message userMsg) { return GenerationParam.builder() // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey(\"sk-xxx\") .apiKey(System.getenv(\"DASHSCOPE_API_KEY\")) .model(\"deepseek-r1\") .messages(Arrays.asList(userMsg)) // 不可以设置为\"text\" .resultFormat(GenerationParam.ResultFormat.MESSAGE) .incrementalOutput(true) .build(); } public static void streamCallWithMessage(Generation gen, Message userMsg) throws NoApiKeyException, ApiException, InputRequiredException { GenerationParam param = buildGenerationParam(userMsg); Flowable result = gen.streamCall(param); result.blockingForEach(message -> handleGenerationResult(message)); } public static void main(String[] args) { try { Generation gen = new Generation(); Message userMsg = Message.builder().role(Role.USER.getValue()).content(\"你是谁?\").build(); streamCallWithMessage(gen, userMsg);// 打印最终结果// if (reasoningContent.length() > 0) {// System.out.println(\"\\n====================完整回复====================\");// System.out.println(finalContent.toString());// } } catch (ApiException | NoApiKeyException | InputRequiredException e) { logger.error(\"An exception occurred: {}\", e.getMessage()); } System.exit(0); }}

他是一个动态的过程