unis_sip/docx/prompt.md

140 lines
2.6 KiB
Markdown
Raw Normal View History

你是一个资深 Java 后端工程师,请在当前 Spring BootJava8项目中实现一个完整的 MCP Server并加入“AI 自动选 ToolRAG + Tool Routing”能力。
# 一、基础 MCP 能力(必须实现)
1. 提供统一入口:
POST /mcp
2. 实现 JSON-RPC 2.0
* initialize
* tools/list
* tools/call
3. 返回格式:
{
"jsonrpc": "2.0",
"id": "...",
"result": ...
}
# 二、流式能力(必须)
1. 禁止使用 SseEmitter
2. 使用 HttpServletResponse + OutputStream
3. 实现 chunked streamingwrite + flush
# 三、Tool 注册中心(必须)
实现:
* McpToolRegistry
* register / get / list
Tool结构
* name
* description非常重要用于向量检索
* inputSchema
* handler
# 四、RAG Tool 检索模块(新增重点)
实现一个 ToolRetriever 组件:
1. 构建向量索引(简化实现):
* 使用内存存储 List<ToolEmbedding>
* ToolEmbedding:
* toolName
* description
* embedding(double[])
2. 提供方法:
List<McpTool> retrieve(String query, int topK)
3. embedding 实现(简化):
* 可使用:
* 简单 TF-IDF
* 或 mock embedding字符串相似度
* 不依赖外部服务(保证可运行)
# 五、Tool Router核心
实现 ToolRouter
流程:
1. 接收用户问题 query
2. 调用 ToolRetriever → 获取 topK tools
3. 构建 prompt只包含候选 tools
4. 返回候选 tools 给上层(或直接选)
要求:
* 不允许返回全部 tools
* 默认 topK = 3~5
# 六、tools/call 升级(关键)
当 method = tools/call 时:
1. 如果请求未指定 tool
* 自动触发 ToolRouter
* 选出最优 tool
2. 如果指定 tool
* 直接执行
# 七、默认内置工具
实现:
1. hello
输入name
输出hello xxx
2. meeting.summary
输入text
输出:模拟总结
# 八、架构分层(必须)
* controller
* service
* registry
* retriever新增
* router新增
# 九、扩展能力(必须预留)
1. 支持替换为真实向量数据库(如 Milvus / ES
2. 支持 embedding APIOpenAI / 本地模型)
3. 支持多 MCP Server未来扩展
# 十、输出要求
1. 输出完整代码:
* McpController
* McpService
* McpToolRegistry
* ToolRetriever
* ToolRouter
* ToolEmbedding
* ToolInitializer
* McpRequest
2. 代码必须:
* 可运行
* 无伪代码
* 包含必要注释
* 代码生成目录在ruoyi-sip/src/main/java/com/ruoyi/sip/llm
3. 不要解释,只输出代码