【Agent】AI 应用开发环境搭建 & 大模型三种接入方式对比

目录

[在 AI 应用开发实践过程中,我把踩过的坑整理成文。这篇不讲理论,纯粹是从"零搭环境到能跑通 AI 对话"的实操记录,三种接入方式都附代码片段和我的真实对比感受。](#在 AI 应用开发实践过程中,我把踩过的坑整理成文。这篇不讲理论,纯粹是从"零搭环境到能跑通 AI 对话"的实操记录,三种接入方式都附代码片段和我的真实对比感受。)

[一、环境搭建(Windows 11)](#一、环境搭建(Windows 11))

[1.1 工具清单](#1.1 工具清单)

[1.2 JDK 安装](#1.2 JDK 安装)

[1.3 Maven](#1.3 Maven)

[1.4 IDEA 必备插件](#1.4 IDEA 必备插件)

[1.5 DashScope API Key](#1.5 DashScope API Key)

二、三种接入方式(亲测可用)

[2.1 方式 A:DashScope 原生 SDK(直接 HttpClient)](#2.1 方式 A:DashScope 原生 SDK(直接 HttpClient))

[2.2 方式 B:Spring AI Alibaba(我主力使用)](#2.2 方式 B:Spring AI Alibaba(我主力使用))

[2.3 方式 C:LangChain4j(社区活跃)](#2.3 方式 C:LangChain4j(社区活跃))

三、横向对比

[3.1 五个维度对比](#3.1 五个维度对比)

[3.2 关键差异图示](#3.2 关键差异图示)

四、我的选型建议

[4.1 校招 / 简历项目](#4.1 校招 / 简历项目)

[4.2 学习路径建议](#4.2 学习路径建议)

[4.3 什么时候用 LangChain4j](#4.3 什么时候用 LangChain4j)

[4.4 什么时候直接用 SDK](#4.4 什么时候直接用 SDK)

[五、我踩过的坑(节省你 3 小时)](#五、我踩过的坑(节省你 3 小时))

[5.1 配置文件 Key 泄漏](#5.1 配置文件 Key 泄漏)

[5.2 Spring AI 版本差异](#5.2 Spring AI 版本差异)

[5.3 mvnw wrapper jar 丢失](#5.3 mvnw wrapper jar 丢失)

[5.4 每次启动烧一次 API 调用](#5.4 每次启动烧一次 API 调用)

六、最后一句话


在 AI 应用开发实践过程中,我把踩过的坑整理成文。这篇不讲理论,纯粹是从"零搭环境到能跑通 AI 对话"的实操记录,三种接入方式都附代码片段和我的真实对比感受。


一、环境搭建(Windows 11)

1.1 工具清单

|-------------------|------------------|----------------------|
| 工具 | 版本 | 作用 |
| JDK | Corretto 21.0.12 | Spring Boot 3.x 强制要求 |
| Maven | IDEA 自带 | 项目构建 |
| IDEA | 2023.1+ | 主力 IDE |
| DashScope API Key | 阿里云百炼申请 | 调通义千问必需 |

1.2 JDK 安装

Spring Boot 3.5.10 最低要求 JDK 17,但实际开发中大量用到 var、虚拟线程、record 模式等 21 特性,直接上 21

推荐 Amazon Corretto 21(OpenJDK 发行版,免费、稳定、阿里云兼容性好):

1.3 Maven

不用单独装 Maven,用 IDEA 自带的 就行。如果非要用 CLI,记住 Spring Boot 项目结构用 ./mvnw 而不是 mvn(mvnw 会自动下载项目指定的 Maven 版本,团队协作时版本统一)。

⚠️ 我自己的坑:.mvn/wrapper/maven-wrapper.jar 这个文件经常在 .gitignore 里被忽略,结果就是 mvnw 命令报"找不到类"。解决办法:要么把 wrapper jar 也提交到 git,要么干脆用 IDEA 的 Maven 面板,不碰命令行。

1.4 IDEA 必备插件

|------------------|-----------------------|
| 插件 | 用途 |
| Lombok | @Slf4j / @Data 必备 |
| MyBatisX | 调试 SQL 时用(本期用不到) |
| Rainbow Brackets | 嵌套括号多了眼睛会瞎 |
| GitToolBox | 看每行代码最后提交者 |

1.5 DashScope API Key

https://dashscope.aliyun.com/apiKey 申请,每个阿里云账号有免费额度(百万 tokens 级别),学习完全够用。

关键 :Key 千万别提交到 git。我把真实 Key 放在 application-local.yml,这个文件已经在 .gitignore 里:

application.yml 只放公共配置,敏感 Key 走环境变量或者 application-local.yml,这样即使代码被推到公网也不会泄漏。


二、三种接入方式(亲测可用)

我的项目 pom 里同时引入了三种依赖,方便横向对比它们的代码量与体验差异,下面逐一介绍。

2.1 方式 A:DashScope 原生 SDK(直接 HttpClient)

定位:最贴近 HTTP 协议,无框架抽象。

特点

  • 优点:完全控制请求细节(temperature、top_p、tools 等参数都能精确调)
  • 缺点:写 30 行代码才能完成一次基础对话;没有 ChatMemory、自动重试、工具调用这些"开箱即用"的能力
  • 适用:底层调试、学习协议、做协议封装层

2.2 方式 B:Spring AI Alibaba(我主力使用)

定位 :Spring 生态的标准做法。框架抽象 + 自动装配

配置文件application-local.yml):

特点

  • 优点:ChatClient 封装了所有 HTTP 细节;Advisor 链可以横切插入记忆、日志、RAG、工具调用;和 Spring Boot 项目天然融合
  • 缺点:要学 Spring AI 抽象(ChatModel / ChatClient / Advisor),新概念不少
  • 适用:Spring Boot 项目首选,尤其是要做记忆、RAG、工具调用等复合场景

Spring AI 1.1.x 注意点

  • ChatMemory 的 API 改了:new InMemoryChatMemory() 已经删除,要用 MessageWindowChatMemory.builder().chatMemoryRepository(new InMemoryChatMemoryRepository()).maxMessages(10).build()
  • 老的 CallAroundAdvisor → 新的 CallAdvisor,方法名 aroundCalladviseCall
  • 很多教程(基于 1.0.x)照搬到 1.1.x 会编译报错,跟着 1.1.x 的文档/源码走别照搬旧教程

2.3 方式 C:LangChain4j(社区活跃)

定位:Java 生态最成熟的 LLM 框架之一,社区驱动。

特点

  • 优点:API 设计直观;社区生态丰富(工具链、向量库、Agent 框架齐全);跨模型切换方便
  • 缺点:不直接和 Spring 集成(虽然有 langchain4j-spring-boot-starter,但和 Spring AI 的契合度不如 Spring AI Alibaba);文档质量参差
  • 适用:想用 LangChain 完整生态(LangSmith、LangGraph),或者非 Spring 项目

三、横向对比

3.1 五个维度对比

|------------------------------|------------------|--------------------|----------------------|
| 维度 | DashScope 原生 SDK | Spring AI Alibaba | LangChain4j |
| 代码量(一次对话) | 30+ 行 | 10 行 | 8 行 |
| 学习曲线 | 低(会 Java 即可) | 中(要学 Spring AI 抽象) | 中(要学 LangChain4j 概念) |
| 和 Spring Boot 集成 | 需自己封装 | 原生 | 需额外 starter |
| ChatMemory / RAG / Tools | 全部手写 | 开箱即用 | 开箱即用 |
| 多模型切换成本 | 改每个调用点 | 改 yml 一个字段 | 改 builder 一个字段 |
| 国内社区活跃度 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 中文文档 | 官方中文 | 官方中文 + 社区教程 | 英文为主 |
| Debug 友好度 | 高(直接看 HTTP) | 中(框架封装多层) | 中 |

3.2 关键差异图示

三种方式最后都打到同一个 API 平台,区别只在客户端框架


四、我的选型建议

4.1 校招 / 简历项目

强烈推荐 Spring AI Alibaba(方式 B),理由:

  1. 契合度最高:你既然用 Spring Boot 做后端项目,Spring AI 是最自然的选择
  1. 面试官熟:Spring 是 Java 面试必考,Spring AI 是新加分项
  1. 教程资源多:B 站、知乎、掘金等平台有大量 Spring AI 中文资料
  1. 企业实际在用:阿里内部、滴滴、字节多个团队都在用 Spring AI 体系

4.2 学习路径建议

4.3 什么时候用 LangChain4j

  • 你想用 LangGraph(多 Agent 工作流)
  • 你用非 Spring 框架(Vert.x、Quarkus)
  • 你要做跨语言复用(LangChain4j 有 Kotlin 版本)

4.4 什么时候直接用 SDK

  • 你要做的功能非常简单(一次问答 + 自定义 UI)
  • 你想深入理解 HTTP 协议和模型参数
  • 你要做底层封装(比如自己写框架)

五、我踩过的坑(节省你 3 小时)

5.1 配置文件 Key 泄漏

5.2 Spring AI 版本差异

网上教程版本和当前版本 API 不一致,编译报红先怀疑是版本问题

|------------------------------|-----------------------------------------------|
| 旧教程 1.0.x | 当前版本 1.1.x |
| CallAroundAdvisor | CallAdvisor |
| aroundCall | adviseCall |
| chain.nextAroundCall() | chain.nextCall() |
| new InMemoryChatMemory() | MessageWindowChatMemory.builder()...build() |
| ChatMemory.CONVERSATION_ID | 同一个名(这个没变,但 IDE 索引问题偶尔会找不到) |

5.3 mvnw wrapper jar 丢失

./mvnw 报"找不到主类"------99% 是 .mvn/wrapper/maven-wrapper.jar 没提交到 git。用 IDEA 的 Maven 面板绕过这个问题,别死磕命令行。

5.4 每次启动烧一次 API 调用

注意:被 @Component 注解的 Bean,Spring 启动时会执行构造方法。如果你写了 new ChatClient(...) 然后构造里直接 .call().content()那一次也会真的调 API 。解决办法:要么别在构造里调,要么用 @PostConstruct 标记真正需要初始化的逻辑。


六、最后一句话

不要纠结"哪种最好",先用 Spring AI Alibaba 跑通第一个 demo,再回头看其他两种方式,会突然理解它们存在的意义。AI 框架的抽象层级差异,只有用过才能体会。

祝你也早日跑通第一个 AI 对话 😊


实践来源:AI 应用开发实战项目 学习资料:Spring AI Alibaba 官方文档

相关推荐
R²AIN SUITE1 小时前
2026企业级AI Agent开发平台怎么选?RAG知识库到工作流编排的四层架构拆解
人工智能·架构
延凡科技1 小时前
建筑节能新视角:智慧冷站的数字化实践
java·人工智能·能源·暖通
zzzll11111 小时前
RAG(检索增强生成)会不会消亡?
人工智能·深度学习·机器学习
鹿鸣天涯1 小时前
Hugging Face AI开源平台学习入门
人工智能
Htr_1 小时前
Reflexio 使用指南:让 AI 智能体从每次交互中持续学习
人工智能·学习·交互
leoZ2311 小时前
第 7 篇:进阶——校验、联动、列表页
开发语言·前端·javascript·vue.js·人工智能·目标检测·ecmascript
临沂GEO1 小时前
芝麻开门GEO|AI数字化新趋势,助力企业线上长效增长
大数据·人工智能·python
雷焰财经1 小时前
美国推动“轻监管”AI路线:AI发展的速度与安全边界将如何平衡?
人工智能·安全·机器学习