无需云端!绿联NAS本地部署Deepseek,微信、公众号、钉钉全能AI助手
-
✅ 多端部署: 有多种部署方式可选择且功能完备,目前已支持微信公众号、企业微信应用、飞书、钉钉等部署方式
-
✅ 基础对话: 私聊及群聊的消息智能回复,支持多轮会话上下文记忆,支持 GPT-3.5, GPT-4o-mini, GPT-4o, GPT-4, Claude-3.5, Gemini, 文心一言, 讯飞星火, 通义千问,ChatGLM-4,Kimi(月之暗面), MiniMax, GiteeAI
-
✅ 语音能力: 可识别语音消息,通过文字或语音回复,支持 azure, baidu, google, openai(whisper/tts) 等多种语音模型
-
✅ 图像能力: 支持图片生成、图片识别、图生图(如照片修复),可选择 Dall-E-3, stable diffusion, replicate, midjourney, CogView-3, vision模型
-
✅ 丰富插件: 支持个性化插件扩展,已实现多角色切换、文字冒险、敏感词过滤、聊天记录总结、文档总结和对话、联网搜索等插件
-
✅ 知识库: 通过上传知识库文件自定义专属机器人,可作为数字分身、智能客服、私域助手使用,基于LinkAI实现
-
- *
一、申请Deepseek API
1、申请方法
前段时间,由于海外的攻击,deepseek团队关闭了账号注册以及开发平台申请。但截至目前,开发平台已经重新开放了,我们只需要登录官方,选择API开放平台注册即可。
[]
首次注册的用户,官方赠送了10元的余额,按照目前百万tokens 8元输出计算,可以输出133万左右中文,足够我们用很久了。
[]
接着,点击左侧的API Keys,选择创建API keys,然后输入一个自定义名称来指定api使用的场景。
[]
记得复制保存在这里的token,关闭后将无法再次获取,只能删除重新创建。
[]
2、本地部署Deepseek-R1
首先我们本地部署ollama,将下面的compose代码复制到绿联NAS的docker界面部署
services:
ollama: volumes: - ./data:/root/.ollama ports: - 11434:11434 container_name: ollama image: ollama/ollama
[]
部署完成后,选择ollama容器,在终端新增一个`/bin/bash`命令行,在控制台输入`ollama run deepsekk-r1:8b`下载模型。
deepsekk-r1:8b模型大小为4.9G容量,我这边下载需要1个小时左右,我们需要使用8 GB内存来运行 7B 模型,16 GB内存来运行 13B 的模型。下载完成后,我们就可以使用`http://localhost:11434/api/`来作为本地deepseek的api接口了。
[]
二、绿联部署Chatgpt-on-wechat
接着我们来部署chatgpt-on-wechat项目,该项目支持在微信(目前不行)、企业微信、钉钉、飞书、微信公众号等平台对接部署,其中钉钉不需要有公网ip或域名,其它类型都需要有80/443端口的域名或公网IP。
这里,我们分别介绍如何使用钉钉、微信公众号。
1、修改yaml文件
下面的代码是本项目的docker-compose.yaml代码,我们主要修改AI API信息,这里一步步拆解来讲。
version: '2.0'
services: chatgpt-on-wechat: image: zhayujie/chatgpt-on-wechat container_name: chatgpt-on-wechat security_opt: - seccomp:unconfined volumes: # 插件配置文件,详见第三章插件配置 - ./config.json:/app/plugins/config.json environment: TZ: 'Asia/Shanghai' # 深度求索API OPEN_AI_API_BASE: 'https://api.deepseek.com/v1' OPEN_AI_API_KEY: 'sk-xxxxxxxxxxx' # 'deepseek-chat' 即可调用 DeepSeek-V3。'deepseek-reasoner'即可调用 DeepSeek-R1。 MODEL: 'deepseek-reasoner' # OpenAI代理,为空即可 PROXY: '' # 私聊时,唤醒Bot的前缀 SINGLE_CHAT_PREFIX: '["cherry", "@cherry"]' # 私聊时,Bot回复的前缀 SINGLE_CHAT_REPLY_PREFIX: '"[cherry] "' # 群聊时,唤醒Bot的前缀 GROUP_CHAT_PREFIX: '["@bot"]' # 开启自动回复的群名称列表 GROUP_NAME_WHITE_LIST: '["test", "test2"]' # 开启图片回复的前缀 IMAGE_CREATE_PREFIX: '["画", "看", "找"]' # 支持上下文记忆的最多字符数 CONVERSATION_MAX_TOKENS: 1000 # 是否开启语音识别 SPEECH_RECOGNITION: 'False' # 提示词 CHARACTER_DESC: '你叫cherry,是一个擅长NAS和数码领域的科技工程师' EXPIRES_IN_SECONDS: 3600 USE_GLOBAL_PLUGIN_CONFIG: 'True' # 以下为Link_AI收费模块 USE_LINKAI: 'False' LINKAI_API_KEY: '' LINKAI_APP_CODE: '' # 以下为对接钉钉,和公众号2选1 # CHANNEL_TYPE: "dingtalk" # DINGTALK_CLIENT_ID: "dixxxxxxdo" # DINGTALK_CLIENT_SECRET: "bvg3xxxxxxxxxxxxxxxzc4K8 # 以下为对接微信公众号,和公众号2选1 # CHANNEL_TYPE: "wechatmp" # SINGLE_CHAT_PREFIX: '[""] ' # WECHATMP_APP_ID: "wx73f9******d1e48" # WECHATMP_APP_SECRET: "weca******est" # WECHATMP_AES_KEY: "" # WECHATMP_TOKEN: "tok**est" # WECHATMP_PIORT: 80
2、修改 AI 接口和模型
API标准接口,根据选择的不同而不同。如果使用deepseek的话,则不需要修改。
OPEN_AI_API_BASE: 'https://api.deepseek.com/v1' # DeepSeek的api key,按照第一步申请后填写 OPEN_AI_API_KEY: 'sk-XXXXXX' # 模型,'deepseek-chat' 即可调用 DeepSeek-V3。'deepseek-reasoner'即可调用 DeepSeek-R1。 MODEL: 'deepseek-reasoner'
3、配置参数并接入个人微信(不建议)
在不配置`CHANNEL_TYPE`环境变量的时候,默认接入个人微信,不过现在个人微信封号严重,登录2次必被警告或封号,因此不建议使用,建议等后续新的方案出来。<span data-forecolor="#e62828" style="outline: 0px; color: var(--color-e62828);">(我的维系号现在还被封着,难受!)</span>
[]
<span data-forecolor="#e62828" style="outline: 0px; color: var(--color-e62828);">?如果对个人微信接入很有需要的,可以尝试另外两个项目</span>**【lss233/chatgpt-mirai-qq-bot】或者【Soulter/AstrBot】**
[]
4、配置参数并接入公众号
CHANNEL_TYPE: "wechatmp"
SINGLE_CHAT_PREFIX: '[""] ' WECHATMP_APP_ID: "wx73f9******d1e48" WECHATMP_APP_SECRET: "weca******est" WECHATMP_AES_KEY: "" WECHATMP_TOKEN: "alaalayoyo" WECHATMP_PIORT: 80 如果使用HTTPS则修改为443
打开微信公众号后台,依次点击**设置与开发-开发接口管理-基本配置-应用开发者**打开配置。
[]
首先是上面的账号开发信息,按要求填入yaml文件对应的参数中,然后配置域名或固定IP到白名单里。
[]
接着,点开下方的服务器配置,配置所有的自定义参数。
[]
同样将对应的内容配置到yaml文件中,然后等待启动容器后提交应用。
[]
5、配置参数并接入钉钉
CHANNEL_TYPE: "dingtalk"
DINGTALK_CLIENT_ID: "dingxxxxxxxxxxx2vdo" DINGTALK_CLIENT_SECRET: "bvg3pxxxxxxxxxxxxxxxxxiKzc4K8"
登录钉钉开放后台,扫码登录,选择左侧的**钉钉应用-创建应用**。
[]
在右侧填入应用名称、描述、图标后提交保存。
[]
接着,点击左侧的应用能力,添加应用能力,选择机器人。
[]
依旧填写描述、名字信息。
[]
在内部添加细节,然后点击发布。
[]
返回**凭证与基础信息**,Client ID和Client Secret分别填入yaml的两行代码中。
[]
接着部署容器,等完成部署以后,回到钉钉开发平台,选择事件订阅,这里可以看到蓝字**已完成接入,验证连接通道**。
[]
最后一步,返回应用首页,在版本详情处点击编辑按钮。
[]
在里面填写版本号、版本描述后发布,之后就可以在钉钉里看到并且加入了。
[]
5、绿联私有云部署方法
如果网络没有优化的,可以先从我准备的网盘里下载镜像文件,双击exe解压并导入绿联私有云中。
阿里云盘:https://www.alipan.com/s/FxNMhQhXL3y
夸克网盘:[https://pan.quark.cn/s/469ed9d24a22](https://pan.quark.cn/s/469ed9d24a22 "https://pan.quark.cn/s/469ed9d24a22")
[]
打开docker-项目,录入项目名称,然后把上面配置好的docker-compose.yaml内容复制到compose配置中提交。
[]
如果后续想接入微信的,可以点开项目-容器进入到单个容器页面,查看日志进行扫码登录。
[]
6、使用效果展示
这我展示了钉钉端的效果,把AI机器人拉入群以后,直接@机器人就可以提问。如果私聊的话,则直接对话即可。
[]
三、配置Chatgpt-on-wechat插件
新建一个config.json文件,内容包括如下,之后上传到绿联NAS的容器目录下(忘记的回看yaml文件,里面有备注)。
{
"godcmd": { "password": "", "admin_users": [] }, "banwords": { "action": "replace", "reply_filter": true, "reply_action": "ignore" }, "tool": { "tools": [ "url-get", "meteo-weather" ], "kwargs": { "top_k_results": 2, "no_default": false, "model_name": "gpt-3.5-turbo" } }, "linkai": { "group_app_map": { "测试群1": "default", "测试群2": "Kv2fXJcH" }, "midjourney": { "enabled": true, "auto_translate": true, "img_proxy": true, "max_tasks": 3, "max_tasks_per_user": 1, "use_image_create_prefix": true }, "summary": { "enabled": true, "group_enabled": true, "max_file_size": 5000, "type": ["FILE", "SHARING"] } }, "hello": { "group_welc_fixed_msg": { "群聊1": "群聊1的固定欢迎语", "群聊2": "群聊2的固定欢迎语" }, "group_welc_prompt": "请你随机使用一种风格说一句问候语来欢迎新用户"{nickname}"加入。", "group_exit_prompt": "请你随机使用一种风格跟其他群用户说他违反规则"{nickname}"退出。", "patpat_prompt": "请你随机使用一种风格介绍你自己,并告诉用户输入#help可以查看帮助信息。", "use_character_desc": false }, "Apilot": { "alapi_token": "xxx", "morning_news_text_enabled": false } }
接着,重启容器,然后在日志里查看打印出来的临时口令。
[]
在跟AI机器人私聊的时候,输入`#auth 口令`来激活管理员模式,然后输入`#help`可以查看插件相关指令,根据指令去下载使用即可。
[]
除了管理员模式外,还涉及到两个插件API。
**一个是Link.AI**。在官网(`link-ai.tech/`)注册,之后可以调用官方插件或者创建自定义插件。点击左侧的渠道接入,创建一个API备用。
[]
接着点击左侧的应用,创建一个APP,复制应用Code备用。APP使用的是Link.AI内置的大模型算法,不过使用插件需要消耗积分,可以通过每日签到来获取积分。
[]
对应到docker-compose.yaml里的代码如下
从Flase改为True
USE_LINKAI: 'True' # 填入注册的API LINKAI_API_KEY: 'Link_xxxxxxxxxxxxxxxxxxxxIyyL' # 填入创建的APP代码 LINKAI_APP_CODE: ''
**第二个是alapi**。同样在官网注册`www.alapi.cn/explore`,之后去前面的`config.json`的倒数第二alapi_token去做添加,修改完以后即可重启容器。
"Apilot": {
"alapi_token": "xxx", "morning_news_text_enabled": false }
[]
总结
随着 AI 水平的不断提升,NAS+AI的组合也开始逐步发力,一方面是硬件侧的处理器、显卡算力加持,另一方面则是软件侧的AI赋能。
比如绿联UGOS Pro,就将AI能力加入到相册中,实现了人物识别、重复照片查找、文字识别、场景/物体识别、画面识别等应用场景,还支持模型自定义学习等,大大方便了绿联NAS私有云的用户使用。
[]