【源码开源】基于STM32的智能桌面天气预报系统——语音识别+触摸交互+多功能信息终端设计全解析一、前言随着物联网设备的普及,越来越多的用户希望在桌面端拥有一个能够实时展示天气、空气质量、日期时间等生活信息的小型智能终端...4.联网模块可选ESP8266/ESP32作为外接WiFi模块;通过HTTP/HTTPS请求天气API(如和风天气)获取实时天气信息;支持城市搜索、天气刷新等功能。...2.空气质量监测本地空气质量传感器配合API数据,可显示:PM2.5/PM10浓度CO₂估计值空气等级提示(优/良/轻度污染)同时支持历史数据曲线展示。...7.界面设计与动画过渡界面切换采用淡入淡出动画,提高体验;天气图标采用透明PNG或矢量图;所有布局在Keil工程中已做好排版,避免换版本出现混乱。...→Configuration中将Tabsize设置为4,修复排版混乱。
智能体的核心特征可以概括为四点:主动执行:能够主动判断任务需求,决定是否需要调用外部工具(如 API、数据库、软件)来获取信息或完成操作;状态化记忆:内置记忆模块,能够维护任务的上下文状态,支持多轮对话和复杂任务的持续推进...纯大模型:仅能基于 “知识库中的天气信息” 生成回答(易产生幻觉,无实时数据);智能体:能自主调用天气 API 获取实时数据→基于数据生成建议→反思建议合理性→输出最终结果。1....\n\n### **实时查询推荐** \n- **快捷方式**:在微信搜索“北京天气”或支付宝“城市服务”。 \n- **紧急预警**:关注“北京气象局”微博或APP推送。...**实时查询推荐** - **快捷方式**:在微信搜索“北京天气”或支付宝“城市服务”。 - **紧急预警**:关注“北京气象局”微博或APP推送。...(city: str) -> str: """ 获取指定城市的实时天气数据(核心工具函数) :param city: 城市名称(如北京、上海) :return: 结构化的天气信息字符串
这些更新集中在.NET 9 Preview 4中,包括为提升性能和优化而增强的支持。主要改进了生成式人工智能应用、基于云的Web应用的构建体验。...软件包括多个组成部分如主窗体、上传窗体和FTP操作类,支持添加应用名称、版本号、生成更新文件和上传至FTP。源码可在CSDN下载。客户端应用仍在开发中。...OpenAIPromptExecutionSettings中的ToolCallBehavior可以设置为EnableKernelFunctions或AutoInvokeKernelFunctions,前者需要显式发起函数调用请求...作者还展示了如何通过Azure OpenAI的服务结合自定义方法获取北京天气的实例,并解释了在开启EnableKernelFunctions时如何手动处理函数调用请求。...文中还详细解释了PKCE的概念和作用,以及oidc-client.js停止维护带来的困扰和潜在解决方案,如关闭PKCE认证或直接取Localstorage中的code_verifier值。
而天气信息则是使用的高德天气的开放 web 接口,注册登录高德开放平台后就可以使用里面的免费 API 接口了。...来到天气 API,发现天气查询 API 的城市字段并不是城市名字,而是城市编码,在使用命令行查询时,显然我们输的是城市名字。那该怎么办呢?...高德数据中,有一个接口是专门用来查询城市编码的,网址在这里:查询城市编码[2]。准备好这些后,就可以编写命令行工具了! 编写命令行工具 在正式编写之前,说一下 commander 的用法。...IP 查询 API) --hot // 查询热门城市天气 代码编写 #!...; 异步请求,获得城市的区域编码; 异步请求,通过编码获得天气情况; 当是 --now 时,首先还要通过本地 ip 获取到所在城市,高德开放平台也提供了这个 API。
(ReAct) ↓ 在一堆 Tools 里选: - Calculator - Wikipedia - terminal - time - weather(封装成 prompt 调用自己的 Agent...@tool def weather(query: str) -> str: """根据内置 weather_info 字典,返回给定城市在某一天的天气。...输入格式:(城市名[, 日期]),例如: - "北京"(日期缺省,则用今天) - "北京,2023-07-15" 返回格式:"{date} {city} 的天气情况为:{weather...(比如说“在已有数据中没有查到”)。..."如果用户提问中包含日期计算,可以调用我。"
深入理解Agent中的ReAct模式 1....工具可以是各种外部服务或 API,如在上述例子中,智能体可能会调用 12306 的车次查询 API 来获取北京到上海明天的高铁车次信息。...Thought 阶段: 智能体分析任务,思考到首先需要打开文档读取内容,然后在文档内容中查找关键词 “人工智能”,找到包含该关键词的段落,接着修改这些段落的字体颜色为红色,最后保存修改后的文档。...Action 阶段: 调用文档读取工具,如 Python 的docx库相关函数来打开并读取文档内容。 调用文本查找工具,在读取的文档内容中查找关键词 “人工智能”。...根据思考结果执行行动(用【Action】标记),格式为工具名称+参数,例如【Action:天气查询工具,城市=北京,日期=2025-08-22】。 3.
中添加以下内容: // API密钥(注意:在实际项目中,不要将API密钥直接硬编码在前端代码中) const API_KEY = 'YOUR_API_KEY'; // 替换为你自己的OpenWeatherMap...您可以在搜索框中输入其他城市名称。')...您可以在搜索框中输入其他城市名称。')...你可以在OpenWeatherMap官网注册一个免费账号,然后获取API密钥。 将获取到的API密钥替换到app.js文件中的YOUR_API_KEY。 在浏览器中打开index.html文件。...应用会请求获取你的地理位置,授权后将显示你所在位置的天气信息。 你可以在搜索框中输入其他城市名称来查询该城市的天气信息。 应用会显示当前天气信息和未来几天的天气预报。
在传统.NET开发中,我们常用IServiceProvider来管理服务的生命周期和依赖,而Kernel的设计灵感与之类似,它通过构建器模式来组装组件,确保一切高效运行。...相比传统开发中的HttpClient直接调用API,Kernel的抽象层让代码更干净,你不用担心底层网络细节,就能专注于业务逻辑。 在实际项目中,这种构建方式特别实用。...比如,在一个ASP.NET Core的Web API中,你可以将Kernel注册到依赖注入容器里: public void ConfigureServices(IServiceCollection services...这鼓励开发者设计更解耦的架构,插件如微服务,Kernel如网关。 5 案例分析:构建一个天气查询插件 现在,来个完整案例:构建天气查询插件,结合API调用。...这个案例的扩展:在Blazor App中,注入Kernel,用户输入城市,AI查询并显示。这结合了传统UI开发与AI,实际价值在于快速迭代功能,而非从头写API客户端。
不过在使用的过程中,我们还是发现了一些问题,比如要想执行这样的注入,我们必须要和MCP远程服务器进行一次连接,如McpAsyncClient和McpSyncClient,因为只有连接了才知道背后的API...),以及调用工具输入的参数(inputSchema) 在原生ReAct情况下,比如上文的Qwen ReAct Prompt需要的工具信息,就需要这样去在模板上进行填充,在测试方法上,本地也保留了这种方式...com.lenovo.m2.buy.ai.BaseTest#testLoadPrompt有框架的情况下,还需要实现ReAct吗(工具调用源码解读)Qwen的Prompt是2年前开源的,在开发这个项目的过程中...接下来同样处理重庆北站,调用同样的函数,参数为“重庆北站”和城市“重庆”,得到坐标106.549854,29.611148。...#normalReactAgent这个ReActAgent绑定了一个天气工具,不使用ReAct Prompt时是可以正常查询天气的 日志显示了正常的工具调用 当加入了提示词 设定System提示词,最大迭代次数
在本篇文章中,我们将以后端异步获取和风天气 API 的例子来详细展示CompletableFuture和Reactor的异步编排任务如何在实战中应用。...该实战内容节选自我的开源项目ToolBench,源码地址如下: 需求分析 任何具备目的性的开发都需要一个完备的需求分析报告,我们的目的是利用和风天气API为后端实现一个获取访问者所在地的天气状况。...正式开发 远程拉取GeoLite2 阅读和风天气的城市实时天气API文档内容我们可以知道,要想获取用户所在城市的天气则需要先获取该城市ID。...通常限流有以下一些策略: 对于同源IP,将IP对应的CityID、天气信息一并存入Redis缓存中过期时间设置为1小时,每次访问都从缓存中查询,如果没有命中再从和风天气中查询。...对于不同源IP,考虑到从GeoLite2.mmdb中查询是非常快的那么可以将这个城市的天气信息连带数据库的城市名称一并存入Redis中并设置过期时间为1小时,如果其他IP从数据库中查出来的都是这个地区那么就直接从缓存中返回结果
请求参数说明参数名必选说明示例值key是开发者申请的Web服务API密钥3376f9xxxxxxxxcity是城市编码(adcode),可从高*城市编码表下载110000(北京)extensions否气象类型...框架中的核心组件,它封装了大语言模型的对话能力和工具调用功能。...查询其他城市的天气返回结果:六、应用场景智能客服系统:为用户提供实时天气查询,支持多轮对话(如“北京今天天气如何?明天会下雨吗?”)...物联网设备集成:结合智能家居设备,根据天气数据自动调节室内环境(如高温时启动空调)出行助手:为用户提供包含天气信息的行程建议(如“今天有雨,建议携带雨伞”)七、总结 本文档详细介绍了如何使用...= DASHSCOPE_API_KEYprint(f"使用的 API Key: {dashscope.api_key}")dashscope.timeout = 30 # 设置超时时间为 30 秒
准备工作在开始之前,请确保你已经:注册Dify Cloud账户或完成本地部署准备好需要连接的LLM API密钥(如OpenAI、Claude等)明确想要集成的工具或API(本文以天气查询工具为例)第一步...关键操作:从左侧拖拽“开始”节点到画布,这是工作流的入口点击画布空白处,可以在右侧面板中设置工作流名称和描述建议为工作流添加清晰的描述,便于后期维护实用技巧: 在开始设计复杂流程前,先用纸笔勾勒大致步骤...Dify会生成该工作流的API端点,你可以:直接集成到现有应用中创建聊天机器人界面设置为定时任务实际案例:创建智能天气助手让我们通过一个完整例子巩固所学知识。...假设你需要一个能理解自然语言查询的天气助手:工作流结构:开始 → LLM(提取城市) → HTTP请求(调用天气API) → 条件判断(检查数据有效性) → 文本生成(格式化回复) → 结束关键配置细节...:在LLM提示词中强调“只返回城市名”在HTTP请求节点添加错误处理分支使用条件节点处理“城市不存在”的情况在最终回复中添加穿衣建议(基于温度值)进阶技巧并行处理多个工具对于需要同时查询多个数据源的情况
,技术上面如果了解React的话,会发现他们在组件化上面有很多雷同之处。...app.js是小程序的初始化脚本,可以在这个文件中监听小程序的生命周期,申请全局变量和调用API等 app.json是对小程序的全局配置,pages设置页面路径组成(默认第一条为首页),window... 在每个页面中的wxss文件中,对wxml中的结构进行样式设置,等同于css,扩展了rpx单位。...三、小程序实战-天气预报(利用和风天气API) 先看看完成后的效果,一共三个页面 1、设置底部菜单和页面 我们就在quick start生成的demo基础上进行修改即可,因为涉及图标icon,我们新建一个...API从本地缓存中获取数据 that.curid = wx.getStorageSync(‘curid’) || that.curid;//API:获取本地缓存,若不存在设置为全局属性 that.setlocal
服务端利用注册的一个终结点来提供某个城市在未来N天之内的天气信息,对应城市(采用电话区号表示)和天数直接至于请求URL的路径中。...图1 获取天气预报信息 演示程序定义了如下这个WeatherReport记录类型来表示某个城市在某段时间范围内的天气报告。如代码片段所示,某一天的天气体现为一个WeatherInfo记录。...[S2002]以内联方式设置路由参数的约束 上面的演示实例注册的路由模板中定义了两个参数({city}和{days}),分别表示获取天气预报的目标城市对应的区号和天数。...图3 不同URL针对默认路由参数的等效性 [S2004]为路由参数指定默认值 实际上可缺省路由参数默认值的设置还有一种更简单的方式,那就是按照如下所示的方式直接将默认值定义在路由模板中。...以我们的演示程序为例,我们需要设计一种路径模式来获取某个城市某一天的天气信息,如使用“/weather/010/2019.11.11”这样URL获取北京在2019年11月11日的天气,对应模板为“/weather
请求方式及url: 请求方式:GET 接口地址:(请将线路地址设置在服务端, 为动态可修改的, 如遇ddos攻击, 需更换线路) 线路1(推荐):http://v0.yiketianqi.com/api...v63每个接口的version值都不一样 adcode 否 string 国家统计局城市ID 如:130200000000 请参考 全国统计用区划代码表 cityid 否 string 城市ID 请参考...城市ID列表 city 否 string 城市名称 不要带市和区; 如: 青岛、铁西 province 否 string 所在省 如果您担心city重名可传此参数, 不要带省和市; 如: 山东、上海...ip 否 string IP地址 查询IP所在城市天气 lng 否 String 经度 如: 119.545023 (需额外开通lbs权限, 500/年, 2000/5年) lat 否 String 纬度...vue 否 string 跨域参数 如果您使用的是react、vue、angular请填写值: 1 unescape 否 Int 是否转义中文 如果您希望json不被unicode, 直接输出中文,
MCP 是什么 Dify 作为 Client:调用外部 MCP 工具 搭建 MCP 天气服务端 在 Dify 中接入“天气感知”能力 Dify 作为 Server:被外部应用调用 搭建“翻译专家”工作流...启用 MCP 服务 在外部 AI 应用中调用 在之前的博客中已经介绍了 MCP 的概念,以及在 LangChain 中如何使用 MCP 协议。...今天这篇博客,将带大家实战如何在 Dify 中实现 MCP 场景。在开始正式的内容前,还是先简单的介绍一下 MCP。...配置要使用的 模型,并在 工具列表 中新增刚刚添加的 MCP 服务。在 指令 中设置提示词。查询 设置为用户输入。 # Role 你是一位专业且贴心的出行规划专家。...在外部 AI 应用中调用 拿到了 URL 后,在任意支持 MCP 调用的应用中都可以使用刚刚配置好的工作流,这里以 Visual Studio Code 为例。
1.注册免费天气API 1.1打开和风天气注册账号 1.下图是和风天气的首页。 2.账号注册成功后点击 新建应用 ,创建一个Key,这个Key是用来进行和风天气API调用的。...根据上图的请求URL示例可知,我们需要调用的url为 https://free-api.heweather.net/s6/weather/forecast?...location=城市代码&key=自己创建的Key 2.编写获取天气代码 城市可以填写中文,也可以填写城市代码城市代码查询。...2.2所在城市经纬度等信息查询 import json import requests url = 'https://free-api.heweather.net/s6/weather/forecast...0]['daily_forecast'] print(result) 因为这里调用的API会返回7天的数据,所以会返回7组下图的数据。
2.账号注册成功后点击 新建应用 ,创建一个Key,这个Key是用来进行和风天气API调用的。 可以看到新建成功后的Key是一串长长的字符串,这个就是获取天气信息需要用到的密钥啦。...根据上图的请求URL示例可知,我们需要调用的url为 https://free-api.heweather.net/s6/weather/forecast?...location=城市代码&key=自己创建的Key 2.编写获取天气代码 城市可以填写中文,也可以填写城市代码城市代码查询。...2.2所在城市经纬度等信息查询 import json import requests url = 'https://free-api.heweather.net/s6/weather/forecast...0]['daily_forecast'] print(result) 因为这里调用的API会返回7天的数据,所以会返回7组下图的数据。
通过整合高德地图提供的天气API,我们可以轻松地在自己的SpringBoot项目中实现这一功能,为用户提供实时和未来几天的天气信息。...本文将详细介绍如何在SpringBoot项目中整合高德地图的天气预报功能,包括环境搭建、代码实现、定时任务设置等关键步骤,确保大家能够按照教程成功实现功能。...在“控制台”中创建应用,获取API Key。该Key将用于后续调用高德地图的天气API。...将获取到的API Key和天气API的URL配置到application.yml文件中。...在实际开发中,可以根据需求进一步优化和扩展功能,例如将天气数据存储到数据库中,或者为用户提供更多城市的天气查询服务。希望本文对大家有所帮助!
编写逻辑层代码 由于在index.js中还没有设置初始化数据,所以在界面中看不到具体的数据,从而也导致界面的效果没达到设置的要求。...output:设置接口返回的数据格式为json或者xml。 ak:这是必须设置的一个参数,是用户在百度申请注册的key,自v2开始参数修改为“ak”,之前版本参数为“key”。...sn:若用户所用ak的校验方式为sn校验时该参数必须启用。 callback:一个回调函数,将json格式的返回值通过callback函数返回以实现jsonp功能。...由于根据城市名称查询天气预报信息的代码需要重复调用,因此,单独编写成一个函数,方便在查询时调用。...:function(){ this.searchWeather(this.data.inputCity); } 保存以上代码之后,在开发工具左侧模拟器中输入查询的城市名称,如输入“三亚”,单击