unis_sip/docx/prompt.md

2.6 KiB
Raw Blame 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:

      • toolName
      • description
      • embedding(double[])
  2. 提供方法: List 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. 不要解释,只输出代码