• v1.0.2 e581c70489

    v1.0.2 Stable

    gavin released this | 7 commits to main since this release

    发布时间: 2025-10-14

    重大功能:MCP 工具调用集成

    本版本实现了完整的 MCP 工具调用功能,AI 可以智能调用 MCP 服务器提供的工具并整合结果。

    核心功能

    ** 智能工具调用**

    • AI 自动识别何时需要调用工具
    • 支持 OpenAI Function Calling 协议
    • 兼容多个 AI 服务商(OpenAI、火山引擎、阿里云等)
    • 完整的多轮对话支持(AI → Tool → AI)

    ** 流式工具执行**

    • 实时显示工具调用进度
    • 流式体验不中断
    • 友好的状态提示:
      • 正在调用工具: [工具名]...
      • 工具执行完成
      • 工具执行失败: [错误信息]
      • 正在生成回复...

    ** 工具格式转换**

    • MCP 工具 → OpenAI Function 格式
    • 自动提取 inputSchema 作为 parameters
    • 支持完整的 JSON Schema 定义

    ️ 技术实现

    服务层改进

    • MCPClientService.getTools() - 获取工具列表
    • chatService.convertToolsToOpenAIFormat() - 格式转换
    • chatService.executeToolCalls() - 工具执行逻辑
    • modelServiceManager.sendChatRequestStream() - 增强工具参数支持

    流式解析增强

    • SSE 流中检测 tool_calls
    • 累积多个流片段中的工具调用数据
    • 正确拼接 function.arguments JSON 字符串
    • 返回完整的工具调用数组

    消息格式支持

    // 工具调用消息
    {
      role: 'assistant',
      content: '',
      tool_calls: [{
        id: '...',
        type: 'function',
        function: { name: '...', arguments: '{}' }
      }]
    }
    
    // 工具结果消息
    {
      tool_call_id: '...',
      role: 'tool',
      name: 'tool_name',
      content: '{...}'
    }
    

    使用方式

    1. 配置 AI 服务 - 在"模型服务"中添加支持函数调用的 AI
    2. 连接 MCP 服务器 - 在"MCP 设置"中添加工具服务器
    3. 选择模型和 MCP - 在对话界面选择
    4. 开始对话 - AI 会自动调用相关工具

    使用示例

    用户: "查询今天北京的天气"
    
    系统:  正在调用工具: get_weather...
          ✅ 工具执行完成
           正在生成回复...
    
    AI: "根据天气数据,今天北京晴天,温度 15-25°C,
         空气质量良好,适合户外活动。"
    

    Bug 修复

    • 修复 MCPClientService 类型导入问题
    • 修复 types.ts 和 types/index.ts 路径冲突
    • 修复 modelServiceManager 返回类型
    • 修复未使用变量警告

    技术细节

    修改的文件

    • /web/src/services/chatService.ts - 工具调用主逻辑
    • /web/src/services/modelServiceManager.ts - 工具参数支持
    • /web/src/services/MCPClientService.ts - 工具列表获取

    新增方法

    • MCPClientService.getTools(serverId) - 获取服务器工具
    • chatService.convertToolsToOpenAIFormat() - 格式转换
    • chatService.executeToolCalls() - 执行工具调用

    改进方法

    • modelServiceManager.sendChatRequestStream() - 支持 tools 参数
    • modelServiceManager.makeChatRequestStream() - 检测和收集 tool_calls

    设计亮点

    1. 无缝集成 - 不改变现有对话流程
    2. 错误恢复 - 工具调用失败不影响对话继续
    3. 类型安全 - 完整的 TypeScript 类型定义
    4. 性能优化 - 流式处理保持响应速度
    5. 用户友好 - 清晰的进度提示

    ⚙️ 配置要求

    AI 服务要求

    • 支持 OpenAI Function Calling 格式
    • 推荐:OpenAI GPT-3.5+, GPT-4+
    • 兼容:火山引擎、阿里云等 OpenAI 兼容服务

    MCP 服务器要求

    • 实现 tools/list 接口
    • 实现 tools/call 接口
    • 提供标准的 inputSchema (JSON Schema)

    相关文档

    升级指南

    # 拉取最新代码
    git pull origin main
    
    # 安装依赖(如有更新)
    cd web && npm install
    
    # 启动开发服务器
    npm run dev
    

    下一步计划

    • 工具调用历史记录
    • 工具执行超时控制
    • 批量工具调用优化
    • 工具调用权限管理
    • 工具调用性能监控

    v1.0.2 - AI + MCP 工具调用,让对话更智能!

    Downloads