接入模型前先确定服务地址、认证方式和模型 ID。HTTP 请求、厂商 SDK、Spring AI 与 LangChain4j 都可以完成调用,区别在于应用侧的封装方式。

方式先确认什么
HTTPURL、请求 JSON、超时与错误响应
厂商 SDKSDK 版本及其支持的模型功能
Spring AIBOM、Starter、模型适配与 Spring Boot 版本
LangChain4j模型模块、AI Services、记忆与工具接口

先完成 一次 HTTP 对话 或 本地 Spring AI 对话。不要同时引入四套调用方式,只为展示同一个接口。

Spring AI 调用兼容接口

沿用本地教程的 Java 21 / Spring Boot 3.5.16 / Spring AI 1.1.8 项目。调用百炼兼容接口时,将 Ollama Starter 替换为:

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>

替换模型配置,ChatClient 调用代码可以保留:

spring:
ai:
openai:
base-url: ${MODEL_BASE_URL}
api-key: ${MODEL_API_KEY}
chat:
options:
model: ${MODEL_ID}
retry:
max-attempts: 1

在自己的服务端终端设置这三个变量。百炼地域和业务空间影响域名、密钥与模型权限;按 百炼兼容接口说明 选择,不能固定复制别人的地域。

这里的 base-url 是服务根地址。例如控制台给出 https://你的空间.cn-beijing.maas.aliyuncs.com/compatible-mode/v1 时,本例填写 https://你的空间.cn-beijing.maas.aliyuncs.com/compatible-mode,Spring AI 默认补上 /v1/chat/completions。如果服务约定了别的路径,则需要配置对应的 completions-path,不能叠出两个 v1。

不要把 API Key 放入前端。调用云模型会传输提示词并可能产生费用,使用自己的账号额度;兼容文本对话不保证同时兼容工具、图片和结构化输出。

记忆与输出

历史消息由应用保存并再次发送。模型不会因为连接保持就自动记住每个用户。需要聊天记忆时,为不同用户与会话分配经过服务端授权的标识,并限制历史数量。

模型输出 JSON 仍可能不符合约定。解析后验证字段、范围和枚举;生成代码先作为候选文件检查,不直接执行。框架提供结构化转换,不代表生成内容已通过业务验证。

工具调用见 Spring AI Tools,另一种 Java 封装见 LangChain4j 实战。