跳到主要内容

🌟 OpenAPI Tool Servers

这个仓库提供了一组参考实现,帮助开发者以简单且安全的方式,把外部工具和数据源集成进 LLM agent 与工作流。它使用业界广泛采用的 OpenAPI 规范 作为标准协议,因此学习成本和接入成本都很低。

借助 OpenAPI,你不需要再学习一套专有或陌生的通信协议。如果你已经会写 REST API,或者已经在使用 OpenAPI,那么你几乎可以直接开始构建或接入工具服务器。

为什么选择 OpenAPI

  • 成熟标准:OpenAPI 是经过大量生产环境验证的 API 标准
  • 不重复造轮子:不用再为专有协议写额外文档或适配层
  • 易于集成与托管:既可以本地跑,也可以部署到外部服务
  • 安全基础扎实:天然建立在 HTTP/REST、HTTPS、OAuth、JWT、API Key 等成熟方案上
  • 长期稳定:社区广泛采用,演进路径清晰

局限性

相较于原生 Python Tools,OpenAPI 工具在扩展 OPL 数据空间时有两个重要限制:

  • 只支持单向事件:可以通过 REST 端点发出状态更新、通知等 单向事件。 OPL 数据空间会自动传递 X-Open-WebUI-Chat-IdX-Open-WebUI-Message-Id 头。但像“要求用户输入”或“请求确认”这样的交互事件,只有原生 Python 工具才支持。
  • 不支持流式输出:Tool 响应是完整结果返回,而不是 token-by-token streaming。

如果你的工具需要复杂的交互 UI 反馈,例如确认框、输入框,优先考虑实现为 原生 Python Tool

快速开始

可以直接从 servers/ 目录下的参考实现开始,默认示例基于 FastAPI,你也可以把它们改造成自己的技术栈,例如 FastAPI、FastOpenAPI 或任何 OpenAPI 兼容框架。

git clone https://github.com/open-webui/openapi-servers
cd openapi-servers

用 Bash 直接启动

cd servers/filesystem
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --reload

启动后,filesystem server 会在 http://localhost:8000 可访问,文档页通常也在同一路径下的 /docs

用 Docker 启动

如果安装了 Docker Compose:

docker compose up

服务默认可通过以下地址访问:

  • Filesystem: http://localhost:8081
  • Memory: http://localhost:8082
  • Time Server: http://localhost:8083

之后,把这些 URL 填给支持 OpenAPI 的客户端或 AI agent 即可。

OPL 数据空间社区

  • 通用讨论、技术交流和公告可见 Community Discussions
  • 有建议或反馈,欢迎直接提 issue