行业资讯

如何在wechatSDK中开发自定义天气插件:OpenAI Function Calling函数调用完整教程

发布时间:2026/8/27 17:54:00
如何在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),仅供参考