继上次mcp实战分享后,留了个尾巴,没有和实际业务场景结合在流中实时响应。今天抽空完善了下代码,将其植入到了流的响应流程中。代码篇幅有点多,分享我最终优化后的流程图吧。
优化项
为了避免工具过多附加到上下文浪费token, 自己封装了规则引擎,根据业务场景和规则进行匹配,如果匹配成功就初始化对应的client,并将该tool对应的schema追加到当前的上下文中,大模型会根据自己的意图识别来决定要不要使用当前工具,如果返回使用工具那么由当前client发起工具调用,将调用结果返回给用户。
不足
- • 一次只能处理一个工具
- • 调工具时工具的输出无法实时返回给用户,假如工具是调大模型完整某个任务,期望也能实时返回时目前不支持。
- • Rust版本的MCP服务不能同时注册多个结构做拆分,只能将所有的服务都放到一个结构体的函数中。
最后附测试的录屏供大家参考:
A2A目前还没时间去实践。留待后续继续吧。至少目前把MCP搞懂了。
另外: MCP的SDK目前还不完善。用了MCP就要做好跟着版本一起优化的准备。