在大模型 Agent 发展浪潮下,如何通过模型驱动外部工具调用(Tool Calling)已成为构建智能业务系统的关键能力。本文将手把手带你通过 Spring AI + MCP(Model Context Protocol)+ DeepSeek-R1-7B 打造一个可落地的企业级智能 Agent。
项目背景与架构设计
技术选型
- Spring AISpring 官方推出的 AI 接入框架,支持 LangChain、MCP、RAG 等能力;
- MCP(Model Context Protocol)模型与工具之间通信的协议桥梁;
- DeepSeek-R1-7B国产高性能开源大模型,已支持 Chat Completion、Tool Calling 接口;
- Ragflow用作 RAG 架构引擎(可选);
系统功能
- 用户向模型提问
- 模型判断是否调用工具(如数据库查询)
- MCP 注册的工具服务完成任务
- 模型生成最终响应
环境准备
安装依赖
复制# Spring Boot 项目依赖 spring-boot-starter spring-ai-spring-boot-starter # MCP 依赖 spring-ai-mcp-starter
本地部署 DeepSeek-R1-7B 模型
推荐使用 vLLM 启动 DeepSeek-R1-7B 模型服务:
复制pip install vllm
python -m vllm.entrypoints.openai.api_server \
--model deepseek-ai/deepseek-llm-7b-chat \
--tokenizer deepseek-ai/deepseek-llm-7b-chat \
--port 8000构建 Spring AI MCP 工具服务
示例业务:产品信息查询
复制@Service
public class ProductService {
@Tool(name = "query-product", description = "根据产品ID获取产品信息")
public String getProductById(@ToolParam(description = "产品ID") String id) {
// 模拟数据库查询
return "产品ID:" + id + ",价格:99 元";
}
}注册 MCP 工具
复制@Configuration
public class MCPToolConfig {
@Bean
public ToolCallbackProvider toolCallbackProvider(ProductService productService) {
return MethodToolCallbackProvider.builder()
.toolObjects(productService)
.build();
}
@Bean
public AiServices aiServices(OpenAiChatClient client, ToolCallbackProvider provider) {
return new AiServices(client, provider);
}
}模型端配置(Ragflow 示例)
在 ragflow.config.yaml 中配置模型地址及 MCP 工具启用:
复制llm:
type: openai
openai_api_base: http://localhost:8000/v1
openai_api_key: sk-no-need
model_name: deepseek-chat
tool_choice: auto
agent:
name: deepseek-agent
mcp:
enabled:true
tool_autoload:true
servers:
-id: product-mcp
command: java
args:["-jar","spring-mcp.jar"]
description:"产品信息查询服务"前端调用(可选)
复制<form id="askForm">
<input type="text" name="query" placeholder="请输入问题"/>
<button type="submit">提交</button>
</form>
<script>
document.getElementById('askForm').onsubmit=asyncfunction(e){
e.preventDefault();
const query = e.target.query.value;
const resp =awaitfetch('/agent/ask',{
method:'POST',
headers:{'Content-Type':'application/json'},
body:JSON.stringify({ query })
});
const result =await resp.text();
alert(result);
}
</script>测试效果
用户输入:
复制查询产品ID为 123 的信息
输出结果:
复制产品ID:123,价格:99 元
模型会自动触发 query-product 工具,无需用户指定,展示 Agent 工具能力。
总结与实践建议
模块 | 技术 | 说明 |
模型推理 | DeepSeek-R1-7B | Tool Calling 支持良好 |
工具服务 | Spring AI MCP | 快速构建工具 API |
调度管理 | Ragflow | 可选,增强上下文能力 |
推荐实践:
- 将 MCP 工具封装为微服务,提高可复用性
- 使用数据库、搜索引擎作为 Agent 工具数据源
- 在企业应用中使用 Spring Boot + MCP 拓展模型业务边界