Yuxi-Know icon indicating copy to clipboard operation
Yuxi-Know copied to clipboard

Error: 自定义供应商(Xinference/sgLang)的模型不能进行工具调用

Open doit-5618 opened this issue 4 months ago • 5 comments

1️⃣ 描述一下问题

目前采用3个模型供应商api: 云:硅基流动 本地:Xinference、sglang 其中,硅基流动的模型,均可以进行工具调用,且询问可以使用哪些工具也会将已经配置的工具list进行输出。但是本地部署的模型在询问相同问题,不能显示已经配置的工具list。 本地部署模型均支持工具调用。

以下对话,我只配置了一个计算器工具。 硅基流动、sglang:(硅基流动的功能正常。sglang不能识别到配置的工具。) Image Xinference:(能识别到配置的工具,但不能调用。只会输出Schema) Image

doit-5618 avatar Dec 22 '25 03:12 doit-5618

为了严谨,新开一个会话,进行sglang部署的模型对话。仍然无法输出工具信息...

Image

doit-5618 avatar Dec 22 '25 03:12 doit-5618

请问,这可能是哪里存在问题?

doit-5618 avatar Dec 22 '25 03:12 doit-5618

目前自定义供应商走的都是 langchain 的 chatopenai 这个类,可能会有没适配兼容的地方,可以尝试调整为 chatdeepseek

https://github.com/xerrors/Yuxi-Know/blob/abf4414a0f7291e83381813e63d2911892beb6ca/src/agents/common/models.py#L30-L57

不够也不排除是部署端的问题,建议使用 open webui 或者 chatbox 等先验证一下模型部署的本身是否支持工具调用。如果在别的软件中能够正常调用,则说明是和 langchain 的适配问题。

xerrors avatar Dec 22 '25 03:12 xerrors

目前自定义供应商走的都是 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工具调用。

Image 使用了ChatDeepSeek类后,仍然没有解决问题。 Image Image

doit-5618 avatar Dec 22 '25 05:12 doit-5618

目前还没有找到可行的方法,我本地也没有 这俩环境(Xinference/sgLang)😂

甚至我都没在网上找到 langchain 和 sglang 适配的相关文章

xerrors avatar Dec 22 '25 17:12 xerrors