首页 > 教程攻略 > ai资讯 >我用FastGPT复刻了官方DeepSeek+联网~

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

来源:互联网 时间:2026-07-20 13:09:06

手把手教你复刻官方DeepSeek:FastGPT本地部署与联网实战

上周有朋友留言,说对比了一圈各家提供的DeepSeek服务,还是觉得官方原版用起来最顺手。这个问题其实挺有意思——官方到底做了什么优化,让体验感明显优于其他渠道?

有意思的是,就在昨天DeepSeek正式公布了R1的官方提示词和使用方法。看下来你会发现,官方其实并没有什么神秘的“黑科技”,整个调用逻辑非常朴素。更妙的是,这套逻辑完全可以在本地复现。

最近用

FastGPT

加上

火山引擎的DeepSeek API

,按照官方公开的使用方式,搭建了一套完全自主可控的DeepSeek R1服务。效果怎么样?一句话:

响应速度快、运行极其稳定

,体验上已经不输给官方网页版。

这套组合拳——

DeepSeek + FastGPT

,堪称目前个人部署领域的“王炸”配置。它既能跑在本地Windows、Mac上,也完全可以在云端Linux服务器上运行,灵活度很高。

先说下

FastGPT

。它是一个完全

开源

的智能体平台,定位类似于Coze,但在

知识库问答

这块表现特别出色。目前在GitHub上已经有21.1K Star(图中“万”是翻译误差,实际是千),社区活跃,文档齐全,强烈推荐给所有AI应用开发者。

教程分为几个关键步骤:

1. 本地部署FastGPT
2. 获取火山引擎DeepSeek R1的API Key和模型ID(目前有50万tokens免费额度)
3. 将DeepSeek R1接入FastGPT
4. 通过FastGPT工作流,复刻官方的DeepSeek R1+联网功能

一、本地部署FastGPT

先说部署这件事。还是老规矩,

部署FastGPT之前要先安装Docker

。Docker的价值在于——通过它你可以一键拉起绝大多数开源项目,不只是FastGPT。对于经常折腾AI模型的朋友来说,装上Docker绝对是值得的投资。

Docker的安装教程网上已铺天盖地,这里不再重复。下面以Windows为例,Linux和Mac的操作思路完全一致。

接下来用

FastGPT官方提供的docker-compose.yml文件

来一键启动整个服务栈。

第一步:随便找个文件夹,新建一个空白.txt文件。

第二步:把下面的docker-compose.yml内容完整复制进去,保存。

# 数据库的默认账号和密码仅首次运行时设置有效
# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~
# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。
# 如何无法访问 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

命令确认——应该能看到6个容器在运行。也可以打开Docker Desktop查看。

整个服务栈中,主要关注

fastgpt

one-api

这两个服务即可。

访问地址:
FastGPT页面:

http://127.0.0.1:3000/

,默认账号

root

,密码

1234


one-api页面:

http://127.0.0.1:3001/

,默认账号

root

,密码

123456

这里多说一句:

one-api是什么?

它是一个开源的AI API中转站。实际上目前市面上大部分API中转服务,底层走的都是one-api的架构。它的核心功能是:可以配置对接几乎所有主流大模型的API,最终以OpenAI API的统一格式对外提供服务。简单来说,有了one-api,后续在FastGPT里就可以随意切换不同模型,不用为每个模型单独做适配。

二、将满血版DeepSeek接入FastGPT

如何把DeepSeek接到FastGPT里?答案是通过

DeepSeek API

。在此之前,可以先参考一下社区里关于主流DeepSeek API提供商的测速对比——从速度测试结果来看,

字节跳动旗下的火山引擎响应速度最快

,毕竟财大气粗。目前火山引擎还免费赠送

50万tokens

,足够白嫖一段时间。

先到火山引擎后台,获取R1和V3模型的ID以及API Key。具体获取步骤可以参考社区文章《火山引擎V3、R1 API》,介绍得比较详细。

拿到模型ID和API Key之后,接下来去

one-api

做渠道配置。

在one-api后台,选择

添加新的渠道

,按照图示配置火山引擎的V3和R1 API:

模型重定向JSON:

{
"deepseek-chat": "v3的模型id",
"deepseek-reasoner": "r1的模型id"
}

填好API Key后提交保存,然后点击测试——右上角弹出“保存成功”的提示,就说明配置生效了。

接着回到

FastGPT

,在“工作台 -> 新建 -> 工作流”中,添加

deepseek-chat(V3)

deepseek-reasoner(R1)

两个模型。

搭建一个简易工作流,基本就能复刻出DeepSeek官方的R1+联网搜索效果。

工作流的逻辑非常清晰:首先是一个

问题分类节点

,用来判断用户提问是否需要联网搜索。

如果是联网类问题,走下半部分流程——先通过DuckDuckGo搜索用户问题,然后将搜索结果发给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的玩法远不止于此——知识库、工作流、多模型路由……认真研究,能玩出的花样远超你的想象。大模型API是AI时代绕不开的基本功,真心建议动手实践一遍。纸上得来终觉浅,绝知此事要躬行。