首页 > 快讯 > 借助 Dify 智能化平台打造微信天气助手,便捷查询好友所在地天气情况!

借助 Dify 智能化平台打造微信天气助手,便捷查询好友所在地天气情况!

发布时间:2025-06-09 16:10:35 | 责任编辑:张毅 | 浏览量:9 次

《借助 Dify 智能化平台打造微信天气助手,便捷查询好友所在地天气情况!》相关软件官网

Dify Ai

近期,有开发者利用 Dify 平台结合 MCP(多通道协议)技术,创建了一个通过微信自动发送天气信息给好友的智能助手,极大地方便了用户获取天气预报的需求。本文将为您详细介绍这一新兴应用的开发过程。
首先,开发者需要在 Windows 环境中搭建一个名为 MCP Server 的应用。为了实现这一目标,首先要安装一个名为 “uv” 的 Python 包,它是一个快速的项目管理器,能够帮助用户轻松创建和管理 Python 虚拟环境。用户只需通过简单的 PowerShell 命令,就能快速完成这一操作。
接下来,开发者需要使用 wxauto 这个开源库来实现微信的自动化操作。该库依赖于 PC 版微信,并且要求微信版本为3.9.x。创建好项目后,开发者可以编写代码,通过 MCP Server 实现发送微信消息的功能。只需调用相关函数,输入消息内容和接收者的微信昵称,程序便能自动完成发送。
除了天气信息发送功能,开发者还创建了一个获取天气的 MCP Server,使用 httpx 库进行网络请求。用户只需输入想要查询的地点,程序便会向天气服务 API 发送请求,并返回实时天气数据。这一功能不仅高效,而且能够支持多种城市的天气查询。
最后,开发者利用 Dify 搭建了智能体应用,将天气查询与微信消息发送功能整合在一起。用户通过简单的语音指令,就能获取到某个城市的天气情况,并将信息自动发送给指定的好友。这一整合的解决方案不仅提升了使用体验,也展示了 AI 技术在日常生活中的实际应用。
这一基于 Dify 的智能体案例,不仅使天气信息查询和分享变得更加简单,同时也展示了 MCP 协议在降低开发成本和提升应用效率方面的巨大潜力。

借助 Dify 智能化平台打造微信天气助手,便捷查询好友所在地天气情况!

以下是使用 Dify 智能体实现微信天气助手的实现步骤:

一、开发 MCP Server

(一)开发微信消息发送的 MCP Server

  1. 设置开发环境
    • 安装 uv(一个用 Rust 编写的 Python 包和项目管理器):
      bash

      powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
                                  
    • 创建 Python 虚拟环境(假设项目目录为 wechat):
      bash

      uv init wechat
                                  cd wechat
                                  uv venv
                                  .venv\Scripts\activate
                                  uv add mcp[cli] wxauto

      如果在执行 .venv\Scripts\activate 时提示“无法加载 .venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本”,需要以管理员权限在终端执行 Set-ExecutionPolicy RemoteSigned 更改执行策略后再重新执行。

  2. 编写 Server 实现代码
    • 使用 mcp Python SDK 结合 wxauto 开发自动发送微信消息的 MCP Server。main.py 的代码如下(注意 MCP server 端口用默认的 8000):
      Python

      
                                  from mcp.server.fastmcp import FastMCP
                                  from wxauto import WeChat
                                  mcp = FastMCP(port=
                                  8000
                                  )
                                  wx = WeChat(
                                  )
                                  @mcp.tool
                                  (
                                  )
                                  async def send_wechat_msg
                                  (msg: str
                                  , who: str
                                  ) -
                                  > str
                                  :
                                  """send wechat text message"""
                                  wx.ChatWith(who)
                                  wx.SendMsg(msg, who)
                                  return "success"
                                  if __name__ == "__main__"
                                  :
                                  mcp.run(transport=
                                  "sse"
                                  )
                                  
  3. 启动 Server
    bash

    uv run main.py

