环境准备
- 环境要求:
- JDK 17+
- Maven 3.8+
- 选择你的 LLM 提供商并获取 API-KEY(如阿里云百炼的 DashScope)
- Maven 依赖:
<dependencies>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-agent-framework</artifactId>
<version>1.1.0.0-RC2</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
<version>1.1.0.0-RC2</version>
</dependency>
</dependencies>
DashScope API 介绍
DashScopeApi 是阿里云推出的一个 大模型(LLM)统一调用接口/平台,主要用于调用通义千问(Qwen)及相关 AI 能力,让开发者可以方便地在应用中接入大模型能力。
常用的类型名:
| 参数名 | 作用 |
|---|---|
| apiKey | 密钥 |
| baseUrl | api |
实例代码:
package com.spring.ai.alibaba.agent.test;
import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel;
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ReactAgentModelChatConfig {
@Bean(name = "dashScopeApiTest")
public DashScopeApi dashScopeApiTest() {
return DashScopeApi.builder()
.apiKey("sk-xxxxx") // 请替换为实际密钥
.build();
}
@Bean(name = "dashScopeChatModelTest")
public ChatModel dashScopeChatModelTest(DashScopeApi dashScopeApi) {
return DashScopeChatModel.builder()
.dashScopeApi(dashScopeApi)
.defaultOptions(DashScopeChatOptions.builder()
.maxToken(1024)
.temperature(0.7)
.build())
.build();
}
}
ReactAgent 简介
ReactAgent 是 Spring AI Alibaba 中提供的一个核心 Agent 实现类,它实现了经典的 ReAct 模式 (Reasoning+Acting) 模型。
- Reason(推理/思考):分析当前情况,规划下一步
- Act(行动):调用工具 (Tool) 获取外部信息
常用的构建和使用方法(基于 builder 模式):
| 方法 / 属性 | 作用 |
|---|---|
.name | Agent 的名字 |
.model(ChatModel) | 注入大模型 |
.tools | 添加工具(支持 FunctionToolCallback、自定义 Tool 等) |
.hooks | 添加钩子(如 ModelCallLimitHook、LoggingHook、HumanInTheLoopHook) |
.systemPrompt(String) 或 .instruction(String) | 系统提示词 |
.maxIterations(int) | 最大迭代轮次(防止无限循环) |
.savers(ChatMemory) | 对话记忆(短期/长期记忆,支持向量存储) |
.outputSchema | 使用 BeanOutputConverter 生成时提供类型安全 |
.Interceptors | interceptors 提供更粒度的控制,可以拦截和修改模型调用和工具执行 |
.outputType | 类型安全,适合结构固定的场景(推荐) |

