Error: 自定义供应商(Xinference/sgLang)的模型不能进行工具调用
1️⃣ 描述一下问题
目前采用3个模型供应商api:
云:硅基流动
本地:Xinference、sglang
其中,硅基流动的模型,均可以进行工具调用,且询问可以使用哪些工具也会将已经配置的工具list进行输出。但是本地部署的模型在询问相同问题,不能显示已经配置的工具list。
本地部署模型均支持工具调用。
以下对话,我只配置了一个计算器工具。
硅基流动、sglang:(硅基流动的功能正常。sglang不能识别到配置的工具。)
Xinference:(能识别到配置的工具,但不能调用。只会输出Schema)
为了严谨,新开一个会话,进行sglang部署的模型对话。仍然无法输出工具信息...
请问,这可能是哪里存在问题?
目前自定义供应商走的都是 langchain 的 chatopenai 这个类,可能会有没适配兼容的地方,可以尝试调整为 chatdeepseek
https://github.com/xerrors/Yuxi-Know/blob/abf4414a0f7291e83381813e63d2911892beb6ca/src/agents/common/models.py#L30-L57
不够也不排除是部署端的问题,建议使用 open webui 或者 chatbox 等先验证一下模型部署的本身是否支持工具调用。如果在别的软件中能够正常调用,则说明是和 langchain 的适配问题。
目前自定义供应商走的都是 langchain 的 chatopenai 这个类,可能会有没适配兼容的地方,可以尝试调整为 chatdeepseek
Yuxi-Know/src/agents/common/models.py
Lines 30 to 57 in abf4414
if provider in ["openai", "deepseek"]: model_spec = f"{provider}:{model}" logger.debug(f"[offical] Loading model {model_spec} with kwargs {kwargs}") return init_chat_model(model_spec, **kwargs)
elif provider in ["dashscope"]: from langchain_deepseek import ChatDeepSeek
return ChatDeepSeek( model=model, api_key=SecretStr(api_key), base_url=base_url, api_base=base_url, stream_usage=True, )else: try: # 其他模型,默认使用OpenAIBase, like openai, zhipuai from langchain_openai import ChatOpenAI
return ChatOpenAI( model=model, api_key=SecretStr(api_key), base_url=base_url, stream_usage=True, ) except Exception as e: raise ValueError(f"Model provider {provider} load failed, {e} \n {traceback.format_exc()}")不够也不排除是部署端的问题,建议使用 open webui 或者 chatbox 等先验证一下模型部署的本身是否支持工具调用。如果在别的软件中能够正常调用,则说明是和 langchain 的适配问题。
感谢回复。我在cherry studio中验证了本地Xinference模型能够顺利完成MCP工具调用。
目前还没有找到可行的方法,我本地也没有 这俩环境(Xinference/sgLang)😂
甚至我都没在网上找到 langchain 和 sglang 适配的相关文章