如何在啥也不懂的情况下将你的公众号接入DeepSeek或其它大模型

news/2025/2/24 12:07:02/文章来源:https://www.cnblogs.com/puzhiwei/p/18717748

如何在啥也不懂的情况下将你的公众号接入DeepSeek或其它大模型

前言

最近国产大模型的"顶流"DeepSeek可谓是红得发紫,朋友圈刷屏的AI神回复、公众号爆款推文,都少不了它的身影。

可当我们兴冲冲跑去官网体验时,却迎面撞上服务器被挤爆的盛况——问就服务器繁忙,请稍后再试,真是令人头大。

运行繁忙截图

那么能不能将 DeepSeek 接入到自己的公众号,实现自动回复消息功能呢。

转折有点突兀是把,不要怀疑,这前言也是AI写的😂

但是估计是提示词没写好,就这样吧

下面内容默认你已经注册好了一个公众号和一个云服务器,如果你不知道如何购买云服务器,你可以像我一样问AI

实现

一、了解什么项目可以实现这个功能

假如我们现在啥也不会,第一步应该怎么干?

当然是先找个能联网的AI问了

我想要将deepseek r1模型接入到我的微信公众号内,实现ai自动回复消息,有没有什么开源项目可以实现这个功能

找AI问

好,现在我们知道了有这样一个开源项目 chatgpt-on-wechat 可以实现这个功能,然后我们就可以去GitHub搜索这个项目,找到这个项目的主页:https://github.com/zhayujie/chatgpt-on-wechat

二、了解 chatgpt-on-wechat 这个项目

既然知道了 chatgpt-on-wechat 这个项目,我们就先了解一下这个项目

一般情况下,一个开源项目的主页会展示一篇 README,来介绍这个项目实现的功能和如何部署,正常流程是我们应该来仔细阅读一下这个项目的 README,但是AI时代,这个坏习惯该改一改了,开个玩笑,该看还得看,后面微信公众号后台配置部分还是得看文档😂

cow主页

豆包在AI编程部分提供了引入GitHub仓库的功能,这时候我们只需要将chatgpt-on-wechat 这个项目交给豆包,他就能简单高效的帮你分析这个项目

引入仓库

然后我们就等AI的分析结果就好

1

这时候就直接问豆包

我想要快速简单的部署这个项目,请帮我介绍一下最简单方便的方法

这时候豆包应该会给你提供几种部署方案

然后我们再接着问

还有更简单的方式吗,文档中有没有对这几种部署方式介绍优劣,你能帮我列个表格分析一下,然后推荐出最好用的哪种部署方式吗

2

可以看到这个项目提供了一键安装启动脚本,那么我们就先用这个一键安装启动脚本来试一下

一键安装脚本

好,出问题了,因为操作系统版本太高和 Python 版本不匹配没法运行,所以我们需要切换AI推荐的第二种部署方式 Docker

三、Docker 部署项目

1、安装 docker

接着我们就问 AI

用docker部署这个项目应该如何操作

这时候 AI 应该就会告诉你要先安装 docker 及 docker-compose。安装成功的表现是执行 docker -v 和 docker-compose version(或 docker compose version)可以查看到版本号。

身为一个啥也不会的小白,肯定不知道 docker 及 docker-compose 和怎么安装啊

所以就需要接着问 AI

docker 及 docker-compose 应该怎么安装啊

AI 应该会给你一个具体的安装流程,但是当你跟着 AI 给的流程应该有 80% 的可能性安装失败,因为 docker 官方服务器在国内访问有些问题

所以正确操作应该是问 AI

我是Ubuntu24的操作系统,因为网络连接问题没法添加 Docker 的官方 GPG 密钥,请给我使用国内镜像安装docker的流程

这里涉及到一个使用大模型的技巧,就是你给AI的提示词一定要详细,这样大模型的返回结果才能足够精准

另外还有一个问题,就是你可能不知道是网络的原因,这时候应该怎么做?

很简单,你就把安装失败的报错信息发给 AI,AI应该就会告诉你是什么原因以及解决方案的。

国内镜像

安装好 docker 及 docker-compose 后,我们就可以返回前面 AI 介绍的 docker 部署chatgpt-on-wechat 部分内容

