unis_sip/docx/prompt.md

140 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

你是一个资深 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. 不要解释,只输出代码