发布时间:2026/8/27 17:53:59
如何在wechatSDK中开发自定义天气插件:OpenAI Function Calling函数调用完整教程 如何在wechatSDK中开发自定义天气插件OpenAI Function Calling函数调用完整教程【免费下载链接】wechatSDK微信机器人是一个创新的基于Python 3.11开发的项目通过结合ChatGPT模型和微信原生API为用户提供智能聊天、自动绘画、自动发朋友圈、自动发视频号等多样的API集成服务旨在提升日常沟通效率和趣味性。项目地址: https://gitcode.com/gh_mirrors/we/wechatSDKwechatSDK 是一个基于 Python 3.11 的微信机器人项目将 ChatGPT 模型与微信原生 API 结合实现智能聊天、AI 绘画、自动发朋友圈等能力。本教程带你走通在 wechatSDK 中开发自定义天气插件的完整流程掌握OpenAI Function Calling 函数调用的核心机制让你的微信机器人一句话就能查天气并轻松扩展更多智能能力。 一句话理解核心思想给 AI 写一张函数名片模型需要时会自动调用它把真实天气数据变成自然回答。什么是 OpenAI Function Calling让 AI 会动手的原理普通的 ChatGPT 只会说而 Function Calling 给了 AI 一双手。你告诉模型有哪些函数可用、各需要什么参数当用户问明天北京适合跑步吗时模型不会胡编而是先返回一个函数调用请求由你的程序执行函数拿到真实数据再喂回模型组织成自然回答。在 wechatSDK 中这条链路已经为你搭好用户微信发消息明天北京天气怎么样 ↓ GPT 判断需要数据 → 返回函数调用 get_forecast_weather(...) ↓ wechatSDK 执行天气插件请求真实天气 API ↓ GPT 拿到数据 → 自然语言回复明天多云 22℃适合跑步 ☀️其中模型交互与插件调度由bot/infrastructure/chatgpt/OpenAIHelper.py完成插件统一放在bot/infrastructure/plugins/目录下。环境准备5 分钟跑起 wechatSDK在开发插件前先把项目跑起来需要 Windows Python 3.11git clone https://gitcode.com/gh_mirrors/we/wechatSDK cd wechatSDK python -m venv venv # Windows 下用 venv\Scripts\activateLinux/macOS 用 source venv/bin/activate pip install -r requirements.txt python app.py依赖清单见requirements.txt启动入口为app.py。自定义天气插件开发三步法wechatSDK 的插件都继承同一个接口bot/infrastructure/plugins/Plugin.py它只定义了 3 个抽象方法方法职责生活化比喻get_source_name()返回插件源名称如OpenMeteo插件的开关名配置用get_spec()返回函数名片JSON Schema告诉 AI 你能做什么、要哪些参数execute()真正执行函数并返回 JSON 结果干活的手第 1 步继承 Plugin 接口搭好插件骨架新建bot/infrastructure/plugins/my_weather.py定义一个继承Plugin的类实现上述 3 个方法即可。框架会自动扫描该目录无需手动注册。官方天气插件在bot/infrastructure/plugins/weather.py中注册了两个函数get_current_weather—— 查当前天气get_forecast_weather—— 查未来 N 天预报最多 14 天第 2 步编写函数规范——给 AI 一张名片get_spec()的精髓是把每个参数描述清楚类型 说明让模型知道该填什么。weather 插件的核心参数如下latitude: {type: string, description: Latitude of the location}, longitude: {type: string, description: Longitude of the location}, unit: {type: string, enum: [celsius, fahrenheit]}✍️ 小技巧description写得好AI 填参才准确有固定取值时用enum约束可大幅减少填错。这是 Function Calling 效果好不好的关键。第 3 步实现 execute()——真正动手的环节在execute()中接收模型填好的参数去调用真实 API。官方天气插件使用的是免费的 OpenMeteo 服务def execute(self, function_name, **kwargs) - Dict: url fhttps://api.open-meteo.com/v1/forecast?latitude{kwargs[latitude]} url flongitude{kwargs[longitude]}temperature_unit{kwargs[unit]} if function_name get_current_weather: url current_weathertrue return requests.get(url).json() # get_forecast_weather 则追加 daily、forecast_days 等参数返回 JSON 即可框架会自动把结果回传给模型。想写个最简单的插件练手参考零参数的bot/infrastructure/plugins/now_time.py查询当前时间。插件如何被自动发现并启用bot/infrastructure/PluginManager.py在启动时自动扫描bot/infrastructure/plugins/下所有.py文件找出继承Plugin的类并只加载get_source_name()命中的插件。是否启用由两个环境变量控制读取逻辑见bot/config/config_loader.py环境变量作用示例值PLUGINS启用的插件源名称列表逗号分隔OpenMeteo,NowTimeENABLE_FUNCTIONS是否开启函数调用true启用后bot/infrastructure/chatgpt/OpenAIHelper.py会把所有函数的名片附加到每次 OpenAI 请求中并循环调用插件直到模型不再需要函数上限由FUNCTIONS_MAX_CONSECUTIVE_CALLS控制默认 10 次。实战效果查天气、AI 绘画、自动发朋友圈天气插件跑起来后在微信里直接问这周末杭州天气怎么样机器人就会自动调用get_forecast_weather并回复逐日预报。更酷的是组合拳wechatSDK 可以让模型查完天气后再调用 AI 绘画能力根据天气生成图片并自动发布到朋友圈——下面这位歌手就是机器人绘制的作品展示了同一个 Function Calling 机制驱动 AI 绘图的效果新手常见坑与快速排查插件没生效检查get_source_name()返回值与PLUGINS环境变量是否完全一致区分大小写。AI 不调用函数确认ENABLE_FUNCTIONS为true且所选模型支持函数调用。AI 填错参数优化get_spec()中的description尽量用enum限制取值。只想测一个插件先照now_time.py写个零参数插件跑通后再加复杂逻辑。总结你的第一个微信机器人插件已就位步骤做什么相关文件1继承Plugin接口实现 3 个方法bot/infrastructure/plugins/Plugin.py2编写函数名片JSON Schemabot/infrastructure/plugins/weather.py3实现execute()调用真实 APIbot/infrastructure/plugins/weather.py4配置PLUGINS、ENABLE_FUNCTIONS环境变量bot/config/config_loader.py掌握了 OpenAI Function Calling 与 wechatSDK 的插件体系你的微信机器人就能从聊天搭子进化为全能助手——接下来不妨试试开发提醒、汇率、新闻搜索等属于自己的新插件【免费下载链接】wechatSDK微信机器人是一个创新的基于Python 3.11开发的项目通过结合ChatGPT模型和微信原生API为用户提供智能聊天、自动绘画、自动发朋友圈、自动发视频号等多样的API集成服务旨在提升日常沟通效率和趣味性。项目地址: https://gitcode.com/gh_mirrors/we/wechatSDK创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/27 18:34:06

