LangChain+Ollama实现自动通过企业微信发消息:零成本响应快(未认证企业也可用)

发布时间:2026/9/28 13:46:39

LangChain+Ollama实现自动通过企业微信发消息:零成本响应快(未认证企业也可用)
前言以“给妈妈自动发暖心问候语的本地Agent”为案例,最终成功用企业微信的API来实现消息推送。本以为很简单,结果踩了一路的坑。特别是对于未认证的个人组织企业,企业微信的种种限制让人抓狂。本文将详细记录整个过程,重点介绍接收消息服务器URL的概念,以及如何避开cpolar、路由侠等工具被识别为第三方服务商的坑。一、本地部署方案云端大模型(GPT / 通义 / 智谱)要 API Key、要计费、要联网。玩个小项目,奔着0成本去,就装了个Ollama,拉了个Qwen2.5:7b(通义千问的中文版,大概4.7G),本地跑起来,完全免费,断网也能用,我16G内存的笔记本CPU跑,一秒能吐五六个字,生成一句30字的问候语也就五六秒,完全够用。要是你有显卡,RTX 3060以上跑14B版本,那叫一个丝滑。本地方案:模型:Qwen2.5(7B 量化版约 4.7GB,中文能力强,通义出品)推理:Ollama 本地服务框架:LangChainChatOllama成本:0 元,断网也能跑速度:16G 内存 + CPU 跑qwen2.5:7b≈ 5 token/s(开流式可接受)RTX 3060 级别显卡跑 14B ≈ 15 token/s(丝滑)开streaming=True逐字吐字,体感比等整段生成快很多# 1. 装 Ollama 后拉模型ollama pull qwen2.5:7b# 2. Python 依赖pipinstalllangchain langchain-ollama requests python-dotenvfromlangchain_ollamaimportChatOllama llm=ChatOllama(model="qwen2.5:7b",base_url="http://localhost:11434",temperature=0.7,streaming=True,# 本地模型提速关键)💡 生成问候语这种短文本任务,7B 完全够用,别一上来就冲 32B,家用机跑不动。二、企业微信发消息的两条路通道是否需要 access_token未认证企业能否用限制群机器人 Webhook❌ 不需要✅ 直接用只能发到群,不能私信自建应用message/send✅ 需要⚠️ 能建但要可信 IP未认证企业卡死在 IP 白名单我们的目标只是“给妈妈发句话”,我选用群机器人 Webhook 方案,简便快捷。三、未认证企业的「会触发60020报错 」(重点避坑)不要选择自建应用:{"errcode":60020,"errmsg":"not allow to access from your ip"}含义:调用方公网 IP 不在「企业可信 IP」里。未认证企业的输入框是灰的,你需要二选一完成以下信息,才能配置白名单IP:配「可信域名」(要同主体备案域名 → 个人组织没有)配「接收消息服务器 URL」解灰接收消息服务器 URL 到底是什么?不是你去访问企微,是企微反过来访问你。方向:企微 Client → 你的 Flask Server场景归类:等价于「网站搭建 / 公网暴露本机 Web 路由」,不是远程桌面、不是游戏联机验证流程:后台填http://公网/wecom/callback企微发GET ?msg_signature=timestamp=nonce=echostr=密文你的服务验签、解密、原样返回明文 echostr(1 秒内)验证通过 → 可信 IP 输入框解灰我查了一些第三方工具生成可用的服务器IP,例如cpolar / 路由侠它们给的共享二级域名:*.cpolar.top*.rXX.cpolar.top*.luyouxia.net企微在保存 URL 时会查域名备案主体,发现主体是「cpolar 公司 / 路由侠公司」,不是你的企业主体,直接拦截:该域名主体为第三方服务商,请使用企业主体域名实测结论(未认证个人组织):cpolar 随机域名 → ❌ 被拦路由侠.net共享域名 → ❌ 被拦ngrok-free → ❌ 被拦四、成功方案:群消息 Webhook企业微信建一个「你+妈妈」的内部群(必须是企业微信内部群,不是微信外部群)→ 群设置 → 群机器人 → 添加 → 复制 Webhook:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx-xxxx-xxxx如何获取Webhook:点击群聊界面,点击右上角三个点,进入“消息推送”,添加一条消息推送后自动生成Webhook地址。若无权限,网页端进入企业微信后台管理,点击“应用管理”,进入自建栏下的“消息推送”应用,在“可创建消息推送的成员”处添加目标用户即可。因为是调用本地大模型,代码里就不需要连接大模型API的相关参数了( token / corp_id / 可信 IP):importos,requestsfromdotenvimportload_dotenv load_dotenv()WECOM_WEBHOOK=os.environ["WECOM_WEBHOOK"]defpush_to_mom(text:str)-str:r=requests.post(WECOM_WEBHOOK,json={"msgtype":"text","text":{"content":text}},timeout=5).json()return"✅ 已发送"ifr.get("errcode")==0elsef"❌{r}"五、LangChain 创建Agent (本地 Qwen2.5 驱动)完整代码:importosfromdatetimeimportdateimportdotenvimportrequests

相关新闻

警告!SCI选题最容易踩的坑

警告!SCI选题最容易踩的坑

2026/9/28 13:46:21

“警告!SCI选题最容易踩的坑,不是文献太少,而是一上来就搜一个大词,然后把最靠前的文章当成研究前沿。今天教你把几千条结果,缩成真正值得精读的一小批。 比如只搜“人工智能医疗”“数字教育”,出来的内容…

iOS应用上架全流程指南:从证书配置到App Store审核

iOS应用上架全流程指南:从证书配置到App Store审核

2026/9/26 4:37:07

1. 从“打包完成”到“上架成功”:一个iOS开发者的必经之路 作为一名在iOS开发一线摸爬滚打了十来年的老手,我见过太多开发者朋友,他们能写出漂亮的代码,做出功能惊艳的应用,却在最后临门一脚——App Store上架——这…

深入理解C语言sizeof运算符:编译时求值、内存对齐与工程实践

深入理解C语言sizeof运算符:编译时求值、内存对齐与工程实践

2026/8/14 1:57:11

1. 从一段“诡异”的代码说起:为什么sizeof不是函数?几年前,我在为一个嵌入式项目调试一段内存拷贝的代码时,遇到了一个让我至今记忆犹新的“坑”。代码片段大致如下:void copy_data(char *dest, const char *src, siz…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/27 1:30:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/26 14:29:04

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/26 23:35:16

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…