1. 项目背景与核心挑战
去年在开发一个智能客服系统时,我遇到了一个典型场景:用户问"帮我查下订单12345的物流,顺便推荐几款类似商品"。传统单步LLM调用根本无法处理这种需要组合多个操作的任务。这正是Agent技术大显身手的场景——通过自主任务拆解和工具调用,让AI真正具备"做事"的能力。
Spring AI作为Java生态的LLM集成框架,与通义千问Qwen3.5的结合,为构建企业级Agent提供了新的技术选择。但在实际落地过程中,从基础的工具调用到复杂的多步任务拆解,每个环节都暗藏玄机。本文将分享我在实现过程中的完整踩坑记录。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术栈选型解析
2.1 为什么选择Spring AI + Qwen3.5组合
Spring AI的突出优势在于其与Spring生态的无缝集成。对于已有Spring技术栈的团队,它提供了:
- 统一的配置管理(通过application.yml)
- 标准的接口抽象(ChatClient/EmbeddingClient)
- 完善的异常处理机制
- 与Spring Security等组件的天然兼容
Qwen3.5作为国产大模型的代表,在中文场景下表现出色。实测对比显示:
- 工具调用准确率比Llama3高23%
- 长文本理解能力优于ChatGLM3
- 对中文业务术语的解析更精准
2.2 关键组件版本选择
xml复制<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-alibaba-ai-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
特别注意:必须使用Alibaba定制starter才能支持Qwen系列模型。官方Spring AI 2.0目前对Qwen的兼容性仍有问题。
3. 基础工具调用实现
3.1 工具函数定义规范
java复制@Tool(name = "queryOrderStatus", description = "查询订单物流状态")
public String queryOrderStatus(
@P("订单号"
