微信扫码
和创始人交个朋友
我要投稿
探索如何用FastGPT复刻官方DeepSeek,提升检索速度与效率。 核心内容: 1. 袋鼠帝自建DeepSeek R1,提供快速稳定的联网检索体验 2. FastGPT与DeepSeek R1的结合使用,实现本地与云端部署 3. 详细步骤指导,从本地部署FastGPT到复刻官方DeepSeek R1功能
最近有朋友留言说,相比其他DeepSeek提供商,总是觉得官方的DeepSeek更好用。
不过就在昨天,DeepSeek公布了R1的官方提示词和用法,其实官方并没有太多的优化和骚操作,就很简单~
我用FastGPT+火山引擎的DeepSeek API,结合官方提供的使用方式,本地搭建了一套自己的DeepSeek R1,简单演示效果如下(速度嘎嘎快,而且贼稳定):
DeepSeek + FastGPT真的是一对王炸组合,并且可部署在本地windows、mac、也可部署在云端的Linux系统上。
先给大家简单介绍一下FastGPT:
FastGPT是一个开源项目(是一个类似于Coze的智能体平台),它的知识库问答效果贼好,强烈安利给大家!
目前FastGPT在GitHub已经有21.1K Star(图中 万 是翻译错了,是千)
好了,话不多说,接下来我把这套方案,手把手喂给你!
流程是:
1.本地部署FastGPT;
2.获取火山引擎的DeepSeek R1 apikey和模型id(有免费50万tokens);
3.将DeepSeek R1接入FastGPT;
4.利用FastGPT工作流复刻官方的DeepSeek R1 + 联网功能。
咱们还是老规矩,部署FastGPT之前还是要先安装docker,通过docker我们可以一键部署FastGPT(不仅FastGPT,大部分的开源项目都可以用docker一键部署),所以我强烈建议玩儿AI的朋友都安装上docker。
对于如何安装docker,网上已经有大量详细的教程,这里就不过多赘述了。
本次教程以windows为例,Linux、mac也是类似操作。
接下来我们使用FastGPT的docker-compose.yml文件把FastGPT一键启动。
首先随便找一个文件夹,新建一个空白.txt文件
然后把下面的docker-compose.yml文件内容复制粘贴到.txt中,保存
# 数据库的默认账号和密码仅首次运行时设置有效
# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~
# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。
# 如何无法访问 dockerhub 和 git,可以用阿里云(阿里云没有arm包)
version: '3.3'
services:
# db
pg:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.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: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
container_name: mongo
restart: always
ports:
- 27017:27017
networks:
- fastgpt
command: mongod --keyFile /data/mongodb.key --replSet rs0
environment:
- MONGO_INITDB_ROOT_USERNAME=myusername
- MONGO_INITDB_ROOT_PASSWORD=mypassword
volumes:
- ./mongo/data:/data/db
entrypoint:
- bash
- -c
- |
openssl rand -base64 128 > /data/mongodb.key
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
echo 'const isInited = rs.status().ok === 1
if(!isInited){
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
}' > /data/initReplicaSet.js
# 启动MongoDB服务
exec docker-entrypoint.sh "$$@" &
# 等待MongoDB服务启动
until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; do
echo "Waiting for MongoDB to start..."
sleep 2
done
# 执行初始化副本集的脚本
mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js
# 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
wait $$!
# fastgpt
sandbox:
container_name: sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.21-fix # 阿里云
networks:
- fastgpt
restart: always
fastgpt:
container_name: fastgpt
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.21-fix # 阿里云
ports:
- 3000:3000
networks:
- fastgpt
depends_on:
- mongo
- pg
- sandbox
restart: always
environment:
# 前端访问地址: http://localhost:3000
- FE_DOMAIN=
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
- DEFAULT_ROOT_PSW=1234
# AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。
- OPENAI_BASE_URL=http://oneapi:3000/v1
# AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)
- CHAT_API_KEY=sk-fastgpt
# 数据库最大连接数
- DB_MAX_LINK=30
# 登录凭证密钥
- TOKEN_KEY=any
# root的密钥,常用于升级时候的初始化请求
- ROOT_KEY=root_key
# 文件阅读加密
- FILE_TOKEN_KEY=filetoken
# MongoDB 连接参数. 用户名myusername,密码mypassword。
- MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin
# pg 连接参数
- PG_URL=postgresql://username:password@pg:5432/postgres
# sandbox 地址
- SANDBOX_URL=http://sandbox:3000
# 日志等级: debug, info, warn, error
- LOG_LEVEL=info
- STORE_LOG_LEVEL=warn
# 工作流最大运行次数
- WORKFLOW_MAX_RUN_TIMES=1000
# 批量执行节点,最大输入长度
- WORKFLOW_MAX_LOOP_TIMES=100
# 自定义跨域,不配置时,默认都允许跨域(多个域名通过逗号分割)
- ALLOWED_ORIGINS=
# 是否开启IP限制,默认不开启
- USE_IP_LIMIT=false
volumes:
- ./config.json:/app/data/config.json
# oneapi
mysql:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/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.10
ports:
- 3001:3000
depends_on:
- mysql
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
volumes:
- ./oneapi:/data
networks:
fastgpt:
修改.txt的文件名和后缀为:docker-compose.yml
在添加一个配置文件:config.json
内容如下:
// 已使用 json5 进行解析,会自动去掉注释,无需手动去除{"feConfigs": {"lafEnv": "https://laf.dev" // laf环境。https://laf.run (杭州阿里云) ,或者私有化的laf环境。如果使用 Laf openapi 功能,需要最新版的 laf 。},"systemEnv": {"vectorMaxProcess": 15, // 向量处理线程数量"qaMaxProcess": 15, // 问答拆分线程数量"tokenWorkers": 50, // Token 计算线程保持数,会持续占用内存,不能设置太大。"pgHNSWEfSearch": 100 // 向量搜索参数。越大,搜索越精确,但是速度越慢。设置为100,有99%+精度。}}
然后在当前目录的地址栏上输入cmd,回车,就能进入控制台
接着输入docker-compose up -d 指令,回车
当出现一堆started(如下图),就表示启动成功了
用docker ps 指令,可以查看现在有六个服务在运行
也可以到docker-desktop里面查看
我们主要关注fastgpt和one-api这两个服务即可。
访问FastGPT的页面:http://127.0.0.1:3000/
FastGPT 账号:root,初始密码:1234
访问one-api的页面:http://127.0.0.1:3001/
one-api 账号:root,初始密码:123456
FastGPT已经介绍过了,是一个类似Coze的智能体平台。
one-api又是什么呢?
one-api是一个开源AI_API中转站(可以说目前市面上大部分的API中转站都是基于one-api二次开发出来的),它能够配置对接市面上几乎所有的主流大模型API,并已OpenAI API的调用方式统一对外提供服务。
简单来说,使用one-api,我们后续就可以在fastgpt随意切换大模型使用。
如何把DeepSeek接入FastGPT呢,答案是通过DeepSeek API接口,上篇内容进行了主流DeepSeek API提供商的 API速度测试。
满血版DeepSeek API的速度测评
袋鼠帝,公众号:袋鼠帝AI客栈满血DeepSeek API哪家强?官方最慢...
其中最快的还是财大气粗的字节(火山引擎)
目前火山引擎免费送 50万token,可以白嫖一段时间了~
我们需要先去字节的火山引擎获取R1和V3的模型id,以及Apikey。
获取步骤可以参考这篇(我觉得还挺详细的)
火山引擎V3、R1 API
orangesai,公众号:橘子汽水铺终于来了!满血高速能联网 DeepSeek R1 API 获取教程
我们获取到模型id和apikey之后,需要去one-api配置一下
添加新的渠道
按照下图 添加火山引擎的v3和r1 API配置
模型重定向json:
{ "deepseek-chat": "v3的模型id", "deepseek-reasoner": "r1的模型id"}
在填写apikey之后就可以提交保存了
保存之后点击一下测试,如果右上角出现保存成功的提示就代表配置OK啦~
接下来我们去FastGPT添加deepseek-chat(V3)和deepseek-reasoner(R1)模型。
在工作台->新建->工作流
搭建一个如下的简易工作流,基本就能复刻DeepSeek官方的R1+联网搜索效果啦。
这个工作流很简单,首先是一个问题分类节点:用于区分联网问题和其他问题
如果是联网问题,走下半部分的流程(先通过DuckDuckGo根据用户问题搜索结果,然后把结果丢给r1节点,并带上官方的R1联网搜索提示词)
search_answer_zh_template = \
'''# 以下内容是基于用户发送的消息的搜索结果:
{search_results}
在我给你的搜索结果中,每个结果都是[webpage X begin]...[webpage X end]格式的,X代表每篇文章的数字索引。请在适当的情况下在句子末尾引用上下文。请按照引用编号[citation:X]的格式在答案中对应部分引用上下文。如果一句话源自多个上下文,请列出所有相关的引用编号,例如[citation:3][citation:5],切记不要将引用集中在最后返回引用编号,而是在答案对应部分列出。
在回答时,请注意以下几点:
- 今天是{cur_date}。
- 并非搜索结果的所有内容都与用户的问题密切相关,你需要结合问题,对搜索结果进行甄别、筛选。
- 对于列举类的问题(如列举所有航班信息),尽量将答案控制在10个要点以内,并告诉用户可以查看搜索来源、获得完整信息。优先提供信息完整、最相关的列举项;如非必要,不要主动告诉用户搜索结果未提供的内容。
- 对于创作类的问题(如写论文),请务必在正文的段落中引用对应的参考编号,例如[citation:3][citation:5],不能只在文章末尾引用。你需要解读并概括用户的题目要求,选择合适的格式,充分利用搜索结果并抽取重要信息,生成符合用户要求、极具思想深度、富有创造力与专业性的答案。你的创作篇幅需要尽可能延长,对于每一个要点的论述要推测用户的意图,给出尽可能多角度的回答要点,且务必信息量大、论述详尽。
- 如果回答很长,请尽量结构化、分段落总结。如果需要分点作答,尽量控制在5个点以内,并合并相关的内容。
- 对于客观类的问答,如果问题的答案非常简短,可以适当补充一到两句相关信息,以丰富内容。
- 你需要根据用户要求和回答内容选择合适、美观的回答格式,确保可读性强。
- 你的回答应该综合多个相关网页来回答,不能重复引用一个网页。
- 除非用户要求,否则你回答的语言需要和用户提问的语言保持一致。
# 用户消息为:
{question}'''
如果是其他问题,走上半部分的流程,直接不带任何系统提示词调用R1。
当然根据官方提供的资料,最好把r1的温度值设置在0.6。
不过这里用的免费DuckDuckGO,其搜索结果可能没有DeepSeek官方丰富。
也无法溯源搜索网页,体验上较官方还是差一些。
但是速度是真的快,效果也是不错滴~
最后,如果你是云服务器部署,还可以方便的一键分享给朋友使用。
点击开始使用,复制这个链接
当然如果是本地部署,可以分享给局域网内的同事使用。
如果使用内网穿透之后,也可以把本地部署的FastGPT服务提供到外网访问(篇幅原因,这里就不过多赘述了,推荐使用 贝锐花生壳 实现内网穿透)
好了希望这个教程能够帮助到大家
或者给大家一些启发
FastGPT的玩儿法不止于此,发挥想象力,搞起来~
大模型API是AI时代一个绕不开的关键要素,真心希望大家能动手实践一遍
纸上得来终觉浅,绝知此事要躬行!
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-05
FastGPT 一招帮你解决 DeepSeek R1 的卡顿问题
2025-01-02
SiliconCloud x FastGPT:让20万用户打造专属AI知识库
2024-12-04
FastGPT 3分钟实现李继刚的“汉语新解”(保姆级教程)
2024-10-30
扔掉 Google 翻译!这个超强 AI 翻译工作流才是你的最佳选择
2024-09-12
FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统
2024-09-07
FastGPT 正式接入 Flux,准备好迎接 AI 绘画的狂风了么?
2024-08-24
简洁优雅知识库 FastGPT 快速部署
2024-08-22
FastGPT:利用大模型重新定义传统知识库
2024-04-23
2024-05-09
2024-05-09
2024-05-08
2024-05-08
2024-06-03
2024-04-24
2024-09-12
2024-05-01
2024-07-26