AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


我用FastGPT复刻了官方DeepSeek+联网~

发布日期:2025-02-15 15:52:22 浏览次数: 2222 来源:袋鼠帝AI客栈
推荐语

探索如何用FastGPT复刻官方DeepSeek,提升检索速度与效率。

核心内容:
1. 袋鼠帝自建DeepSeek R1,提供快速稳定的联网检索体验
2. FastGPT与DeepSeek R1的结合使用,实现本地与云端部署
3. 详细步骤指导,从本地部署FastGPT到复刻官方DeepSeek R1功能

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

最近有朋友留言说,相比其他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

咱们还是老规矩,部署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:# dbpg:image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云container_name: pgrestart: alwaysports: # 生产环境建议不要暴露- 5432:5432networks:- fastgptenvironment:# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果- POSTGRES_USER=username- POSTGRES_PASSWORD=password- POSTGRES_DB=postgresvolumes:- ./pg/data:/var/lib/postgresql/datamongo:image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云container_name: mongorestart: alwaysports:- 27017:27017networks:- fastgptcommand: mongod --keyFile /data/mongodb.key --replSet rs0environment:- MONGO_INITDB_ROOT_USERNAME=myusername- MONGO_INITDB_ROOT_PASSWORD=mypasswordvolumes:- ./mongo/data:/data/dbentrypoint:- bash- -c- |openssl rand -base64 128 > /data/mongodb.keychmod 400 /data/mongodb.keychown 999:999 /data/mongodb.keyecho 'const isInited = rs.status().ok === 1if(!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; doecho "Waiting for MongoDB to start..."sleep 2done
# 执行初始化副本集的脚本mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js
# 等待docker-entrypoint.sh脚本执行的MongoDB服务进程wait $$!
# fastgptsandbox:container_name: sandboximage: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.21-fix # 阿里云networks:- fastgptrestart: alwaysfastgpt:container_name: fastgptimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.21-fix # 阿里云ports:- 3000:3000networks:- fastgptdepends_on:- mongo- pg- sandboxrestart: alwaysenvironment:# 前端访问地址: 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=falsevolumes:- ./config.json:/app/data/config.json
# oneapimysql:image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云container_name: mysqlrestart: alwaysports:- 3306:3306networks:- fastgptcommand: --default-authentication-plugin=mysql_native_passwordenvironment:# 默认root密码,仅首次运行有效MYSQL_ROOT_PASSWORD: oneapimmysqlMYSQL_DATABASE: oneapivolumes:- ./mysql:/var/lib/mysqloneapi:container_name: oneapi    image: ghcr.io/songquanpeng/one-api:v0.6.10ports:- 3001:3000depends_on:- mysqlnetworks:- fastgptrestart: alwaysenvironment:# 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=fastgptvolumes:- ./oneapi:/datanetworks: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接入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+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

和创始人交个朋友

回到顶部

 

加载中...

扫码咨询