(二)开发获取天气的 MCP Server

  1. 设置开发环境
    • 创建 Python 虚拟环境(假设项目目录为 weather):
      bash

      uv init weather
                                  cd weather
                                  uv venv
                                  .venv\Scripts\activate
                                  uv add mcp[cli] httpx
  2. 编写 Server 实现代码
    • 使用 mcp Python SDK 和 httpx 开发获取天气的 MCP Server。main.py 的代码如下(注意 MCP server 端口调整为 8001):
      Python

      
                                  import httpx
                                  import urllib.parse
                                  from mcp.server.fastmcp import FastMCP
                                  mcp = FastMCP(port=
                                  8001
                                  )
                                  @mcp.tool
                                  (
                                  )
                                  async def get_weather
                                  (location: str
                                  ) -
                                  > str
                                  :
                                  """Get weather for a location."""
                                  url = "http://weather.cma.cn/api/autocomplete?q=" + urllib.parse.quote(location)
                                  async with httpx.AsyncClient(
                                  ) as client:
                                  try
                                  :
                                  response = await client.get(url, timeout=
                                  10.0
                                  )
                                  response.raise_for_status(
                                  )
                                  data = response.json(
                                  )
                                  if data[
                                  "code"
                                  ] != 0
                                  :
                                  return "系统错误,请稍后重试"
                                  location_code = ""
                                  for item in data[
                                  "data"
                                  ]
                                  :
                                  str_array = item.split(
                                  "|"
                                  )
                                  if (
                                  str_array[
                                  1
                                  ] == location
                                  or str_array[
                                  1
                                  ] + "市" == location
                                  or str_array[
                                  2
                                  ] == location
                                  )
                                  :
                                  location_code = str_array[
                                  0
                                  ]
                                  break
                                  if location_code == ""
                                  :
                                  return "没找到该位置的信息"
                                  url = 
                                  f"http://weather.cma.cn/api/now/
                                  
                                  {location_code}
                                  
                                  "
                                  
                                  response = await client.get(url, timeout=
                                  10.0
                                  )
                                  response.raise_for_status(
                                  )
                                  return response.json(
                                  )
                                  except Exception:
                                  return "系统错误,请稍后重试"
                                  if __name__ == "__main__"
                                  :
                                  mcp.run(transport=
                                  "sse"
                                  )
                                  
  3. 启动 Server
    bash

    uv run main.py

二、基于 Dify 搭建智能体

  1. 安装 MCP 插件
    • 登录 Dify 平台,点击右上角“插件”按钮,进入插件页面,选择“探索 Marketplace”,搜索 mcp,选择插件“MCP SSE / StreamableHTTP”进行安装。
  2. 设置 MCP 服务
    • 切换到“插件”tab,选择已安装的插件“MCP SSE / StreamableHTTP”,点击“去授权”。
    • 填上 MCP 服务配置(获取天气和发送微信消息是两个独立的 MCP Server,配置如下):
      JSON

      
                                  {
                                  "wechat_server"
                                  : {
                                  "url"
                                  : "http://host.docker.internal:8000/sse"
                                  ,
                                  "headers"
                                  : {
                                  }
                                  ,
                                  "timeout"
                                  : 50
                                  ,
                                  "sse_read_timeout"
                                  : 50
                                  }
                                  ,
                                  "weather_server"
                                  : {
                                  "url"
                                  : "http://host.docker.internal:8001/sse"
                                  ,
                                  "headers"
                                  : {
                                  }
                                  ,
                                  "timeout"
                                  : 50
                                  ,
                                  "sse_read_timeout"
                                  : 50
                                  }
                                  }
                                  
  3. 创建 Agent 应用
    • 在 Dify 平台中创建一个 Agent 应用,设置角色提示词,例如:“你是一个超级
©️版权声明:
本网站(https://aigc.izzi.cn)刊载的所有内容,包括文字、图片、音频、视频等均在网上搜集。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本网站任何内容或服务用于其他用途时,须征得本网站及相关权利人的书面许可,并支付报酬。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,予以删除。

最新Ai信息

最新Ai工具

发表回复