Open WebUI 工具调用详解:一句提问背后,模型替你调了几次 API?
Open WebUI 工具调用详解一句提问背后模型替你调了几次 API【免费下载链接】open-webuiUser-friendly AI Interface (Supports Ollama, OpenAI API, ...)项目地址: https://gitcode.com/GitHub_Trending/op/open-webui给 Open WebUI 配上一个支持函数调用的模型后你在聊天框里敲下的每句话都可能直接触发一次真实的外部调用。下面从一句具体提问出发拆开这次调用背后的完整链路再演示怎么把自己写的接口挂成工具让模型替你调。从一句提问到一次 API 调用你问杭州今天天气如何 这句话发出去时并不孤单它会捎上当前会话可见的工具清单以及每个工具附带的 OpenAPI 描述。模型对照描述做判断该不该调工具、调哪一个、参数填什么。判断的结果不是一段文字而是一条结构化的调用指令指明函数名和入参。屏幕上的表现是回答先停顿一下出现一次工具调用随后才给出成句的答复。停顿对应的是后端的一小段工作按指令执行对应工具的 Python 代码把返回值交回模型模型再基于返回值组织出最终那句杭州今天晴18 度。整条链路里你只做了一次决定——提问其余的选工具、填参数、执行、复述都是系统内部的事。最小可运行环境把 Open WebUI 跑起来只需要两条命令git clone https://gitcode.com/GitHub_Trending/op/open-webui docker compose up -d第一条把仓库拉到本地第二条在后台起容器。等首页打开后真正决定工具调用能不能用的是模型侧所选模型本身要支持函数调用OpenAI 兼容接口大多支持Ollama 侧则取决于具体模型。原生函数调用生效后内置工具集代码执行、网页搜索、记忆管理这些会自动注入每个会话不需要你逐个开启。自定义工具怎么挂进入侧边栏 Workspace 下的 Tools 页点 New Tool起个名字把 Python 函数贴进代码框再把它的 OpenAPI 规格贴进 specs。规格的最小形态长这样async def get_weather(city: str) - str: # 这里接你的真实 API return f{city}晴18°C SPEC { type: function, function: { name: get_weather, parameters: { type: object, properties: {city: {type: string}}, required: [city], }, }, }保存后这个工具就出现在你的工具列表里。再问天气类问题模型自己会把 get_weather 挑出来并填好 city 参数。它凭什么挑对就凭你写的那段描述和参数说明描述含糊调用就靠运气。另外两件事要知道。工具代码加载后有缓存改完保存记得刷新页面必要时重启后端再验证。第二条路是不写 Python在设置里添加工具服务器Tool Server填入现成系统的 OpenAPI 文档地址或一个 MCP 端点服务上暴露的工具会自动出现在列表里直接调用。权限与超时两条硬规则权限方面工具创建后默认私有只有创建者和管理员能用没被授权的人在自己的聊天里根本看不到它。要给其他团队分发就在工具设置里把相应用户组加进授权列表一套部署即可服务多个团队各用各的工具。超时方面工具服务器的请求走全局 HTTP 超时由环境变量 AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER 控制向服务器拉取工具数据的请求默认 10 秒AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA。慢接口要么在工具内部压缩耗时要么把一个胖工具拆成几个小入口。翻车先查哪三件事模型不调工具只口头回答先确认模型支持函数调用改完工具代码不生效有缓存刷新页面或重启后端别人看不到你建的工具默认私有给用户组授权三条里最容易漏的是第一条的后续动作确认支持后把描述改写成何时该用 返回什么的写法选错率会明显下降。工具数量涨上来之后也同理保持每个工具只做一件事同类能力合并成一个带参数的入口。五个关键文件backend/open_webui/models/tools.py工具的数据模型存源码、OpenAPI 规格、阀门参数与授权。backend/open_webui/routers/tools.py工具增删改查的接口层权限校验也在这里。backend/open_webui/utils/tools.py执行层加载工具代码、发起调用、与工具服务器通信。backend/open_webui/tools/builtin.py内置工具集代码执行、网页搜索、记忆读写都在其中。src/lib/apis/tools/index.ts前端工具页面增删查改时调用的 API 封装。延伸阅读README.md 里有完整的部署与环境变量说明。【免费下载链接】open-webuiUser-friendly AI Interface (Supports Ollama, OpenAI API, ...)项目地址: https://gitcode.com/GitHub_Trending/op/open-webui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →