概要
介绍如何利用开源项目FastGPT及ChatGPT等大模型API快速构建适用于企业的知识库问答系统。FastGPT提供的即开即用的数据处理和模型调用能力使得搭建这样的系统变得简单快捷。通过图形编排工具,企业可以轻松定制问答流程,有效整合内部知识资源。
本文将详细讲述FastGPT的主要优势、必要的准备工作、系统部署的详细步骤以及如何利用其丰富的功能提升企业知识管理和客户服务效率。同时,也会解答一些在部署和使用过程中可能遇到的常见问题。通过本文的指导,读者可以快速理解并开始构建自己的企业级知识库问答系统。
FastGPT简介
FastGPT是一个创新的开源项目,旨在利用最新的大模型AI技术,特别是GPT系列模型,来快速搭建企业级的知识库问答系统。它通过简化和优化问答系统的构建流程,使企业能够轻松部署和维护高效的知识管理平台。
核心特性:
1.
即开即用: FastGPT设计理念是“开箱即用”,企业无需进行复杂配置即可快速启动和运行系统。
2.
图形编排工具: FastGPT提供一套直观的图形界面,用户可以通过拖拽的方式设计和管理问答流程,无需深入编程即可定制复杂的工作流。
3.
强大的兼容性: 项目支持多种AI大模型API,包括OpenAI的GPT系列,这意味着企业可以根据自身需求和预算选择最合适的服务。
4.
易于部署: FastGPT支持Docker容器化部署,极大简化了在不同环境下的安装和迁移工作。
5.
扩展性强: 企业可以根据自身成长和需求变化,轻松扩展系统功能和处理能力。
应用场景:
内部知识管理: 帮助企业整合内部文档、指南和专家知识,通过问答形式快速提供给员工。
客户支持: 构建面向客户的FAQ和问题解答系统,提高客户满意度和响应速度。
市场调研: 分析和回应市场趋势或消费者需求的变化,帮助决策者快速获取关键信息。
FastGPT的目标是降低技术门槛,使更多企业能够利用AI技术优化知识管理和客户服务,从而提升运营效率和竞争力。
准备工作
建立系统前,需准备云服务器、域名、Docker及AI大模型API。
1.
云服务器:推荐2核2G以上配置
2.
域名:建议使用域名访问,部署前完成域名解析
3.
安装Docker:非必须,建议使用docker,部署简单,无需考虑环境差异等兼容性问题。
4.
申请AI大模型API:如果使用ChatGPT API并且使用国内或香港区域服务器,由于OpenAI限制,需要单独购买其他地域中转服务器或者购买中转服务。目前国内中转服务较多,价格低廉,响应速度尚可。
部署步骤
采用Docker部署FastGPT
1.安装 Docker 和 docker-compose
2.创建目录并下载 docker-compose.yml
依次执行下面命令,创建 FastGPT 文件并拉取docker-compose.yml和config.json,执行完后目录下会有 2 个文件。
注意: docker-compose.yml 配置文件中 Mongo 为 5.x,部分服务器不支持,需手动更改其镜像版本为 4.4.24
mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json
3.修改docker-compose.yml
示例代码:
version: '3.3'
services:
pg:
image: ankane/pgvector:v0.5.0 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云 国内机器请使用此镜像
container_name: pg
restart: always
ports: # 生产环境建议不要暴露
- 5432:5432
networks:
- fastgpt
environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- POSTGRES_USER=username
- POSTGRES_PASSWORD=password
- POSTGRES_DB=postgres
volumes:
- ./pg/data:/var/lib/postgresql/data
mongo:
image: mongo:5.0.18
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云 国内机器请使用此镜像
container_name: mongo
restart: always
ports: # 生产环境建议不要暴露
- 27017:27017
networks:
- fastgpt
environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- MONGO_INITDB_ROOT_USERNAME=username
- MONGO_INITDB_ROOT_PASSWORD=password
volumes:
- ./mongo/data:/data/db
fastgpt:
container_name: fastgpt
image: ghcr.io/labring/fastgpt:latest # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云 国内机器使用
ports:
- 3000:3000
networks:
- fastgpt
depends_on:
- mongo
- pg
restart: always
environment:
# root 密码,用户名为: root
- DEFAULT_ROOT_PSW=1234
# 中转地址,如果是用官方号,不需要管。务必加 /v1
- OPENAI_BASE_URL=https://api.openai.com/v1
- CHAT_API_KEY=sk-xxxx
- DB_MAX_LINK=5 # database max link
- TOKEN_KEY=any
- ROOT_KEY=root_key
- FILE_TOKEN_KEY=filetoken
# mongo 配置,不需要改. 如果连不上,可能需要去掉 ?authSource=admin
- MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt?authSource=admin
# pg配置. 不需要改
- PG_URL=postgresql://username:password@pg:5432/postgres
volumes:
- ./config.json:/app/data/config.json
networks:
fastgpt:
配置说明:
DEFAULT_ROOT_PSW:前台root管理员登录密码,建议修改
OPENAI_BASE_URL:AI大模型接口地址,如果是使用ChatGPT API中转服务,请配置中转地址
CHAT_API_KEY:AI大模型接口KEY
4.config.json配置
一般可不调整,使用默认配置
示例代码:
{
"FeConfig": {
"show_emptyChat": true,
"show_register": true,
"show_appStore": false,
"show_userDetail": false,
"show_contact": true,
"show_git": false,
"show_doc": false,
"systemTitle": "MyGPT",
"authorText": "Made by MyGPT Team.",
"scripts": []
},
"SystemParams": {
"pluginBaseUrl": "",
"vectorMaxProcess": 15,
"qaMaxProcess": 15,
"pgHNSWEfSearch": 100
},
"ChatModels": [
{
"model": "gpt-3.5-turbo-1106",
"name": "GPT35-1106",
"price": 0,
"maxContext": 16000,
"maxResponse": 4000,
"quoteMaxToken": 2000,
"maxTemperature": 1.2,
"censor": false,
"vision": false,
"defaultSystemChatPrompt": ""
},
{
"model": "gpt-3.5-turbo-16k",
"name": "GPT35-16k",
"maxContext": 16000,
"maxResponse": 16000,
"price": 0,
"quoteMaxToken": 8000,
"maxTemperature": 1.2,
"censor": false,
"vision": false,
"defaultSystemChatPrompt": ""
},
{
"model": "gpt-4",
"name": "GPT4-8k",
"maxContext": 8000,
"maxResponse": 8000,
"price": 0,
"quoteMaxToken": 4000,
"maxTemperature": 1.2,
"censor": false,
"vision": false,
"defaultSystemChatPrompt": ""
},
{
"model": "gpt-4-vision-preview",
"name": "GPT4-Vision",
"maxContext": 128000,
"maxResponse": 4000,
"price": 0,
"quoteMaxToken": 100000,
"maxTemperature": 1.2,
"censor": false,
"vision": true,
"defaultSystemChatPrompt": ""
}
],
"QAModels": [
{
"model": "gpt-3.5-turbo-16k",
"name": "GPT35-16k",
"maxContext": 16000,
"maxResponse": 16000,
"price": 0
}
],
"CQModels": [
{
"model": "gpt-3.5-turbo",
"name": "GPT35",
"maxContext": 4000,
"maxResponse": 4000,
"price": 0,
"functionCall": true,
"functionPrompt": ""
},
{
"model": "gpt-4",
"name": "GPT4-8k",
"maxContext": 8000,
"maxResponse": 8000,
"price": 0,
"functionCall": true,
"functionPrompt": ""
}
],
"ExtractModels": [
{
"model": "gpt-3.5-turbo-1106",
"name": "GPT35-1106",
"maxContext": 16000,
"maxResponse": 4000,
"price": 0,
"functionCall": true,
"functionPrompt": ""
}
],
"QGModels": [
{
"model": "gpt-3.5-turbo-1106",
"name": "GPT35-1106",
"maxContext": 1600,
"maxResponse": 4000,
"price": 0
}
],
"VectorModels": [
{
"model": "text-embedding-ada-002",
"name": "Embedding-2",
"price": 0.2,
"defaultToken": 700,
"maxToken": 3000
}
],
"ReRankModels": [],
"AudioSpeechModels": [
{
"model": "tts-1",
"name": "OpenAI TTS1",
"price": 0,
"voices": [
{ "label": "Alloy", "value": "alloy", "bufferId": "openai-Alloy" },
{ "label": "Echo", "value": "echo", "bufferId": "openai-Echo" },
{ "label": "Fable", "value": "fable", "bufferId": "openai-Fable" },
{ "label": "Onyx", "value": "onyx", "bufferId": "openai-Onyx" },
{ "label": "Nova", "value": "nova", "bufferId": "openai-Nova" },
{ "label": "Shimmer", "value": "shimmer", "bufferId": "openai-Shimmer" }
]
}
],
"WhisperModel": {
"model": "whisper-1",
"name": "Whisper1",
"price": 0
}
}
5.启动容器
依次执行命令行:
docker-compose pull
docker-compose up -d
如果拉取镜像缓慢,可能是使用国内服务器,请将docker-compose.yml文件的image都修改为阿里云的镜像地址。
6.配置域名访问
请提前完成域名解析。
新增nginx配置
反向代理示例代码:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:3000;
}
7.访问测试
使用域名访问,查看是否能进入系统
功能一览
1.知识库管理
支持多种知识库导入方式。
2.应用创建与配置
简化应用的创建和配置过程。
3.问答界面
提供友好的用户交互界面。
4.外部分享配置
方便用户分享知识库。
5.应用编排
FastGPT 从 V4 版本开始采用新的交互方式来构建 AI 应用。使用了 Flow 节点编排的方式来实现复杂工作流,提高可玩性和扩展性。但同时也提高了上手的门槛,有一定开发背景的用户使用起来会比较容易。
常见问题Q&A
怎么更新到最新版FastGPT?
执行下面命令会自动拉取最新镜像,一般情况下不需要执行额外操作。
docker-compose pull
docker-compose up -d
如何自定义配置文件?
修改config.json文件,并执行docker-compose up -d重起容器。
错误排查方式
遇到问题先按下面方式排查。
docker ps -a 查看所有容器运行状态,检查是否全部 running,如有异常,尝试docker logs 容器名查看对应日志。
不懂 docker 不要瞎改端口,只需要改OPENAI_BASE_URL和CHAT_API_KEY即可。
如何配置自己企业名称和logo?
企业名称修改:config.json中的systemTitle
logo和登录图,在nginx中配置拦截logo登录图片文件,配置指定文件
示例配置:
location ~ favicon.ico {
root /gpt/;
}
location ~ ^/icon/loginLeft.svg$ {
root /gpt/;
}
location ~ ^/icon/logo.png$ {
root /gpt/;
}
location ~ ^/icon/loginLeft.png$ {
root /gpt/;
}
转自:https://050fm.com/40.html