Java 接入 AI 大模型个人实践:多轮对话与流式输出实现
一、前言
随着 AI 技术的日益成熟,将大模型能力集成到个人项目或企业应用中已成为趋势。本文旨在探讨如何在 Java 项目中接入国产大模型(以通义千问为例),实现基础的多轮对话及流式输出功能,并分享相关的数据库设计与代码实现思路。
二、模型选择与 Demo 测试
1. 模型选择
本着实用与成本可控的原则,本次接入选择通义千问作为目标模型。接入大模型的通用流程基本一致,核心在于业务场景的设计与上下文管理。
2. 接入准备
- 开通服务:在阿里云 DashScope 控制台开通服务并创建 API-KEY。
- 引入 SDK:在 Maven 项目中引入
dashscope-sdk-java依赖。 - 交互模式:支持单轮、多轮、流式输出等。本实践采用多轮对话 + 流式输出模式,这是目前市面上最常见的交互方式。
通过 Demo 代码可以看出,要实现多轮对话,需要将历史对话的上下文传递给大模型。观察 GenerationParam 方法可知,只需将连续的对话以 Message 集合的形式传入即可。
private static GenerationParam buildGenerationParam(Message userMsg) {
return GenerationParam.builder()
.model("qwen-turbo")
.messages(Arrays.asList(userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.topP(0.8)
.incrementalOutput(true)
.build();
}
3. Message 属性分析
为了设计合理的表结构,需了解 Message 类的关键属性:
public class Message {
String role;
String content;
@SerializedName("tool_calls")
List<ToolCallBase> toolCalls;
@SerializedName("tool_call_id")
String toolCallId;
@SerializedName("name")
String name;
}
其中重点关注 role 和 content:
- role:身份标识。常见类型包括
USER(用户),ASSISTANT(助手),SYSTEM(系统),BOT,ATTACHMENT,TOOL等。 - content:输出的具体内容。


