diff --git a/deploy/docker/docker-compose-milvus.yml b/deploy/docker/docker-compose-milvus.yml index 3ccbc97dd..2914ab87a 100644 --- a/deploy/docker/docker-compose-milvus.yml +++ b/deploy/docker/docker-compose-milvus.yml @@ -137,6 +137,10 @@ services: - FE_DOMAIN= # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。 - DEFAULT_ROOT_PSW=1234 + # AI Proxy 的地址,如果配了该地址,优先使用 + - AIPROXY_API_ENDPOINT=http://aiproxy:3000 + # AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY + - AIPROXY_API_TOKEN=aiproxy # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。 - OPENAI_BASE_URL=http://oneapi:3000/v1 # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改) @@ -170,48 +174,49 @@ services: volumes: - ./config.json:/app/data/config.json - # oneapi - mysql: - image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云 - # image: mysql:8.0.36 - container_name: mysql - restart: always - ports: - - 3306:3306 - networks: - - fastgpt - command: --default-authentication-plugin=mysql_native_password - environment: - # 默认root密码,仅首次运行有效 - MYSQL_ROOT_PASSWORD: oneapimmysql - MYSQL_DATABASE: oneapi - volumes: - - ./mysql:/var/lib/mysql - oneapi: - container_name: oneapi - image: ghcr.io/songquanpeng/one-api:v0.6.7 - # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云 - ports: - - 3001:3000 + # AI Proxy + aiproxy: + image: 'ghcr.io/labring/sealos-aiproxy-service:latest' + container_name: aiproxy + restart: unless-stopped depends_on: - - mysql + pgsql: + condition: service_healthy + ports: + - '3002:3000/tcp' networks: - fastgpt - restart: always environment: - # mysql 连接参数 - - SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi - # 登录凭证加密密钥 - - SESSION_SECRET=oneapikey - # 内存缓存 - - MEMORY_CACHE_ENABLED=true - # 启动聚合更新,减少数据交互频率 - - BATCH_UPDATE_ENABLED=true - # 聚合更新时长 - - BATCH_UPDATE_INTERVAL=10 - # 初始化的 root 密钥(建议部署完后更改,否则容易泄露) - - INITIAL_ROOT_TOKEN=fastgpt + - ADMIN_KEY=aiproxy # 对应 fastgpt 里的AIPROXY_API_TOKEN + - LOG_DETAIL_STORAGE_HOURS=1 # 日志详情保存时间(小时) + - TZ=Asia/Shanghai + - SQL_DSN=postgres://postgres:aiproxy@pgsql:5432/aiproxy + - DISABLE_MODEL_CONFIG=true + healthcheck: + test: ['CMD', 'curl', '-f', 'http://localhost:3000/api/status'] + interval: 5s + timeout: 5s + retries: 10 + + # AI Proxy + pgsql: + # image: "postgres:latest" + image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云 + restart: unless-stopped + container_name: pgsql volumes: - - ./oneapi:/data + - ./pgsql:/var/lib/postgresql/data + networks: + - fastgpt + environment: + TZ: Asia/Shanghai + POSTGRES_USER: postgres + POSTGRES_DB: aiproxy + POSTGRES_PASSWORD: aiproxy + healthcheck: + test: ['CMD', 'pg_isready', '-U', 'postgres', '-d', 'aiproxy'] + interval: 5s + timeout: 5s + retries: 10 networks: fastgpt: diff --git a/deploy/docker/docker-compose-pgvector.yml b/deploy/docker/docker-compose-pgvector.yml index 9b034a7ab..c403741bf 100644 --- a/deploy/docker/docker-compose-pgvector.yml +++ b/deploy/docker/docker-compose-pgvector.yml @@ -95,6 +95,10 @@ services: - FE_DOMAIN= # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。 - DEFAULT_ROOT_PSW=1234 + # AI Proxy 的地址,如果配了该地址,优先使用 + - AIPROXY_API_ENDPOINT=http://aiproxy:3000 + # AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY + - AIPROXY_API_TOKEN=aiproxy # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。 - OPENAI_BASE_URL=http://oneapi:3000/v1 # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改) @@ -127,48 +131,49 @@ services: volumes: - ./config.json:/app/data/config.json - # oneapi - mysql: - # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云 - image: mysql:8.0.36 - container_name: mysql - restart: always - ports: - - 3306:3306 - networks: - - fastgpt - command: --default-authentication-plugin=mysql_native_password - environment: - # 默认root密码,仅首次运行有效 - MYSQL_ROOT_PASSWORD: oneapimmysql - MYSQL_DATABASE: oneapi - volumes: - - ./mysql:/var/lib/mysql - oneapi: - container_name: oneapi - image: ghcr.io/songquanpeng/one-api:v0.6.7 - # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云 - ports: - - 3001:3000 + # AI Proxy + aiproxy: + image: 'ghcr.io/labring/sealos-aiproxy-service:latest' + container_name: aiproxy + restart: unless-stopped depends_on: - - mysql + pgsql: + condition: service_healthy + ports: + - '3002:3000/tcp' networks: - fastgpt - restart: always environment: - # mysql 连接参数 - - SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi - # 登录凭证加密密钥 - - SESSION_SECRET=oneapikey - # 内存缓存 - - MEMORY_CACHE_ENABLED=true - # 启动聚合更新,减少数据交互频率 - - BATCH_UPDATE_ENABLED=true - # 聚合更新时长 - - BATCH_UPDATE_INTERVAL=10 - # 初始化的 root 密钥(建议部署完后更改,否则容易泄露) - - INITIAL_ROOT_TOKEN=fastgpt + - ADMIN_KEY=aiproxy # 对应 fastgpt 里的AIPROXY_API_TOKEN + - LOG_DETAIL_STORAGE_HOURS=1 # 日志详情保存时间(小时) + - TZ=Asia/Shanghai + - SQL_DSN=postgres://postgres:aiproxy@pgsql:5432/aiproxy + - DISABLE_MODEL_CONFIG=true + healthcheck: + test: ['CMD', 'curl', '-f', 'http://localhost:3000/api/status'] + interval: 5s + timeout: 5s + retries: 10 + + # AI Proxy + pgsql: + # image: "postgres:latest" + image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云 + restart: unless-stopped + container_name: pgsql volumes: - - ./oneapi:/data + - ./pgsql:/var/lib/postgresql/data + networks: + - fastgpt + environment: + TZ: Asia/Shanghai + POSTGRES_USER: postgres + POSTGRES_DB: aiproxy + POSTGRES_PASSWORD: aiproxy + healthcheck: + test: ['CMD', 'pg_isready', '-U', 'postgres', '-d', 'aiproxy'] + interval: 5s + timeout: 5s + retries: 10 networks: fastgpt: diff --git a/deploy/docker/docker-compose-zilliz.yml b/deploy/docker/docker-compose-zilliz.yml index 508ec189b..ffdb623c1 100644 --- a/deploy/docker/docker-compose-zilliz.yml +++ b/deploy/docker/docker-compose-zilliz.yml @@ -75,6 +75,10 @@ services: - FE_DOMAIN= # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。 - DEFAULT_ROOT_PSW=1234 + # AI Proxy 的地址,如果配了该地址,优先使用 + - AIPROXY_API_ENDPOINT=http://aiproxy:3000 + # AI Proxy 的 Admin Token,与 AI Proxy 中的环境变量 ADMIN_KEY + - AIPROXY_API_TOKEN=aiproxy # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。 - OPENAI_BASE_URL=http://oneapi:3000/v1 # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改) @@ -108,48 +112,49 @@ services: volumes: - ./config.json:/app/data/config.json - # oneapi - mysql: - image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云 - # image: mysql:8.0.36 - container_name: mysql - restart: always - ports: - - 3306:3306 - networks: - - fastgpt - command: --default-authentication-plugin=mysql_native_password - environment: - # 默认root密码,仅首次运行有效 - MYSQL_ROOT_PASSWORD: oneapimmysql - MYSQL_DATABASE: oneapi - volumes: - - ./mysql:/var/lib/mysql - oneapi: - container_name: oneapi - image: ghcr.io/songquanpeng/one-api:v0.6.7 - # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云 - ports: - - 3001:3000 + # AI Proxy + aiproxy: + image: 'ghcr.io/labring/sealos-aiproxy-service:latest' + container_name: aiproxy + restart: unless-stopped depends_on: - - mysql + pgsql: + condition: service_healthy + ports: + - '3002:3000/tcp' networks: - fastgpt - restart: always environment: - # mysql 连接参数 - - SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi - # 登录凭证加密密钥 - - SESSION_SECRET=oneapikey - # 内存缓存 - - MEMORY_CACHE_ENABLED=true - # 启动聚合更新,减少数据交互频率 - - BATCH_UPDATE_ENABLED=true - # 聚合更新时长 - - BATCH_UPDATE_INTERVAL=10 - # 初始化的 root 密钥(建议部署完后更改,否则容易泄露) - - INITIAL_ROOT_TOKEN=fastgpt + - ADMIN_KEY=aiproxy # 对应 fastgpt 里的AIPROXY_API_TOKEN + - LOG_DETAIL_STORAGE_HOURS=1 # 日志详情保存时间(小时) + - TZ=Asia/Shanghai + - SQL_DSN=postgres://postgres:aiproxy@pgsql:5432/aiproxy + - DISABLE_MODEL_CONFIG=true + healthcheck: + test: ['CMD', 'curl', '-f', 'http://localhost:3000/api/status'] + interval: 5s + timeout: 5s + retries: 10 + + # AI Proxy + pgsql: + # image: "postgres:latest" + image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云 + restart: unless-stopped + container_name: pgsql volumes: - - ./oneapi:/data + - ./pgsql:/var/lib/postgresql/data + networks: + - fastgpt + environment: + TZ: Asia/Shanghai + POSTGRES_USER: postgres + POSTGRES_DB: aiproxy + POSTGRES_PASSWORD: aiproxy + healthcheck: + test: ['CMD', 'pg_isready', '-U', 'postgres', '-d', 'aiproxy'] + interval: 5s + timeout: 5s + retries: 10 networks: fastgpt: diff --git a/docSite/assets/imgs/aiproxy-1.jpg b/docSite/assets/imgs/aiproxy-1.jpg new file mode 100644 index 000000000..1b8e8eaf7 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-1.jpg differ diff --git a/docSite/assets/imgs/aiproxy-1.png b/docSite/assets/imgs/aiproxy-1.png new file mode 100644 index 000000000..1b8e8eaf7 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-1.png differ diff --git a/docSite/assets/imgs/aiproxy-10.png b/docSite/assets/imgs/aiproxy-10.png new file mode 100644 index 000000000..e635a0fe3 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-10.png differ diff --git a/docSite/assets/imgs/aiproxy-11.png b/docSite/assets/imgs/aiproxy-11.png new file mode 100644 index 000000000..0a87605ae Binary files /dev/null and b/docSite/assets/imgs/aiproxy-11.png differ diff --git a/docSite/assets/imgs/aiproxy-2.png b/docSite/assets/imgs/aiproxy-2.png new file mode 100644 index 000000000..2f8e8a037 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-2.png differ diff --git a/docSite/assets/imgs/aiproxy-3.png b/docSite/assets/imgs/aiproxy-3.png new file mode 100644 index 000000000..769d22496 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-3.png differ diff --git a/docSite/assets/imgs/aiproxy-4.png b/docSite/assets/imgs/aiproxy-4.png new file mode 100644 index 000000000..b2e815b84 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-4.png differ diff --git a/docSite/assets/imgs/aiproxy-5.png b/docSite/assets/imgs/aiproxy-5.png new file mode 100644 index 000000000..11d5546c0 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-5.png differ diff --git a/docSite/assets/imgs/aiproxy-6.png b/docSite/assets/imgs/aiproxy-6.png new file mode 100644 index 000000000..6ea3ff906 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-6.png differ diff --git a/docSite/assets/imgs/aiproxy-7.png b/docSite/assets/imgs/aiproxy-7.png new file mode 100644 index 000000000..0c23fb606 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-7.png differ diff --git a/docSite/assets/imgs/aiproxy-8.png b/docSite/assets/imgs/aiproxy-8.png new file mode 100644 index 000000000..14e392669 Binary files /dev/null and b/docSite/assets/imgs/aiproxy-8.png differ diff --git a/docSite/assets/imgs/aiproxy-9.png b/docSite/assets/imgs/aiproxy-9.png new file mode 100644 index 000000000..0851486fb Binary files /dev/null and b/docSite/assets/imgs/aiproxy-9.png differ diff --git a/docSite/content/zh-cn/docs/development/docker.md b/docSite/content/zh-cn/docs/development/docker.md index 1c776ea16..0ef3b1dcc 100644 --- a/docSite/content/zh-cn/docs/development/docker.md +++ b/docSite/content/zh-cn/docs/development/docker.md @@ -195,15 +195,7 @@ sleep 10 docker restart oneapi ``` -### 4. 打开 OneAPI 添加模型 - -可以通过`ip:3001`访问OneAPI,默认账号为`root`密码为`123456`。 - -在OneApi中添加合适的AI模型渠道。[点击查看相关教程](/docs/development/modelconfig/one-api/) - -只需要添加模型即可,模板已经配置好了oneapi的连接地址和令牌,无需变更。 - -### 5. 访问 FastGPT +### 4. 访问 FastGPT 目前可以通过 `ip:3000` 直接访问(注意防火墙)。登录用户名为 `root`,密码为`docker-compose.yml`环境变量里设置的 `DEFAULT_ROOT_PSW`。 @@ -211,9 +203,11 @@ docker restart oneapi 首次运行,会自动初始化 root 用户,密码为 `1234`(与环境变量中的`DEFAULT_ROOT_PSW`一致),日志里会提示一次`MongoServerError: Unable to read from a snapshot due to pending collection catalog changes;`可忽略。 -### 6. 配置模型 +### 5. 配置模型 -登录FastGPT后,进入模型配置页面,务必先配置至少一个语言模型和一个向量模型,否则系统无法正常使用。 +登录FastGPT后,进入“模型提供商”页面,首先配置模型渠道,[点击查看相关教程](/docs/development/modelconfig/ai-proxy) + +然后配置具体模型,务必先配置至少一个语言模型和一个向量模型,否则系统无法正常使用。 [点击查看模型配置教程](/docs/development/modelConfig/intro/) diff --git a/docSite/content/zh-cn/docs/development/modelConfig/ai-proxy.md b/docSite/content/zh-cn/docs/development/modelConfig/ai-proxy.md new file mode 100644 index 000000000..70e58881f --- /dev/null +++ b/docSite/content/zh-cn/docs/development/modelConfig/ai-proxy.md @@ -0,0 +1,103 @@ +--- +title: '通过 AI Proxy 接入模型' +description: '通过 AI Proxy 接入模型' +icon: 'api' +draft: false +toc: true +weight: 744 +--- + +从 FastGPT 4.8.23 版本开始,引入 AI Proxy 来进一步方便模型的配置。 + +AI Proxy 与 One API 类似,也是作为一个 OpenAI 接口管理 & 分发系统,可以通过标准的 OpenAI API 格式访问所有的大模型,开箱即用。 + +## 部署 + +### Docker 版本 + +`docker-compose.yml` 文件已加入了 AI Proxy 配置,可直接使用。 + +## 基础使用 + +### 1. 创建渠道 + +如果 FastGPT 的环境变量中,设置了 AIPROXY_API_ENDPOINT 的值,那么在“模型提供商”的配置页面,会多出两个 tab,可以直接在 FastGPT 平台上配置模型渠道,以及查看模型实际调用日志。 + +![aiproxy1](/imgs/aiproxy-1.png) + +点击右上角的“新增渠道”,即可进入渠道配置页面 + +![aiproxy2](/imgs/aiproxy-2.png) + +以阿里云的模型为例,进行如下配置 + +![aiproxy3](/imgs/aiproxy-3.png) + +1. 渠道名:展示在外部的渠道名称,仅作标识; +2. 厂商:模型对应的厂商,不同厂商对应不同的默认地址和 API 密钥格式; +3. 模型:当前渠道具体可以使用的模型,系统内置了主流的一些模型,如果下拉框中没有想要的选项,可以点击“新增模型”,[增加自定义模型](/docs/development/modelconfig/intro/#新增自定义模型); +4. 模型映射:将 FastGPT 请求的模型,映射到具体提供的模型上; +5. 代理地址:具体请求的地址,系统给每个主流渠道配置了默认的地址,如果无需改动则不用填 +6. API 密钥:从模型厂商处获取的 API 凭证 + +最后点击“新增”,就能在“模型渠道”下看到刚刚配置的渠道 + +![aiproxy4](/imgs/aiproxy-4.png) + +### 2. 渠道测试 + +然后可以对渠道进行测试,确保配置的模型有效 + +![aiproxy5](/imgs/aiproxy-5.png) + +点击“模型测试”,可以看到配置的模型列表,点击“开始测试” + +![aiproxy6](/imgs/aiproxy-6.png) + +等待模型测试完成后,会输出每个模型的测试结果以及请求时长 + +![aiproxy7](/imgs/aiproxy-7.png) + +### 3. 启用模型 + +最后在“模型配置”中,可以选择启用对应的模型,这样就能在平台中使用了 + +![aiproxy8](/imgs/aiproxy-8.png) + + +## 渠道设置 + +### 优先级 + +在 FastGPT 中,可以给渠道设置优先级,对于同样的模型,优先级越高的渠道会越优先请求 + +![aiproxy9](/imgs/aiproxy-9.png) + +### 启用/禁用 + +在渠道右侧的控制菜单中,还可以控制渠道的启用或禁用,被禁用的渠道将无法再提供模型服务 + +![aiproxy10](/imgs/aiproxy-10.png) + +### 调用日志 + +在 “调用日志” 页面,会展示发送到模型处的请求记录,包括具体的输入输出 tokens、请求时间、请求耗时、请求地址等等 + +![aiproxy11](/imgs/aiproxy-11.png) + +## 如何从 OneAPI 迁移到 AI Proxy + +可以从任意终端,发起 1 个 HTTP 请求。其中 {{host}} 替换成 AI Proxy 地址,{{admin_key}} 替换成 AI Proxy 中 ADMIN_KEY 的值,参数 dsn 为 OneAPI 的 mysql 连接串 + +```bash +curl --location --request POST '{{host}}/api/channels/import/oneapi' \ +--header 'Authorization: Bearer {{admin_key}}' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "dsn": "mysql://root:s5mfkwst@tcp(dbconn.sealoshzh.site:33123)/mydb" +}' +``` + +执行成功的情况下会返回 "success": true + +脚本目前不是完全准,可能会有部分渠道遗漏,还需要手动再检查下 \ No newline at end of file diff --git a/docSite/content/zh-cn/docs/development/modelConfig/intro.md b/docSite/content/zh-cn/docs/development/modelConfig/intro.md index 5aa6b219d..446eaae9e 100644 --- a/docSite/content/zh-cn/docs/development/modelConfig/intro.md +++ b/docSite/content/zh-cn/docs/development/modelConfig/intro.md @@ -13,9 +13,15 @@ weight: 744 ## 配置模型 -### 1. 使用 OneAPI 对接模型提供商 +### 1. 对接模型提供商 -可以使用 [OneAPI 接入教程](/docs/development/modelconfig/one-api) 来进行模型聚合,从而可以对接更多模型提供商。你需要先在各服务商申请好 API 接入 OneAPI 后,才能在 FastGPT 中使用这些模型。示例流程如下: +#### AI Proxy + +从 4.8.23 版本开始, FastGPT 支持在页面上配置模型提供商,即使用 [AI Proxy 接入教程](/docs/development/modelconfig/ai-proxy) 来进行模型聚合,从而可以对接更多模型提供商。 + +#### One API + +也可以使用 [OneAPI 接入教程](/docs/development/modelconfig/one-api)。你需要先在各服务商申请好 API 接入 OneAPI 后,才能在 FastGPT 中使用这些模型。示例流程如下: ![alt text](/imgs/image-95.png) @@ -28,17 +34,7 @@ weight: 744 在 OneAPI 配置好模型后,你就可以打开 FastGPT 页面,启用对应模型了。 -### 2. 登录 root 用户 - -仅 root 用户可以进行模型配置。 - -### 3. 进入模型配置页面 - -登录 root 用户后,在`账号-模型提供商-模型配置`中,你可以看到所有内置的模型和自定义模型,以及哪些模型启用了。 - -![alt text](/image-90.png) - -### 4. 配置介绍 +### 2. 配置介绍 {{% alert icon="🤖 " context="success" %}} 注意: diff --git a/docSite/content/zh-cn/docs/development/modelConfig/one-api.md b/docSite/content/zh-cn/docs/development/modelConfig/one-api.md index 537e90067..7d829bc22 100644 --- a/docSite/content/zh-cn/docs/development/modelConfig/one-api.md +++ b/docSite/content/zh-cn/docs/development/modelConfig/one-api.md @@ -20,10 +20,6 @@ FastGPT 目前采用模型分离的部署方案,FastGPT 中只兼容 OpenAI ## 部署 -### Docker 版本 - -`docker-compose.yml` 文件已加入了 OneAPI 配置,可直接使用。默认暴露在 3001 端口。 - ### Sealos 版本 * 北京区: [点击部署 OneAPI](https://hzh.sealos.run/?openapp=system-template%3FtemplateName%3Done-api) diff --git a/docSite/content/zh-cn/docs/development/modelConfig/siliconCloud.md b/docSite/content/zh-cn/docs/development/modelConfig/siliconCloud.md index 06036deb3..2f958b510 100644 --- a/docSite/content/zh-cn/docs/development/modelConfig/siliconCloud.md +++ b/docSite/content/zh-cn/docs/development/modelConfig/siliconCloud.md @@ -35,7 +35,7 @@ CHAT_API_KEY=sk-xxxxxx ![alt text](/imgs/image-104.png) -## 5. 体验测试 +## 4. 体验测试 ### 测试对话和图片识别