查看后面的步骤

2、编写 docker-compose.yml

AI提到我们可以下载 docker-compose.yml 这个配置文件,修改后运行

下载docker-compose.yml

但是我们是一个小白,不知道怎么修改 docker-compose.yml 文件

这时候就可以直接让 AI 帮我们生成一个 docker-compose.yml 配置文件

根据这个开源项目,帮我生成一个使用docker部署的docker-compose.yml文件,要求如下采用 Deepseek 的 API 作为接入模型,然后我想要接入微信公众号,要有微信公众号相关配置,生成的docker-compose.yml每行应该有中文注释,方便我修改学习

这时 AI 应该会生成下面这样一个配置文件

version: '2.0'  # 指定 docker-compose 文件的版本
services:  # 定义服务列表chatgpt-on-wechat:  # 服务名称image: zhayujie/chatgpt-on-wechat  # 使用的 Docker 镜像container_name: chatgpt-on-wechat  # 容器的名称security_opt:  # 安全选项- seccomp:unconfined  # 不限制容器的 seccomp 配置environment:  # 环境变量配置TZ: 'Asia/Shanghai'  # 时区设置为亚洲/上海OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY'  # Deepseek 的 API Key,需要替换为实际的 KeyMODEL: 'Deepseek Model'  # 模型名称,这里应根据 Deepseek 实际模型名修改PROXY: ''  # 代理设置,默认为空SINGLE_CHAT_PREFIX: '["bot", "@bot"]'  # 单聊前缀SINGLE_CHAT_REPLY_PREFIX: '"[bot] "'  # 单聊回复前缀GROUP_CHAT_PREFIX: '["@bot"]'  # 群聊前缀GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'  # 群名称白名单IMAGE_CREATE_PREFIX: '["画", "看", "找"]'  # 图片创建前缀CONVERSATION_MAX_TOKENS: 1000  # 对话最大令牌数SPEECH_RECOGNITION: 'False'  # 语音识别开关,默认为关闭CHARACTER_DESC: '你是基于 Deepseek 模型的助手,能够回答各种问题。'  # 角色描述EXPIRES_IN_SECONDS: 3600  # 过期时间,单位为秒USE_GLOBAL_PLUGIN_CONFIG: 'True'  # 是否使用全局插件配置USE_LINKAI: 'False'  # 是否使用 LinkAI,默认为关闭LINKAI_API_KEY: ''  # LinkAI 的 API Key,默认为空LINKAI_APP_CODE: ''  # LinkAI 的应用代码,默认为空# 以下为微信公众号相关配置CHANNEL_TYPE: 'wechatmp'  # 通道类型设置为微信公众号WECHATMP_TOKEN: 'YOUR_WECHATMP_TOKEN'  # 微信公众平台的 Token,需要替换为实际的 TokenWECHATMP_PORT: 8080  # 微信公众平台的端口,需要端口转发到 80 或 443WECHATMP_APP_ID: 'YOUR_WECHATMP_APP_ID'  # 微信公众平台的 appID,需要替换为实际的 appIDWECHATMP_APP_SECRET: 'YOUR_WECHATMP_APP_SECRET'  # 微信公众平台的 appsecret,需要替换为实际的 appsecretWECHATMP_AES_KEY: ''  # 微信公众平台的 EncodingAESKey,加密模式需要,默认为空

我们先简单看一下,AI生成的配置文件有没有什么问题

有微信公众号相关配置,也有 Deepseek 的 API 配置,看着好像没啥问题

我们先假设这个配置文件没有问题,那剩下的就是修改这份配置文件,将为微信公众号相关配置和deepseek相关配置修改为自己的

要修改这些信息,我们就要先去获得这些配置需要的数据

四、获取公众号配置与 DeepSeek API

1、获取公众号配置

登录微信公众号后台

选择设置与开发,开发接口管理

生成开发者密码,配置IP白名单为你服务器地址

然后修改服务器配置

