From 99e5fbd0f5b89c8c3618752169fcc4ce480eadc6 Mon Sep 17 00:00:00 2001 From: archer <545436317@qq.com> Date: Sun, 9 Apr 2023 22:56:08 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20md=E5=BC=95=E5=85=A5;docker-compose;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 161 +++++++++++------- public/docs/chatProblem.md | 9 + public/docs/intro.md | 40 +++++ public/docs/shareHint.md | 3 + public/docs/versionIntro.md | 3 + public/imgs/wx300.jpg | Bin 0 -> 54379 bytes public/imgs/wxcode300.jpg | Bin 15284 -> 0 bytes src/api/common.ts | 1 + src/components/WxConcat/index.tsx | 4 +- src/constants/common.ts | 66 ------- src/hooks/useMarkdown.ts | 15 ++ src/pages/chat/components/Empty.tsx | 7 +- src/pages/chat/components/SlideBar.tsx | 3 +- src/pages/index.tsx | 6 +- .../model/list/components/ModelPhoneList.tsx | 4 - .../model/list/components/ModelTable.tsx | 5 - src/service/response.ts | 7 +- 17 files changed, 185 insertions(+), 149 deletions(-) create mode 100644 public/docs/chatProblem.md create mode 100644 public/docs/intro.md create mode 100644 public/docs/shareHint.md create mode 100644 public/docs/versionIntro.md create mode 100644 public/imgs/wx300.jpg delete mode 100644 public/imgs/wxcode300.jpg create mode 100644 src/api/common.ts create mode 100644 src/hooks/useMarkdown.ts 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 0000000000000000000000000000000000000000..b862d23ce1c4ebb325ece5ce594c0778566c458f GIT binary patch literal 54379 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 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}次 -