跳到主要内容

Java接入大模型的最佳实践

· 阅读需 5 分钟

随着大模型技术逐渐进入企业生产环境,越来越多的 Java 工程师开始参与 AI 应用开发。从最初的 ChatBot,到 RAG 知识库、Agent、工作流编排,Java 技术栈已经能够覆盖绝大多数 AI 应用场景。

本文结合实际项目经验,介绍 Java 接入大模型的主流方案以及企业级最佳实践。


1. OpenAI协议已经成为事实标准

在早期接入 AI 模型时,每家模型厂商都有自己独立的接口规范:

  • OpenAI API
  • Claude API
  • Gemini API
  • 文心一言 API
  • 通义千问 API

开发者需要针对不同厂商编写不同的适配代码,维护成本极高。

随着 OpenAI 的普及,OpenAI Chat Completion API 逐渐成为行业标准。

目前绝大多数模型服务商都兼容 OpenAI 协议:

  • DeepSeek
  • 阿里百炼
  • 智谱AI
  • 月之暗面(Kimi)
  • SiliconFlow
  • OpenRouter
  • Azure OpenAI

典型请求格式:

POST /v1/chat/completions

{
"model":"deepseek-chat",
"messages":[
{
"role":"user",
"content":"你好"
}
]
}

因此对于 Java 工程师来说:

只要支持 OpenAI 协议,理论上就能快速切换底层模型。

这也是为什么目前企业项目都会优先选择支持 OpenAI 协议的 AI 框架。


2. LangChain4j架构解析

在 Java 生态中,目前最流行的大模型框架是 LangChain4j。

它类似于 Spring Data 对数据库的封装。

开发者无需关心底层 HTTP 调用,只需要关注业务逻辑。

核心架构如下:

Application



AiService



ChatModel



LLM Provider
(OpenAI/DeepSeek/Qwen...)

ChatModel

ChatModel 是最基础的模型接口。

类似于同步调用。

ChatModel model = OpenAiChatModel.builder()
.apiKey(apiKey)
.baseUrl(baseUrl)
.modelName("deepseek-chat")
.build();

String answer = model.chat("介绍一下SpringBoot");

特点:

  • 简单
  • 阻塞调用
  • 适合测试场景

StreamingChatModel

用于流式输出。

StreamingChatModel model =
OpenAiStreamingChatModel.builder()
.apiKey(apiKey)
.baseUrl(baseUrl)
.modelName("deepseek-chat")
.build();

可以实现:

  • 打字机效果
  • 长文本输出
  • 实时推送

这是生产环境最常用的模式。


AiService

AiService 是 LangChain4j 最强大的能力。

开发者只需要定义接口:

interface Assistant {

String chat(String message);

}

创建代理:

Assistant assistant =
AiServices.create(
Assistant.class,
model
);

调用:

assistant.chat("你好");

类似于 Spring 的:

@Mapper
@Repository
@FeignClient

底层通过动态代理自动完成提示词拼装。

企业项目中大部分业务Agent都会基于 AiService 实现。


3. SpringBoot整合LangChain4j

Maven依赖:

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
</dependency>

配置文件:

ai:
base-url: https://api.deepseek.com
api-key: xxx
model: deepseek-chat

配置Bean:

@Bean
public ChatModel chatModel() {

return OpenAiChatModel.builder()
.apiKey(apiKey)
.baseUrl(baseUrl)
.modelName(model)
.build();
}

业务调用:

@RestController
public class ChatController {

@Autowired
private Assistant assistant;

@GetMapping("/chat")
public String chat(String msg) {
return assistant.chat(msg);
}
}

至此已经完成最基础的大模型接入。


4. 流式输出实现

真实项目中几乎不会使用同步返回。

因为:

  • 响应时间长
  • 用户体验差
  • 无法实时展示生成内容

通常采用 SSE + WebFlux。


SSE

服务端:

@GetMapping(value = "/chat",
produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> chat(String message) {

return aiService.chat(message);
}

前端:

const eventSource =
new EventSource("/chat?message=你好");

eventSource.onmessage = (event) => {
console.log(event.data);
};

浏览器会持续接收 Token。


WebFlux

企业项目推荐:

public Flux<String> chat(String message) {

return Flux.create(emitter -> {

assistant.chat(
message,
token -> emitter.next(token),
emitter::error,
emitter::complete
);

});
}

优势:

  • 非阻塞
  • 高并发
  • 节省线程资源

特别适合 AI Chat 场景。


5. Tool Calling实现

Tool Calling 本质上是:

让大模型调用 Java 方法。

例如:

用户:

北京天气怎么样

模型返回:

{
"tool":"getWeather",
"city":"北京"
}

Java执行:

public class WeatherTool {

@Tool
public String getWeather(String city) {

return weatherService.query(city);

}

}

注册:

Assistant assistant =
AiServices.builder(Assistant.class)
.chatModel(model)
.tools(new WeatherTool())
.build();

执行流程:

User



LLM



Tool Calling



Java Method



Tool Result



LLM



Final Answer

企业项目常见 Tool:

  • 商品查询
  • 用户信息查询
  • 订单查询
  • 库存查询
  • CRM系统
  • OA系统
  • ERP系统

本质上都是把已有业务能力开放给大模型。


6. 企业项目中的封装方式

很多团队刚开始接入 AI 时会这样写:

controller
-> service
-> model.chat()

项目稍微复杂后会迅速失控。

推荐分层架构:

Controller



Agent



Workflow



Tools



LLM

第一层:Agent

负责业务入口。

例如:

CustomerServiceAgent
ReviewReplyAgent
KnowledgeAgent

第二层:Workflow

负责流程编排。

例如商品评价回复:

评价内容



情感分析



意图识别



知识库检索



提示词组装



生成回复

这一层可以使用:

  • LangGraph4j
  • Spring AI Workflow
  • Flowable
  • 自研工作流

第三层:Tool层

统一封装外部能力:

UserTool
OrderTool
ProductTool
SearchTool
KnowledgeTool

避免业务直接访问数据库。


第四层:模型网关

统一管理:

DeepSeek
GPT-4o
Qwen-Max
Claude

实现:

ChatModelFactory

能力包括:

  • 模型路由
  • 降级切换
  • 重试
  • 限流
  • 监控

总结

对于 Java 工程师来说,大模型应用开发的核心技术路线已经逐渐清晰:

OpenAI协议

LangChain4j

SpringBoot

SSE/WebFlux

Tool Calling

Workflow

Agent

如果把企业 AI 应用看成一个系统工程,那么大模型只是其中的一环。真正决定项目质量的,往往是工作流编排、工具体系建设、知识库设计以及模型治理能力。