diff --git a/README.md b/README.md index 1a3a9c372..370ab5591 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ docker push imageName:tag # 或者直接拉镜像,见下方 ``` - #### 软件教程:docker 安装 ```bash # 安装docker @@ -39,20 +38,6 @@ curl -sSL https://get.daocloud.io/docker | sh sudo systemctl start docker ``` -#### 软件教程:mongo 安装 -```bash -docker pull mongo:6.0.4 -docker stop mongo -docker rm mongo -docker run -d --name mongo \ - -e MONGO_INITDB_ROOT_USERNAME= \ - -e MONGO_INITDB_ROOT_PASSWORD= \ - -v /root/service/mongo:/data/db \ - mongo:6.0.4 - -# 检查 mongo 运行情况, 有成功的 logs 代表访问成功 -docker logs mongo -``` #### 软件教程: clash 代理 ```bash # 下载包 @@ -70,8 +55,7 @@ export https_proxy=http://127.0.0.1:7890 export HTTP_PROXY=http://127.0.0.1:7890 export HTTPS_PROXY=http://127.0.0.1:7890 -# 运行脚本: 删除clash - 到 clash 目录 - 删除缓存 - 执行运行 -# 会生成一个 nohup.out 文件,可以看到 clash 的 logs +# 运行脚本: 删除clash - 到 clash 目录 - 删除缓存 - 执行运行. 会生成一个 nohup.out 文件,可以看到 clash 的 logs OLD_PROCESS=$(pgrep clash) if [ ! -z "$OLD_PROCESS" ]; then echo "Killing old process: $OLD_PROCESS" @@ -85,44 +69,9 @@ nohup ./clash-linux-amd64-v1.10.0 -d ./ & echo "Restart clash" ``` -#### 软件教程:Nginx -...没写,这个百度吧。 - -#### redis-stack - -安装 -```bash -#!/bin/bash -docker pull redis/redis-stack:6.2.6-v6 -docker stop fast-gpt-redis-stack -docker rm fast-gpt-redis-stack - -docker run -d --name fast-gpt-redis-stack \ - -v /redis/data:/data \ - -v /etc/localtime:/etc/localtime:ro \ - -v /redis.conf:/redis-stack.conf \ - -e REDIS_ARGS="--requirepass 1111111"\ - -p 8102:6379 \ - -p 8103:8001 \ - --restart unless-stopped \ - redis/redis-stack:6.2.6-v6 -``` -```bash -# /redis.conf -# 开启aop持久化 -appendonly yes -#default: 持久化文件 -appendfilename "appendonly.aof" -#default: 每秒同步一次 -appendfsync everysec -``` -```bash -# 添加索引 -FT.CREATE idx:model:data:hash ON HASH PREFIX 1 model:data: SCHEMA modelId TAG userId TAG status TAG q TEXT text TEXT vector VECTOR FLAT 6 DIM 1536 DISTANCE_METRIC COSINE TYPE FLOAT32 -``` -#### 服务器拉取镜像和运行 +#### 文件创建 +**yml文件** ```yml -# docker-compose version: "3.3" services: fast-gpt: @@ -130,20 +79,108 @@ services: environment: AXIOS_PROXY_HOST: 127.0.0.1 AXIOS_PROXY_PORT: 7890 - MY_MAIL: - MAILE_CODE: - TOKEN_KEY: - MONGODB_URI: - OPENAIKEY: - REDIS_URL: + MY_MAIL: 11111111@qq.com + MAILE_CODE: sdasadasfasfad + TOKEN_KEY: sssssssss + MONGODB_URI: mongodb://username:password@0.0.0.0:27017/?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&ssl=false + OPENAIKEY: sk-afadfadfadfsd + REDIS_URL: redis://default:password@0.0.0.0:8100 network_mode: host restart: always container_name: fast-gpt + mongodb: + image: mongo:6.0.4 + container_name: mongo + restart: always + environment: + - MONGO_INITDB_ROOT_USERNAME=root + - MONGO_INITDB_ROOT_PASSWORD=ROOT_1234 + - MONGO_DATA_DIR=/data/db + - MONGO_LOG_DIR=/data/logs + volumes: + - /root/fastgpt/mongo/data:/data/db + - /root/fastgpt/mongo/logs:/data/logs + ports: + - 27017:27017 + nginx: + image: nginx:alpine3.17 + container_name: nginx + restart: always + network_mode: host + ports: + - "80:80" + volumes: + - /root/fastgpt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro + redis-stack: + image: redis/redis-stack:6.2.6-v6 + container_name: redis-stack + restart: unless-stopped + ports: + - "8100:6379" + - "8101:8001" + environment: + - REDIS_ARGS=--requirepass psw1234 + volumes: + - /etc/localtime:/etc/localtime:ro + - /root/fastgpt/redis/redis.conf:/redis.conf + - /root/fastgpt/redis/data:/data ``` +**redis.conf** +``` +## 开启aop持久化 +appendonly yes +#default: 持久化文件 +appendfilename "appendonly.aof" +#default: 每秒同步一次 +appendfsync everysec +``` +**nginx.conf** +``` +user nginx; +worker_processes auto; +error_log /var/log/nginx/error.log; +pid /run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + include /etc/nginx/conf.d/*.conf; + + server { + listen 80; + server_name test.com; + + gzip on; + gzip_min_length 1k; + gzip_buffers 4 8k; + gzip_http_version 1.1; + gzip_comp_level 6; + gzip_vary on; + gzip_types text/plain application/x-javascript text/css application/javascript application/json application/xml; + gzip_disable "MSIE [1-6]\."; + + location / { + proxy_pass http://localhost:3000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } +} +``` + +#### 运行脚本 +**redis创建索引** +```bash +FT.CREATE idx:model:data:hash ON HASH PREFIX 1 model:data: SCHEMA modelId TAG userId TAG status TAG q TEXT text TEXT vector VECTOR FLAT 6 DIM 1536 DISTANCE_METRIC COSINE TYPE FLOAT32 +``` +**run.sh 运行文件** ```bash #!/bin/bash -# 拉取最新镜像 -docker-compose pull docker-compose up -d echo "Docker Compose 重新拉取镜像完成!" diff --git a/public/docs/chatProblem.md b/public/docs/chatProblem.md new file mode 100644 index 000000000..90b4641bb --- /dev/null +++ b/public/docs/chatProblem.md @@ -0,0 +1,9 @@ +## 常见问题 +**内容长度** +单次最长 4000 tokens, 上下文最长 8000 tokens, 上下文超长时会被截断。 + +**删除和复制** +点击对话头像,可以选择复制或删除该条内容。 + +**代理出错** +服务器代理不稳定,可以过一会儿再尝试。 \ No newline at end of file diff --git a/public/docs/intro.md b/public/docs/intro.md new file mode 100644 index 000000000..73a9a509b --- /dev/null +++ b/public/docs/intro.md @@ -0,0 +1,40 @@ +## 欢迎使用 Fast GPT + +[Git 仓库](https://github.com/c121914yu/FastGPT) + +### 交流群/问题反馈 +扫码满了,加个小号,定时拉 +wx号: fastgpt123 +![](/imgs/wx300.jpg) + + +### 快速开始 +1. 使用邮箱注册账号。 +2. 进入账号页面,添加关联账号,目前只有 openai 的账号可以添加,直接去 openai 官网,把 API Key 粘贴过来。 +3. 如果填写了自己的 openai 账号,使用时会直接用你的账号。如果没有填写,需要付费使用平台的账号。 +4. 进入模型页,创建一个模型,建议直接用 ChatGPT。 +5. 在模型列表点击【对话】,即可使用 API 进行聊天。 + +### 定制 prompt + +1. 进入模型编辑页 +2. 调整温度和提示词 +3. 使用该模型对话。每次对话时,提示词和温度都会自动注入,方便管理个人的模型。建议把自己日常经常需要使用的 5~10 个方向预设好。 + +### 知识库 + +1. 创建模型时选择【知识库】 +2. 进入模型编辑页 +3. 导入数据,可以选择手动导入,或者选择文件导入。文件导入会自动调用 chatGPT 理解文件内容,并生成知识库。 +4. 使用该模型对话。 + +注意:使用知识库模型对话时,tokens 消耗会加快。 + +### 价格表 +如果使用了自己的 Api Key,不会计费。可以在账号页,看到详细账单。单纯使用 chatGPT 模型进行对话,只有一个计费项目。使用知识库时,包含**对话**和**索引**生成两个计费项。 +| 计费项 | 价格: 元/ 1K tokens(包含上下文)| +| --- | --- | +| chatgpt - 对话 | 0.03 | +| 知识库 - 对话 | 0.03 | +| 知识库 - 索引 | 0.004 | +| 文件拆分 | 0.03 | diff --git a/public/docs/shareHint.md b/public/docs/shareHint.md new file mode 100644 index 000000000..451815505 --- /dev/null +++ b/public/docs/shareHint.md @@ -0,0 +1,3 @@ +你正准备分享对话,请确保分享链接不会滥用,因为它是使用的是你的 API key。 +* 分享空白对话:为该模型创建一个空白的聊天分享出去。 +* 分享当前对话:会把当前聊天的内容也分享出去,但是要注意不要多个人同时用一个聊天内容。 diff --git a/public/docs/versionIntro.md b/public/docs/versionIntro.md new file mode 100644 index 000000000..2748fba08 --- /dev/null +++ b/public/docs/versionIntro.md @@ -0,0 +1,3 @@ +## Fast GPT V2.5 +* 内容压缩,替换中文标点符号和多余符号,减少一些上下文tokens。 +* 优化 QA 拆分记账。 \ No newline at end of file diff --git a/public/imgs/wx300.jpg b/public/imgs/wx300.jpg new file mode 100644 index 000000000..b862d23ce Binary files /dev/null and b/public/imgs/wx300.jpg differ diff --git a/public/imgs/wxcode300.jpg b/public/imgs/wxcode300.jpg deleted file mode 100644 index bc04e9f3c..000000000 Binary files a/public/imgs/wxcode300.jpg and /dev/null differ diff --git a/src/api/common.ts b/src/api/common.ts new file mode 100644 index 000000000..4157b1029 --- /dev/null +++ b/src/api/common.ts @@ -0,0 +1 @@ +import { GET, POST, DELETE } from './request'; diff --git a/src/components/WxConcat/index.tsx b/src/components/WxConcat/index.tsx index 0082f37ee..29086bbb6 100644 --- a/src/components/WxConcat/index.tsx +++ b/src/components/WxConcat/index.tsx @@ -23,7 +23,7 @@ const WxConcat = ({ onClose }: { onClose: () => void }) => { void }) => { 微信号: - YNyiqi + fastgpt123 diff --git a/src/constants/common.ts b/src/constants/common.ts index b67c93362..42f111be8 100644 --- a/src/constants/common.ts +++ b/src/constants/common.ts @@ -4,69 +4,3 @@ export enum EmailTypeEnum { } export const PRICE_SCALE = 100000; - -export const introPage = ` -## 欢迎使用 Fast GPT - -[Git 仓库](https://github.com/c121914yu/FastGPT) - -### 交流群/问题反馈 -wx号: YNyiqi -![](/imgs/wxerweima300.jpg) - - -### 快速开始 -1. 使用邮箱注册账号。 -2. 进入账号页面,添加关联账号,目前只有 openai 的账号可以添加,直接去 openai 官网,把 API Key 粘贴过来。 -3. 如果填写了自己的 openai 账号,使用时会直接用你的账号。如果没有填写,需要付费使用平台的账号。 -4. 进入模型页,创建一个模型,建议直接用 ChatGPT。 -5. 在模型列表点击【对话】,即可使用 API 进行聊天。 - -### 定制 prompt - -1. 进入模型编辑页 -2. 调整温度和提示词 -3. 使用该模型对话。每次对话时,提示词和温度都会自动注入,方便管理个人的模型。建议把自己日常经常需要使用的 5~10 个方向预设好。 - -### 知识库 - -1. 创建模型时选择【知识库】 -2. 进入模型编辑页 -3. 导入数据,可以选择手动导入,或者选择文件导入。文件导入会自动调用 chatGPT 理解文件内容,并生成知识库。 -4. 使用该模型对话。 - -注意:使用知识库模型对话时,tokens 消耗会加快。 - -### 价格表 -如果使用了自己的 Api Key,不会计费。可以在账号页,看到详细账单。单纯使用 chatGPT 模型进行对话,只有一个计费项目。使用知识库时,包含**对话**和**索引**生成两个计费项。 -| 计费项 | 价格: 元/ 1K tokens(包含上下文)| -| --- | --- | -| chatgpt - 对话 | 0.03 | -| 知识库 - 对话 | 0.03 | -| 知识库 - 索引 | 0.004 | -| 文件拆分 | 0.03 | -`; - -export const chatProblem = ` -## 常见问题 -**内容长度** -单次最长 4000 tokens, 上下文最长 8000 tokens, 上下文超长时会被截断。 - -**删除和复制** -点击对话头像,可以选择复制或删除该条内容。 - -**代理出错** -服务器代理不稳定,可以过一会儿再尝试。 -`; - -export const versionIntro = ` -## Fast GPT V2.5 -* 内容压缩,替换中文标点符号和多余符号,减少一些上下文tokens。 -* 优化 QA 拆分记账。 -`; - -export const shareHint = ` -你正准备分享对话,请确保分享链接不会滥用,因为它是使用的是你的 API key。 -* 分享空白对话:为该模型创建一个空白的聊天分享出去。 -* 分享当前对话:会把当前聊天的内容也分享出去,但是要注意不要多个人同时用一个聊天内容。 -`; diff --git a/src/hooks/useMarkdown.ts b/src/hooks/useMarkdown.ts new file mode 100644 index 000000000..cdda99b5f --- /dev/null +++ b/src/hooks/useMarkdown.ts @@ -0,0 +1,15 @@ +import { useQuery } from '@tanstack/react-query'; + +export const getMd = async (url: string) => { + const response = await fetch(`/docs/${url}`); + const textContent = await response.text(); + return textContent; +}; + +export const useMarkdown = ({ url }: { url: string }) => { + const { data = '' } = useQuery([url], () => getMd(url)); + + return { + data + }; +}; diff --git a/src/pages/chat/components/Empty.tsx b/src/pages/chat/components/Empty.tsx index 83f9ee74d..d03d34300 100644 --- a/src/pages/chat/components/Empty.tsx +++ b/src/pages/chat/components/Empty.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { Card, Box, Mark } from '@chakra-ui/react'; -import { versionIntro, chatProblem } from '@/constants/common'; +import { Card, Box } from '@chakra-ui/react'; +import { useMarkdown } from '@/hooks/useMarkdown'; import Markdown from '@/components/Markdown'; const Empty = ({ intro }: { intro: string }) => { @@ -9,6 +9,9 @@ const Empty = ({ intro }: { intro: string }) => { {children} ); + const { data: chatProblem } = useMarkdown({ url: '/chatProblem.md' }); + const { data: versionIntro } = useMarkdown({ url: '/versionIntro.md' }); + return ( { + const { data } = useMarkdown({ url: '/intro.md' }); + return ( - + ); }; diff --git a/src/pages/model/list/components/ModelPhoneList.tsx b/src/pages/model/list/components/ModelPhoneList.tsx index 809dd91c9..7a2d0be58 100644 --- a/src/pages/model/list/components/ModelPhoneList.tsx +++ b/src/pages/model/list/components/ModelPhoneList.tsx @@ -49,10 +49,6 @@ const ModelPhoneList = ({ AI模型: {model.service.modelName} - - 训练次数: - {model.trainingTimes}次 -