
goose 如何启用 tool shim 让不支持原生工具调用的模型正常执行工具【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose当你用 goose 搭配某些不支持原生工具调用tool calling的模型时会碰到一个典型现象模型嘴上说要调用某个工具但 goose 并没有真正执行它——它把工具调用以纯文本的形式打印出来了例如functions.shell:0 |tool_call_argument_begin| {...}。goose 提供的tool shim就是为这种情况设计的它拦截模型返回的文本形式工具调用转写成 goose 可执行的规范化 tool call从而让这类模型也能正常驱动 agent 执行动作。tool shim 目前是实验性功能配置项和行为在未来版本中可能变化见 Tool Shim 指南。上图是官方文档给出的 toolshim 工作示意文档示例主模型负责生成回复和文本形式的工具调用本地运行的一个小模型负责把这段输出转成结构化tool_calls最后交给 goose 执行。什么情况下需要启用 tool shim按 Tool Shim 指南 的说法出现以下任一情况时就该启用它会话进行到一半工具突然不生效——模型调用了工具但 goose 没有执行模型输出functions.shell:0 |tool_call_argument_begin| {...}这类纯文本而不是走工具 API你在使用不支持原生工具调用的本地模型Ollama、llama.cpp你的 OpenAI 兼容 provider 路由到会把推理标签think与工具调用混在一起的模型导致解析失败。文档指出大多数本地部署的模型以及一些没有针对结构化 tool calling 做过微调的云端模型都会需要这个 shim。工作原理shim 依赖一个独立的解释模型shim 会拦截模型响应把其中的文本工具调用格式转换为结构化 tool call。它需要一个单独的解释interpreter模型默认使用 Ollama 来承载。这个解释模型与你主对话用的 provider 相互独立——无论你的主模型跑在 Bedrock、自建路由还是任何 OpenAI 兼容端点上shim 都可以本地用 Ollama 做解释。主路径用 Ollama 作为解释后端默认这是文档给出的默认配置前提是Ollama 已安装并在运行。第 1 步拉取默认的解释模型。默认解释模型是mistral-nemoollama pull mistral-nemo第 2 步启用 shim 并启动 gooseexport GOOSE_TOOLSHIMtrue GOOSE_TOOLSHIMtrue goose session启动后模型输出中若出现文本形式的工具调用shim 会将其转成结构化调用执行。如果想换解释模型用GOOSE_TOOLSHIM_OLLAMA_MODEL覆盖export GOOSE_TOOLSHIM_OLLAMA_MODELllama3.2如果主对话用的是自定义 OpenAI 兼容 provider同样适用——shim 始终在本地走 Ollama与主 provider 无关GOOSE_TOOLSHIMtrue \ GOOSE_TOOLSHIM_OLLAMA_MODELllama3.2 \ goose session可选路径用 goose 内置本地推理作为解释后端如果你的 goose 本身就是跑在内置本地推理后端上可以直接用它当解释器不必另起一个 Ollama 实例。此时模型名是必填项——设置GOOSE_TOOLSHIM_MODEL或配置文件中的LOCAL_LLM_MODEL配置键否则 goose 会在启动时报错export GOOSE_TOOLSHIM_BACKENDlocal export GOOSE_TOOLSHIM_MODEL你的本地模型名你的本地模型名需替换为你实际加载的模型名文档示例写作my-model-name。GOOSE_TOOLSHIM_BACKEND的合法取值为ollama默认、local、llama.cpp。一次性带环境变量启动的完整示例GOOSE_TOOLSHIMtrue \ GOOSE_TOOLSHIM_BACKENDlocal \ GOOSE_TOOLSHIM_MODEL你的本地模型名 \ goose session环境变量参考完整变量对照见 environment-variables 文档变量说明默认值GOOSE_TOOLSHIM启用 tool shimtrue或1大小写不敏感falseGOOSE_TOOLSHIM_BACKEND解释后端ollama、local或llama.cppollamaGOOSE_TOOLSHIM_OLLAMA_MODEL用作解释器的 Ollama 模型mistral-nemoGOOSE_TOOLSHIM_MODELlocal 解释后端的模型名使用local后端且未设置LOCAL_LLM_MODEL配置时必填—另外这些开关也可以写进config.yaml而不是导出环境变量。config-files 文档的全局设置表中列出了GOOSE_TOOLSHIMtrue/false默认 false和GOOSE_TOOLSHIM_OLLAMA_MODEL示例配置中对应的写法是GOOSE_TOOLSHIM: true结果验证与常见问题排查文档给出的判断与排查顺序如下shim 已启用但工具仍不执行——先确认解释后端可达Ollama 后端运行ollama list确认 Ollama 在运行、解释模型已拉取Local 后端确认本地推理已配置且设置了模型GOOSE_TOOLSHIM_MODEL或LOCAL_LLM_MODEL未设置时启动会直接失败这本身就是一种快速反馈。会话中途工具突然失效——可能是模型从原生工具调用切换到了文本格式。启用GOOSE_TOOLSHIMtrue并重启会话即可这也是 Ollama 实验文档给出的快速开始路径。解释调用太慢——换一个更小更快的 Ollama 模型export GOOSE_TOOLSHIM_OLLAMA_MODELqwen2.5:3b模型在工具调用前输出推理内容think标签——部分推理模型会把 thinking 标签和工具调用混排导致解析失败。shim 会自动处理这种情况启用后推理内容会从最终消息中剥离无需额外配置。限制tool shim 是实验性功能配置选项与行为在未来版本中可能变化解释模型独立于主对话模型Ollama 后端要求本机有可用且已拉取的解释模型local 后端下缺少模型名设置时启动会失败而不是回退到其他后端。更多背景包括为什么需要 toolshim、以及团队对解释模型微调的规划见 Finetuning Toolshim Models 博客操作细节始终以 Tool Shim 指南 为准。【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考