RestAI
人人可用的AI即服务 (AIaaS)。使用简单的REST API创建并调用AI项目。
演示:https://ai.ince.pt 用户名:demo
密码:demo
功能
- 项目:有多种类型的代理(项目),每种代理都有自己的特点。 (rag, ragsql, inference, vision, router, agent)
- 用户:用户代表系统的使用者。用于身份验证和授权(基本认证)。每个用户可能有权访问多个项目。
- LLMs:支持LlamaIndex支持的任何公共LLM,包括Ollama、LiteLLM等支持的本地LLM。
- VRAM:自动VRAM管理。RestAI将管理VRAM的使用,按需自动加载和卸载模型。
- API:API是RestAI的一等公民。所有端点都使用Swagger进行了文档化。
- 前端:提供前端,参见restai-frontend
项目类型
RAG
- 嵌入:您可以使用llamaindex支持的任何嵌入模型。查看嵌入定义。
- 向量存储:支持两种向量存储:
Chroma
和Redis
- 检索:它具有嵌入搜索和评分评估器,可以让您在LLM之前评估嵌入的质量并模拟RAG过程。也支持重新排序,支持ColBERT和基于LLM的重新排序。
- 加载器:您可以使用llamaindex支持的任何加载器。
- 沙盒模式:RAG代理(项目)具有“沙盒”模式,这意味着当提供的问题没有嵌入时,将给出锁定的默认答案。这对于需要在LLM不知道如何回答问题时提供默认答案的聊天机器人非常有用,减少了幻觉。
- 评估:您可以使用deepeval评估您的RAG代理。在RAG端点中使用
eval
属性。
RAGSQL
- 连接:提供MySQL或PostgreSQL连接字符串,它将自动抓取数据库架构,使用表名和列名能够将问题转换为sql并生成响应。
Agent
-
ReAct代理,指定要在项目中使用的工具,代理将确定如何使用它们以实现目标。
-
可以轻松添加新工具。只需在app/llms/tools文件夹中创建一个新工具,RestAI将自动识别。
-
工具:提供您希望代理在该项目中使用的所有工具名称(用逗号分隔)
推理
视觉
- 文本到图像:RestAI支持本地的Stable Diffusion和Dall-E。它具有提示增强功能,内部使用LLM为用户提示增加更多细节。
- 图像到文本:RestAI默认支持LLaVA、BakLLaVA。
- 图像到图像:RestAI支持InstantID。
Stable Diffusion & InstantID
LLaVA
路由器
- 将消息路由到最合适的项目。当您有多个项目并希望将问题路由到最合适的项目时,这非常有用。
- 路由:非常类似于零射ReAct策略,但每个路由都是一个项目。路由器将问题路由到得分最高的项目。当您有多个项目并希望将问题路由到最合适的项目时,这非常有用。
LLMs
- 您可以使用Ollama和/或LlamaIndex支持的任何LLM。
安装
- RestAI使用Poetry管理依赖项。使用
pip install poetry
安装它。
开发
make install
make dev
(在开发模式下启动restai)
生产
make install
make start
Docker
- 根据需要编辑.env文件
docker compose --env-file .env up --build
您可以指定配置文件docker compose --profile redis --profile mysql ....
以包含其他组件,如redis缓存后端或数据库服务器,支持的配置文件如下:
--profile redis
启动并将redis设置为缓存后端--profile mysql
启动并启用MySQL作为数据库服务器--profile postgres
启动并启用Postgres作为数据库服务器
使用容器时,变量MYSQL_HOST和POSTGRES_HOST应与相应服务的名称“mysql”和“postgres”匹配,而不是localhost或127.0.0.1
要删除所有内容或特定容器,请不要忘记将所需的配置文件传递给compose命令,例如:
- 删除所有内容
docker compose --profile mysql --profile postgres down --rmi all
- 删除单个数据库卷
docker compose --profile mysql down --volumes
注意:本地缓存卷也将被删除,因为它位于主服务中,而不在任何配置文件中
API
前端
- 源代码:https://github.com/apocas/restai-frontend。
make install
会