1、通过优化Tools描述
2、还是必须使用agent来做
3、不同的llm 效果不一样咋解决
还有其他方案么?
1、通过优化Tools描述
2、还是必须使用agent来做
3、不同的llm 效果不一样咋解决
还有其他方案么?
最好用agent。
如果不是,建议重做mcp,制作一个复合工具函数,里面整个原本多个tools的工具。
如果也不想重做,那只能优化工具函数的描述,然后单个对话只调用一次mcp。
其实这个问题是一般的llm,训练的过程中单次对话通常仅调用1次mcp。
如果单次指令调用多个mcp,很容易执行中断
这个技术叫parallel function calling,所谓的parallel不是真的并行,而是一个fc的输出作为另一个fc的输入。以前没有mcp的时候由模型决定fc调用次序,现在亦如此。
回到你的问题
要看你讲的依赖是何种依赖。
若依赖,这种依赖本质只是为了让模型任务完成的质量更高。比如执行sql之前要求先检查sql的,这种可以在sample中给例子。
强依赖,一般是因为本身函数/工具执行过程是有状态的,这种情况可以考虑用单独的缓存来管理这种执行状态,然后工具加入唯一键参数,通过唯一键参数对缓存操作来判断工具调用顺序及状态,如果发现不对,抛出异常,并将这个问题反馈给模型,要求模型调用正确的工具。
当然,最直接的还是直接把强依赖的几个工具,按你自己所需的顺序包成一个大工具。