在大模型 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 拓展模型业务边界