FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

DeepSeek + FastGPT真的是一对王炸组合,并且可部署在本地windows、mac、也可部署在云端的Linux系统上。


FastGPT是什么?

FastGPT是一个开源项目(是一个类似于Coze的智能体平台),它的知识库问答效果非常好,强烈推荐给大家!

目前FastGPT在GitHub已经有21.1K Star。

GitHub项目:https://github.com/labring/FastGPT

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

安装使用流程

  • 本地部署FastGPT;
  • 获取火山引擎的DeepSeek R1 apikey和模型id(有免费50万tokens);
  • 将DeepSeek R1接入FastGPT;
  • 利用FastGPT工作流复刻官方的DeepSeek R1 + 联网功能。

一、本地部署FastGPT

咱们还是老规矩,部署FastGPT之前还是要先安装docker,通过docker我们可以一键部署FastGPT(不仅FastGPT,大部分的开源项目都可以用docker一键部署),所以我强烈建议玩儿AI的朋友都安装上docker。

对于如何安装docker,网上已经有大量详细的教程,这里就不过多赘述了。

本次教程以windows为例,Linux、mac也是类似操作。

接下来我们使用FastGPT的docker-compose.yml文件把FastGPT一键启动。

首先随便找一个文件夹,新建一个空白.txt文件

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

然后把下面的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

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

在添加一个配置文件: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%+精度。
  }
}

后台发送:fastgpt获取这两个文件,然后在当前目录的地址栏上输入cmd回车,就能进入控制台

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

接着输入docker-compose up -d 指令,回车

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

当出现一堆started(如下图),就表示启动成功了

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

docker ps 指令,可以查看现在有六个服务在运行

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

也可以到docker-desktop里面查看

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

我们主要关注fastgptone-api这两个服务即可。

访问FastGPT的页面:http://127.0.0.1:3000/

FastGPT 账号:root,初始密码:1234

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

访问one-api的页面:http://127.0.0.1:3001/

one-api 账号:root,初始密码:123456

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

one-api又是什么呢?

one-api是一个开源AI_API中转站(可以说目前市面上大部分的API中转站都是基于one-api二次开发出来的),它能够配置对接市面上几乎所有的主流大模型API,并已OpenAI API的调用方式统一对外提供服务。

简单来说,使用one-api,我们后续就可以在fastgpt随意切换大模型使用。

Github项目:https://github.com/songquanpeng/one-api

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

二、满血版DeepSeek接入FastGPT

如何把DeepSeek接入FastGPT呢,答案是通过DeepSeek API接口。

目前火山引擎免费送 50万token

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

我们需要先去字节的火山引擎获取R1和V3的模型id,以及Apikey。

1. 首先打开火山引擎的 DeepSeek R1 模型页面地址:https://console.volcengine.com/ark/region:ark+cn-beijing/model/detail?Id=deepseek-r1

2. 在页面右下角,找到【推理】按钮,点击,因为下列按钮,都不好找,所以我画了一些大大的箭头给大家!

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

3. 点击之后出现了接入点,也就是 API 创建页面,什么都不用修改,直接点右下角的【确认接入】按钮

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

4. 接入之后,在接入点列表找到最新创建的接入点,点击【API调用】按钮

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

5. 在API调用页面要做两个事情:

5.1 在上方有个很小的复制按钮,点击【复制】,这样就拿到了模型 ID,第一个要素搞定,收藏备用

5.2 在右下角点击【选择 API Key 并复制】,去获取自己的 API Key

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

6. 获取自己的 API Key

6.1 创建一个 API Key

6.2 查看并选择自己的 API Key

6.3 点击【复制使用】,第二个要素搞定,收藏备用

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

现在,我们就拿到了火山云 R1 模型的 ID 和 API Key。

火山云的调用地址是统一的 https://ark.cn-beijing.volces.com/api/v3

我们获取到模型id和apikey之后,需要去one-api配置一下

添加新的渠道

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

按照下图 添加火山引擎的v3和r1 API配置

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

模型重定向json:

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

在填写apikey之后就可以提交保存

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

保存之后点击一下测试,如果右上角出现保存成功的提示就代表配置OK啦。

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

接下来我们去FastGPT添加deepseek-chat(V3)和deepseek-reasoner(R1)模型。

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

工作台->新建->工作流

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

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

FastGPT+火山引擎的DeepSeek API,搭建自己的联网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+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

点击开始使用,复制这个链接

FastGPT+火山引擎的DeepSeek API,搭建自己的联网DeepSeek R1

当然如果是本地部署,可以分享给局域网内的同事使用。

如果使用内网穿透之后,也可以把本地部署的FastGPT服务提供到外网访问。

阅读剩余 95%

转载作品,原作者:,文章来源:https://www.toutiao.com/article/7476295537445192192

(0)
打赏 微信赞赏 微信赞赏 支付宝赞赏 支付宝赞赏
上一篇 2025-03-01 05:31
下一篇 2025-03-03 16:32

相关推荐

发表回复

登录后才能评论
扫码了解
扫码了解
反馈建议
分享本页
返回顶部