基于 Spring AI + MCP + DeepSeek-R1-7B 構(gòu)建企業(yè)級(jí)智能 Agent 工具調(diào)用系統(tǒng)
在大模型 Agent 發(fā)展浪潮下,如何通過模型驅(qū)動(dòng)外部工具調(diào)用(Tool Calling)已成為構(gòu)建智能業(yè)務(wù)系統(tǒng)的關(guān)鍵能力。本文將手把手帶你通過 Spring AI + MCP(Model Context Protocol)+ DeepSeek-R1-7B 打造一個(gè)可落地的企業(yè)級(jí)智能 Agent。
項(xiàng)目背景與架構(gòu)設(shè)計(jì)
技術(shù)選型
- Spring AISpring 官方推出的 AI 接入框架,支持 LangChain、MCP、RAG 等能力;
- MCP(Model Context Protocol)模型與工具之間通信的協(xié)議橋梁;
- DeepSeek-R1-7B國(guó)產(chǎn)高性能開源大模型,已支持 Chat Completion、Tool Calling 接口;
- Ragflow用作 RAG 架構(gòu)引擎(可選);
系統(tǒng)功能
- 用戶向模型提問
- 模型判斷是否調(diào)用工具(如數(shù)據(jù)庫查詢)
- MCP 注冊(cè)的工具服務(wù)完成任務(wù)
- 模型生成最終響應(yīng)
環(huán)境準(zhǔn)備
安裝依賴
# Spring Boot 項(xiàng)目依賴
spring-boot-starter
spring-ai-spring-boot-starter
# MCP 依賴
spring-ai-mcp-starter
本地部署 DeepSeek-R1-7B 模型
推薦使用 vLLM 啟動(dòng) DeepSeek-R1-7B 模型服務(wù):
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
構(gòu)建 Spring AI MCP 工具服務(wù)
示例業(yè)務(wù):產(chǎn)品信息查詢
@Service
public class ProductService {
@Tool(name = "query-product", description = "根據(jù)產(chǎn)品ID獲取產(chǎn)品信息")
public String getProductById(@ToolParam(description = "產(chǎn)品ID") String id) {
// 模擬數(shù)據(jù)庫查詢
return "產(chǎn)品ID:" + id + ",價(jià)格:99 元";
}
}
注冊(cè) 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:"產(chǎn)品信息查詢服務(wù)"
前端調(diào)用(可選)
<form id="askForm">
<input type="text" name="query" placeholder="請(qǐng)輸入問題"/>
<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>
測(cè)試效果
用戶輸入:
查詢產(chǎn)品ID為 123 的信息
輸出結(jié)果:
產(chǎn)品ID:123,價(jià)格:99 元
模型會(huì)自動(dòng)觸發(fā) query-product 工具,無需用戶指定,展示 Agent 工具能力。
總結(jié)與實(shí)踐建議
模塊 | 技術(shù) | 說明 |
模型推理 | DeepSeek-R1-7B | Tool Calling 支持良好 |
工具服務(wù) | Spring AI MCP | 快速構(gòu)建工具 API |
調(diào)度管理 | Ragflow | 可選,增強(qiáng)上下文能力 |
推薦實(shí)踐:
- 將 MCP 工具封裝為微服務(wù),提高可復(fù)用性
- 使用數(shù)據(jù)庫、搜索引擎作為 Agent 工具數(shù)據(jù)源
- 在企業(yè)應(yīng)用中使用 Spring Boot + MCP 拓展模型業(yè)務(wù)邊界