天气AI助手

一个基于Streamlit、MCP服务器、LangChain和Groq AI的交互式AI天气应用,提供实时天气更新、城市地标图片以及API数据不可用时的AI回退功能。

  • by ShivapujePooja
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ShivapujePooja/weather-ai-assistant

使用说明

🌍 天气AI助手

一个使用Streamlit、MCP服务器、LangChain和Groq AI构建的交互式AI天气应用程序。 它提供实时天气更新、著名城市地标图片,以及在API数据不可用时提供AI备用选项。

🚀 特点:

  • 来自OpenWeather API的实时天气数据
  • 城市地标图片来自Unsplash API
  • 搜索历史存储在SQLite数据库中
  • AI Agent(LangChain + Groq)作为拼写错误城市或无法获取天气数据时的备用方案
  • MCP服务器集成用于结构化天气工具执行
  • 带历史记录和图片说明的现代Streamlit用户界面

技术栈:

  • 前端/UI → Streamlit
  • 数据库 → SQLite
  • 天气数据 → OpenWeather API
  • 城市图片 → Unsplash API
  • AI代理 → LangChain + LangGraph + Groq
  • 工具编排 → MCP(模型上下文协议)

⚡ 工作流程

  • 用户输入 → 您在Streamlit应用程序(app.py)中输入城市名称。
  • 天气API调用 → 首先,get_weather()尝试从OpenWeather API获取数据。 如果成功 → 它会显示温度、天气状况、湿度以及来自 Unsplash 的地标图片。 搜索记录已保存在SQLite历史中。
  • 回退到AI代理 → 如果城市名称拼写错误或API调用失败,则会触发ask_agent()(来自app.py)。 这使用LangChain + Groq AI来查询MCP服务器。
  • MCP服务器角色(client.py) 定义了一个天气工具(get_weather),用于通过API获取天气和图片信息。 向代理提供结构化的回复。
  • AI模型执行 → LangChain的ReAct代理(create_react_agent)连接到MCP工具。 Groq模型(qwen3-32b)解析用户输入→调用MCP工具→返回结果。
  • UI输出 → Streamlit在两个列中显示结果→左列:天气信息,右列:地标图片。 历史侧边栏显示之前的查询。

设置: 克隆仓库:

  • 克隆仓库:https://github.com/ShivapujePooja/weather-ai-assistant.git
  • cd weather-ai-assistant

创建虚拟环境:

  • 创建虚拟环境
  • 激活虚拟环境:source .venv/bin/activate

安装依赖项: 根据上面的信息,执行如下指令:使用uv添加requirements.txt中的依赖项

在.streamlit/secrets.toml文件中添加API密钥:

  • OPENWEATHER_API_KEY = "your_openweather_api_key"
  • UNSPLASH_ACCESS_KEY = "your_unsplash_api_key"
  • GROQ_API_KEY = "your_groq_api_key"

本地运行

  • 启动Streamlit应用程序: 运行 streamlit app.py