其中 Token 和 EncodingAESKey 均为自己填写,并不是微信服务器生成的,所以你可以自己设置一个

      CHANNEL_TYPE: "wechatmp"  # 如果通过了微信认证,将"wechatmp"替换为"wechatmp_service",可极大的优化使用体验WECHATMP_TOKEN: ""  # 微信公众平台的Token,需要替换为你自己的WECHATMP_PORT: 80  # 微信公众平台的端口,需要端口转发到80或443WECHATMP_APP_ID: "wx0 3e5cb6"  # 微信公众平台的appID,需要替换为你自己的WECHATMP_APP_SECRET: "202********31"  # 微信公众平台的appsecret,需要替换为你自己的WECHATMP_AES_KEY: "*************"  # 微信公众平台的EncodingAESKey,加密模式需要,如有则替换

可以参照官网这部分内容进行配置:https://docs.link-ai.tech/cow/multi-platform/wechat-mp

微信公众号配置

填写完这些配置后先不要提交,因为微信会用这些信息去验证你 chatgpt-on-wechat 项目的部署情况

如果你在服务器上还没有部署好这个项目,提交是不会通过的

2、 DeepSeek API 配置

在 DeepSeek 官网右上角,有一个 API 开放平台 https://platform.deepseek.com/usage

登陆后点进去 选择 API keys,创建 API Key

将生成的那串 API key 填写到配置文件 OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY' # Deepseek 的 API Key,需要替换为实际的 Key部分

模型名称点接口文档获取:https://api-docs.deepseek.com/zh-cn/

可以看到 deepseek-reasoner 就是最新的 DeepSeek R1 模型

所以 MODEL: 'deepseek-reasoner' # 模型名称,这里应根据 Deepseek 实际模型名修改 这里就填 deepseek-reasoner

但是我们看到 DeepSeek 文档里面写道还需要修改 base_url ,但是我们的配置文件里面没有修改 base_url 的选项,这时候就需要接着问一下 AI 了

docker-compose.yml中,修改openapi的base_url 环境变量是哪个

然后你就能知道上面的配置文件少了一个 OPEN_AI_API_BASE 的配置项

并且这个配置项的值为 https://api.deepseek.com/v1

      OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY'  # Deepseek 的 API Key,需要替换为实际的 KeyMODEL: 'deepseek-reasoner'  # 模型名称,这里应根据 Deepseek 实际模型名修改OPEN_AI_API_BASE: 'https://api.deepseek.com/v1'

五、运行 chatgpt-on-wechat

1、运行镜像

修改好 docker-compose.yml 文件后,我们应该就可以运行这个项目了

在你的服务器上新建一个文件夹,名称就叫 wechat 吧

mkdir wechat

进入文件夹

cd wechat

将 docker-compose.yml 上传到 wechat 下

然后执行

sudo docker compose up -d

这里涉及到的 Linux 命令我就不介绍了,有兴趣的可以直接问 AI

等待镜像加载完成,出现下面的字符

 Container chatgpt-on-wechat  Started 

就表示镜像已经成功运行

2、返回微信公众号,提交服务器配置

如果镜像运行没有问题,那么我们点击提交应该会正常保存服务器信息

但是现在会出现错误

出现这个原因的问题是第一次 AI 给我们的 docker-compose.yml 配置文件缺少了一个配置

这时候我们就得接着问 AI

我按照你给的 docker-compose.yml 启动了容器,但是无法正常访问,请仔细检查看docker-compose.yml是不是缺少了什么配置

然后 AI 就会告诉你缺少了端口映射的配置

    ports:- "80:80"  # 假设服务监听 8080 端口,将主机的 8080 端口映射到容器的 8080 端口

接下来将上面这条配置项增加上去,删除上一个容器,重新启动新的容器镜像

# 查看当前运行镜像
sudo docker ps -a
# 停止运行 chatgpt-on-wechat 镜像
# 5a92cab89ef5 为容器的 CONTAINER ID
sudo docker stop 5a92cab89ef5
# 删除镜像
sudo docker rm 5a92cab89ef5
# 重新启动
sudo docker compose up -d

如果没啥问题,浏览器直接访问 http://ip/wx 应该会出现下面的界面

最后再次返回微信公众号,提交服务器配置,应该就能正常保存配置信息了

保存后返回,点击启用,启用服务器配置

六、发送消息测试

服务器执行

sudo docker logs -f chatgpt-on-wechat