Docker 入门篇(一)-- 简介与安装教程(Windows和Linux)

一、Docker简介 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间没有任何接口(类似iPhone…

2026/8/27 18:34:06

Kotlin自定义菜单控件

本文实例为大家分享了Kotlin自定义菜单控件的具体代码,供大家参考,具体内容如下 首先贴一下效果图 **思路:**菜单控件分两部分,一是点击的子按钮(RecordButton),二是包裹着子按钮的容器&#x…

2026/8/27 18:34:06

原生PHP网站如何实现从零开始的微信支付?底

底层原理用户选择微信支付:用户在你的网站上购物,并选择微信支付作为支付方式。创建订单:你的网站需要为用户购买的商品创建一个订单,并生成一个唯一的订单号。调用微信支付API:你的网站将这个订单信息发送给微信支付A…

2026/8/27 18:29:05

EV 驱动电机零转速满转矩起步(Align→OpenLoop→FOC)Simulink 建模

目录 一、为什么“零转速满转矩起步”要单独做 二、起步控制原理简述 2.1 预定位(Align / Pre‑Excite) 2.2 开环旋转(Open‑Loop Voltage‑Oriented) 2.3 切闭环 FOC 三、关键参数 四、Simulink 建模(手把手) 4.1 Step 1️⃣ —— PMSM + Inverter + 坐标变换(同…

2026/8/26 9:13:28

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/27 10:58:22

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/27 7:46:21

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/27 0:01:16

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

2026/8/27 0:01:16

LeetCode Hot100(51-60)算法精解与面试技巧

1. 题目背景与核心价值"hot100(51-60)"这个标题看起来像是某个编程题库或算法练习集中的一组题目编号。在技术社区中,类似命名通常指向LeetCode、牛客网等平台的热门题目集合。作为刷过300题的算法老手,我理解这类题目的核心价值在于&#xff…

2026/8/27 0:01:16

CRC校验实战:从模2除法到HJ212协议排错

1. 为什么一个“校验码”能扛住工业现场90%的数据 corruption? 你有没有遇到过这样的场景:嵌入式设备通过RS-485上传温湿度数据,上位机偶尔收到一帧乱码——温度显示成-273℃,湿度跳到999%,但串口波形看起来完全正常&a…

2026/8/26 19:34:06

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/26 19:17:08

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/26 19:34:05

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…