restai
统一抽象多LLM提供商的AIaaS平台,支持Agent、RAG知识库与多模态生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一抽象多LLM提供商的AIaaS平台,支持Agent、RAG知识库与多模态生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在企业级 AI 应用落地的过程中,开发团队常常面临一个尴尬的局面:本地有 Ollama 和 vLLM 可以跑开源模型,对外又需要调用 OpenAI GPT-4o、Anthropic Claude 等商业模型,两套接口完全不一样好不容易接好了一个模型,换个供应商又要重写一遍。更别说还要自己做 RAG、向量存储、提示词版本管理、Agent 工具调用、多模态生成……这些能力各自都有成熟的库,但把它们串联起来变成一个可用的产品,工作量绝不亚于从头开发一个中台。
RESTai(Repository: apocas/restai)正是为了解决这个问题而诞生的。它的作者 Pedro Dias 是一名长期活跃在 AI 工程领域的开发者,他从自己的实际需求出发,用 FastAPI + LangChain + LangChain-index(也就是后来的 LlamaIndex)构建了一套统一抽象层,让不同 LLM 提供商(OpenAI、Anthropic、Google/Gemini、Azure OpenAI、Ollama、vLLM 等)在底层可以无缝切换,而上层业务代码完全不需要改动。RESTai 不是一个简单的 LLM 封装库,而是一个完整的 AIaaS(AI as a Service)平台,自带 Web UI、多租户认证、RAG 知识库、Agent 执行引擎、多模态生成(图片/音频)、数据分析和计费系统。
RESTai 的设计哲学是「一处配置,多处使用」。在管理后台配置好 OpenAI API Key 或 Ollama 地址后,所有项目(Project)都可以共享这些 LLM 提供商,无需在每个项目里重复设置。项目可以是三种类型:Agent(带工具调用的对话智能体)、RAG(检索增强生成知识库问答)和 Blockly(基于 Blockly 可视化编程的 AI 流程编排)。

图1:RESTai 项目管理界面,支持 Agent/RAG/Blockly 三种项目类型
RESTai 内置了 40+ 种开箱即用的 Agent 工具,覆盖信息检索( DuckDuckGo 搜索、Wikipedia 查询、IP 地理位置、Whois 查询)、内容生成(图片绘制、邮件发送、Telegram/WhatsApp 消息推送)、数据处理(Excel 解析、URL 内容抓取、Selenium 浏览器自动化)、系统操作(终端命令执行、SSH 连接)等场景。开发者还可以通过 MCP(Model Context Protocol)协议接入更多第三方工具,甚至直接创建自定义 Routine(工作流脚本)。

图2:RESTai Agent 对话界面,支持流式输出和多模态交互
对于需要基于私域知识进行问答的场景,RESTai 内置了完整的 RAG 管道。支持多种向量数据库(ChromaDB、Pinecone、Weaviate、PostgreSQL/pgvector),文档解析支持 PDF、Word、Excel、PPT、网页 URL 等多种格式。LlamaIndex 在底层负责索引构建和检索,tiktoken 用于精确的 token 预算控制,避免上下文溢出。

图3:RAG 项目支持多文档解析和向量检索增强
RESTai 提供了一个在线 Playground,无需写任何代码,直接在浏览器里测试 Agent 和 RAG 的效果。对于产品经理或非技术人员来说,这是一个非常友好的验证入口。

图4:Playground 支持在线调试 Agent 提示词和行为
RESTai 自带数据分析面板,可以看到每个项目的对话量、Token 消耗、平均响应时间等关键指标。对于企业用户,还支持基于使用量的计费(Stripe/PayPal 集成)和团队多租户隔离。

图5:内置数据分析面板,支持用量统计和成本追踪
RESTai 的技术选型非常务实:
multiprocessing 实现多 worker 管理,规避 GIL 限制RESTai 的核心创新之一是 agent2 子包。这是一个完全自包含的 ReAct(Reasoning + Acting)风格 Agent 运行时,不依赖 LlamaIndex 的 Agent 实现。作者在 agent2/agent.py(约 15,000 字符)中手写了一个完整的状态机循环,包括:
compression.py)providers.py)tool_adapter.py)react_prompt.py)memory.py)mcp_client.py)这个设计使得 RESTai 在 Agent 能力上完全掌控在自己手里,不受 LlamaIndex 版本更新的影响。
RESTai 的 restai/image/ 和 restai/audio/ 子包实现了完整的生成式 AI 管线:
RESTai 提供完整的多阶段 Dockerfile:
FROM node:lts AS frontend-builder # Node.js 构建 Vue 前端
FROM python:3.12 AS backend-builder # Python 后端,用 uv 管理依赖
FROM python # 最终运行时镜像
docker-compose.yml 集成了 PostgreSQL、Redis 两个可选依赖,通过 YAML 锚点(x-restai-env)实现环境变量复用,确保 Web 服务和定时任务(crons)使用完全相同的数据库密钥。crons 子服务运行独立的定时任务(数据清理、自动充值、内存索引、Slack/Telegram 集成),与主服务共享同一 SQLite 或 PostgreSQL 数据库。
RESTai 的 API 路由按功能域划分在 restai/routers/ 下:
projects/ — 项目 CRUD、对话、RAG 检索、工具管理auth.py — JWT + TOTP 双因子认证、OAuth、LDAP 企业目录embeddings.py — 向量嵌入计算evals.py — Agent 效果评测(基于 deepeval)speech_to_text.py — 语音转文字audio.py / image.py — 多模态生成接口statistics.py — 用量统计teams.py — 团队管理payments.py / payment_webhook.py — Stripe/PayPal 集成RESTai 同时依赖 LangChain 和 LlamaIndex 两个大型框架。这两个库的版本迭代速度非常快,作者需要持续跟进 API 变化。pyproject.toml 中可见大量依赖版本锁定(>=A,<B 形式),说明作者在积极管理兼容性问题,但对于普通用户来说,依赖地狱仍然是潜在风险。
RESTai 的 config.py 超过 21,000 字符,包含数十个配置项。虽然清晰的文档和 Web UI 降低了配置门槛,但对于只需要简单对话功能的用户而言,可能感觉过于「重量级」。
RESTai 内置了丰富的工具(终端命令执行、SSH 连接、浏览器自动化),这些工具在生产环境中需要有严格的权限隔离机制。虽然有团队多租户和 secrets 加密存储,但 Agent 执行高危操作(terminal.py、connect_ssh.py)的能力意味着部署时必须格外小心。
RESTai 的商业版本 restai.cloud 提供了云托管和 SaaS 服务,开源版本和商业版本之间的功能边界需要用户自己评估。
RESTai 代表了一类新兴的开源 AI 中台项目方向:不是做一个又一个分散的工具,而是提供一个统一平台,让不同背景的团队都能以最小的学习成本用上最新的 AI 能力。它的多 LLM 统一抽象、多模态支持、可视化流程编排和完整的运营分析功能,已经覆盖了大多数中小型企业 AI 应用落地的核心需求。
作者 Pedro Dias 持续活跃维护(截至 2026 年 6 月仍在推送更新),GitHub 社区反馈积极。RESTai 特别适合以下场景:
从技术趋势看,RESTai 的 agent2 运行时、自定义 ReAct 循环和 MCP 协议支持,都表明它正在向更自主、更可控的 Agent 平台演进,而非单纯停留在 LLM API 封装层面。这是值得持续关注的方向。