打开日志窗口查看日志

然后手机点开你的公众号,给他发送一条消息

虽然服务器可以收到消息,但是没法返回消息,并且出现了下面的报错

[ERROR][2025-02-14 10:32:41][wechatmp_channel.py:301] - [wechatmp] Fail to generate reply to user, msgId=24904067473459103, exception=str expected, not NoneType
Traceback (most recent call last):File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in runresult = self.fn(*self.args, **self.kwargs)File "/app/channel/chat_channel.py", line 170, in _handlereply = self._generate_reply(context)File "/app/channel/chat_channel.py", line 182, in _generate_replye_context = PluginManager().emit_event(File "/app/plugins/plugin_manager.py", line 196, in emit_eventinstance.handlers[e_context.event](e_context, *args, **kwargs)File "/app/plugins/role/role.py", line 105, in on_handle_contextbot = Bridge().get_bot("chat")File "/app/bridge/bridge.py", line 74, in get_botself.bots[typename] = create_bot(self.btype[typename])File "/app/bot/bot_factory.py", line 54, in create_botreturn DashscopeBot()File "/app/bot/dashscope/dashscope_bot.py", line 29, in __init__os.environ["DASHSCOPE_API_KEY"] = self.api_keyFile "/usr/local/lib/python3.10/os.py", line 685, in __setitem__value = self.encodevalue(value)File "/usr/local/lib/python3.10/os.py", line 757, in encoderaise TypeError("str expected, not %s" % type(value).__name__)
TypeError: str expected, not NoneType
172.20.0.1:44044 - - [14/Feb/2025 10:32:41] "HTTP/1.1 POST /wx" - 200 OK
[INFO][2025-02-14 10:32:58][passive_reply.py:97] - [wechatmp] Request 1 from oz1No1cH-6Uafl_f0916bp7ZvGPY 24904067723857883 172.20.0.1:44160
1
[INFO][2025-02-14 10:32:58][bridge.py:68] - create bot dashscope for chat
[ERROR][2025-02-14 10:32:58][wechatmp_channel.py:301] - [wechatmp] Fail to generate reply to user, msgId=24904067723857883, exception=str expected, not NoneType
Traceback (most recent call last):File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in runresult = self.fn(*self.args, **self.kwargs)File "/app/channel/chat_channel.py", line 170, in _handlereply = self._generate_reply(context)File "/app/channel/chat_channel.py", line 182, in _generate_replye_context = PluginManager().emit_event(File "/app/plugins/plugin_manager.py", line 196, in emit_eventinstance.handlers[e_context.event](e_context, *args, **kwargs)File "/app/plugins/role/role.py", line 105, in on_handle_contextbot = Bridge().get_bot("chat")File "/app/bridge/bridge.py", line 74, in get_botself.bots[typename] = create_bot(self.btype[typename])File "/app/bot/bot_factory.py", line 54, in create_botreturn DashscopeBot()File "/app/bot/dashscope/dashscope_bot.py", line 29, in __init__os.environ["DASHSCOPE_API_KEY"] = self.api_keyFile "/usr/local/lib/python3.10/os.py", line 685, in __setitem__value = self.encodevalue(value)File "/usr/local/lib/python3.10/os.py", line 757, in encoderaise TypeError("str expected, not %s" % type(value).__name__)
TypeError: str expected, not NoneType
172.20.0.1:44160 - - [14/Feb/2025 10:32:58] "HTTP/1.1 POST /wx" - 200 OK

如何解决呢,很简单,复制错误信息给 AI

AI 就会告诉你是因为缺少环境变量 DASHSCOPE_API_KEY

所以我们需要接着修改 docker-compose.yml 文件,增加 DASHSCOPE_API_KEY 配置

这个值与 DeepSeek API 保持一致

      OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY'  # Deepseek 的 API Key,需要替换为实际的 KeyMODEL: 'deepseek-reasoner'  # 模型名称,这里应根据 Deepseek 实际模型名修改OPEN_AI_API_BASE: 'https://api.deepseek.com/v1'DASHSCOPE_API_KEY: 'YOUR_DEEPSEEK_API_KEY'

删除镜像后重新启动容器,这是再发送消息,应该在手机上就能看到回复了

服务器端数据

至此,借助 AI,我们成功的将公众号接入了 DeepSeek 大模型

七、接入其它大模型

接入其它大模型流程与 DeepSeek 相同,只需要将

      OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY'  # Deepseek 的 API Key,需要替换为实际的 KeyMODEL: 'deepseek-reasoner'  # 模型名称,这里应根据 Deepseek 实际模型名修改OPEN_AI_API_BASE: 'https://api.deepseek.com/v1'DASHSCOPE_API_KEY: 'YOUR_DEEPSEEK_API_KEY'

这部分配置修改为其它大模型的即可

八、其它配置项

我们想实现当用户关注后自动回复一条消息,这个应该怎么修改

很简单,在 docker-compose.yml 文件中新增一条配置项目即可

      "subscribe_msg": "感谢您关注不挂高数!\n分享日常和碰到的技术问题,包括但不限于Java,Spring,Vue,Python,C#什么的。反正和高数没啥关系,至于为什么叫这个名字,那是因为我上大学那会,高数挂了,博客:buguagaoshu.com\n至于网课答案,你可以将题目复制粘贴到对话框,AI会给你答案\n如果需要清除聊天记忆,请回复:#清除记忆"

完整配置参考

version: '2.0'
services:chatgpt-on-wechat:image: zhayujie/chatgpt-on-wechatcontainer_name: chatgpt-on-wechatsecurity_opt:- seccomp:unconfinedports:- "80:80"environment:OPEN_AI_API_KEY: ''DASHSCOPE_API_KEY: ''MODEL: 'deepseek-reasoner'open_ai_api_base: 'https://api.deepseek.com/v1'SINGLE_CHAT_PREFIX: '[""]'SINGLE_CHAT_REPLY_PREFIX: '""'GROUP_CHAT_PREFIX: '["@bot"]'GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'clear_memory_commands: '["#清除记忆"]'# 微信公众号相关配置"subscribe_msg": "感谢您关注不挂高数!\n分享日常和碰到的技术问题,包括但不限于Java,Spring,Vue,Python,C#什么的。反正和高数没啥关系,至于为什么叫这个名字,那是因为我上大学那会,高数挂了,博客:buguagaoshu.com\n至于网课答案,你可以将题目复制粘贴到对话框,AI会给你答案\n如果需要清除聊天记忆,请回复:#清除记忆"CHANNEL_TYPE: "wechatmp"  # 如果通过了微信认证,将"wechatmp"替换为"wechatmp_service",可极大的优化使用体验WECHATMP_TOKEN: ""  # 微信公众平台的Token,需要替换为你自己的WECHATMP_PORT: 80  # 微信公众平台的端口,需要端口转发到80或443WECHATMP_APP_ID: ""  # 微信公众平台的appID,需要替换为你自己的WECHATMP_APP_SECRET: ""  # 微信公众平台的appsecret,需要替换为你自己的WECHATMP_AES_KEY: ""  # 微信公众平台的EncodingAESKey,加密模式需要,如有则替换# IMAGE_CREATE_PREFIX: '["画", "看", "找"]'CONVERSATION_MAX_TOKENS: 1000SPEECH_RECOGNITION: 'False'CHARACTER_DESC: '你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'EXPIRES_IN_SECONDS: 3600USE_GLOBAL_PLUGIN_CONFIG: 'True'USE_LINKAI: 'False'LINKAI_API_KEY: ''LINKAI_APP_CODE: ''

探索其它更多配置,你可以接着问AI

版权

本文首发于:https://www.buguagaoshu.com/archives/gzhjrdmx

转载请注明出处

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/884668.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rust学习十八.1、RUST的OOP和简单示例

很可惜,出于一些理由,rust抛弃了OOP的核心特性之一:继承 其中一个理由应该是至关重要的,但是解释的比较模糊:继承增加了复杂性的确,继承会让rust编译器变得更加复杂。rust编译器虽然足够体贴,但是它偏慢的编译速度也是很多人所吐槽的。 在我对rust编译了解更多之前,我对…

【后端】简化部署设计方案——内层设计方案

根据《简化部署设计方案V2》的内容,内层部署需要提供的 .sh 脚本应覆盖部署流程的各个阶段,确保组件能够顺利安装、配置、启动、检查状态,并支持升级和卸载。 一、 部署某组件所需的内层结构 左侧是约定的内层结构,右侧的其他部署的内容物,按需存放即可。1.1 scripts目录:…

H3C CX8028 GPFS并行文件系统全闪存储配置案例

H3C华三CX8028使用IBM的GPFS商业授权的一款全闪存储设备。本案中,客户机服务器与存储服务器均搭配双口200G网卡 ,配合200G的ROCE网络搭建集群。 GPRS文件系统中,存储集群不光需要把存储服务器组织在一起,客户机也需要在集群中声明身份,参与到集群之中,这并不像传统的集中…

【kali】在Kali Linux中安装Navicat17

Navicat 是笔者最喜欢的一款专业的数据库管理工具,不仅支持多种数据库类型,而且它提供了直观的用户界面和丰富的功能,帮助用户轻松管理和操作数据库,提高工作效率。 通过,Navicat我们是在Windows环境中部署的。本文以KALI为例,讲解如何在Linux环境中部署。 首先,我们从官…

URL 生成网站截图 API 数据接口

URL 生成网站截图 API 数据接口 网站工具 / 截图 高效生成网页截图 生成网页截图 / 图片输出。1. 产品功能支持全页截图和视窗截图; 支持自定义截图尺寸; 兼容移动设备截图; 支持暗黑模式截图; 固定参数请求,可以得到最新的站点截图; 快速高效的截图生成; 全接口支持 HT…

OCR识别表格中的参数及参数值

一、需求 识别固定表格中的文字,输出表格中的参数字典 二、整体思路找到一张含有表格的图片,利用mac自带的预览工具分析出图片每个单元格的对角线坐标, 使用程序根据图片文件和对角线坐标数组,分割图片为很多个小图片, 采用tesseract库识别单个单元格中的文字,并将识别出…

H800 Nvlink 基础环境配置(Ubuntu20.04 )

H100/800 SXM的8卡服务器在配置多机互联环境时,除了要安装Nvidia的GPU驱动,还需要安装FabricManager。 Nvidia 提供了在线安装和离线安装两种方式。Z项目H800 NVL 基础环境配置(Ubuntu20.04 ) 操作系统基础安装 配置源 本操作在Ubuntu 20.04下完成, 所有命令都以root身份执行…

c_note

c笔记一、变量 1、变量的声明 ​ 变量的声明是给编译器看的,告诉编译器变量的类型以及名字等相关的信息。 格式:数据类型 变量名; 变量的声明显然是一个编译时概念,所以它和程序的运行没有太大的关系。 一个变量具有声明,并不意味着该变量会在运行时期分配内存空间。 2、…

Drasi Sources SDK

什么是Drasi数据源(Source)?Source提供了与系统的连接,Drasi 可以将这些系统视为变化源。source 在 Drasi 中执行三个重要功能:处理源系统生成的更改日志/源,并将这些更改推送到使用该源作为输入的每个连续查询。 将源更改数据转换为一致的属性图数据模型,以便订阅的 Co…

【每日一题】20250216

人生就是这样,不经历鲜血淋漓的疼痛,就不会明白那些曾经让我们厌烦的说教其实是受用一生的信条。【每日一题】(多选)如图所示,在竖直半面内有一半径为 \(R\) 的圆弧轨道.半径 \(OA\) 木平、\(OB\) 竖直,一个质量为 \(m\) 的小球自 \(A\) 的正上方 \(P\) 点由静止开始自由…

数据团队必读:智能数据分析文档(DataV Note)五种高效工作模式

数据项目,无论是数据分析、可视化,还是数据科学和机器学习相关的项目,通常都非常复杂,涉及多个组成部分,比如代码、数据、运行环境、SQL脚本以及分析报告等;与此同时,随着AI时代的到来,数据科学领域正经历重大变革。这对于数据科学团队来说,如何保持高效地工作模式一直…

SU镜像:缩放s

su没有镜像,可用:缩放s 选中要镜像的对象——复制一个——s——找到中间的点——向右拉动——输入 -1