【AI实践】Python版AI天气预报助手开发指南(含完整代码)

Python版AI天气预报助手开发指南(含完整代码)


一、背景

在当今数字化时代,人工智能(AI)正以前所未有的速度渗透到各个领域,从智能家居到自动驾驶,从医疗诊断到金融预测,AI 的影响力无处不在。作为一名对技术充满热情的探索者,我深知 AI 的潜力和价值,也意识到掌握 AI 技术对于个人和职业发展的重要性。因此,我决定深入实践 AI,通过实际项目的开发和应用,从最基础的API接入融入AI科技,提升自己的技术能力和对 AI 的理解。

在这个过程中,我选择了构建一个 AI 实现的天气助手 作为我的实践项目。结合传统冰冷的天气参数和暖心的大预言模型 AI 技术,打造一个能够自动解析城市编码、获取天气数据,并生成自然语言天气报告的智能系统,为用户提供更加贴心、便捷的天气服务。


二、技术选型

作为《穷鬼的回忆录》一书的作者,选型主要考虑的是免费! 免费! 免费!然后再考虑支持目前大热的deepseek模型,所以最后选择了和风天气无问芯穹的deepseek模型作为核心技术支撑,其中和风天气用于查询天气参数信息,无问芯穹用于根据查询的天气结果参数提供专业的报告。

  • 和风天气:作为国内领先的气象数据服务提供商,和风天气拥有丰富而精准的气象数据资源。我们利用其提供的API接口,可以轻松实现城市编码的查询以及获取城市当前的天气参数信息。通过调用和风天气的城市查询API,输入城市名称(支持中英文)或行政区划编码,即可快速获取对应的城市编码。这为后续的天气数据获取奠定了基础。在获取天气数据时,和风天气的实时天气API能够提供详细的气象信息,包括温度、湿度、风速、风向、降水概率等,且支持公制和英制两种单位制,满足不同用户的需求。
  • 无问芯穹的deepseek模型:在生成天气报告方面,我们选择了无问芯穹deepseek模型。该模型具备强大的自然语言处理能力,能够将结构化的天气数据转化为生动、自然的中文天气报告。通过精心设计的提示(Prompt),我们引导deepseek模型解析和风天气接口返回的数据,并生成包含穿衣建议和出行提示的个性化天气报告。这种结合AI技术的报告生成方式,不仅提升了用户体验,还为用户提供了更具实用性和参考价值的气象信息。

三、AI实践

1. 核心功能设计

  • 实时天气查询(温度/湿度/风速/天气状况),输入城市名称即可,简称或完整名称
  • 自然语言交互式应答,提供温馨的天气报告
  • 流式结果输出,减少时间等待,提升交互体验

2. 环境准备

(1)因和风天气无问芯穹接口调用都需要使用API密钥,因此需要分别去其官网注册账户并创建应用KEY:
和风天气KEY
无问芯穹KEY
这两个网站都可以免费注册申请应用密钥,正常测试使用没啥问题的。
获取和风天气 API 密钥申请链接) 和无问芯穹 API 密钥申请链接),并将其存储在当前目录下的 .env文件中。

(2)安装Python环境依赖

pip install openai python-dotenv requests

其中:

  • openai:提供与OpenAI API交互的官方SDK(也适用于无问芯穹的deepseek模型接口调用),支持调用GPT、DALL·E等模型实现文本生成、图像创作等AI功能。
  • python-dotenv:用于从.env文件加载环境变量,简化敏感配置(如API密钥)的管理和隔离。
  • requests:简洁高效的HTTP请求库,支持API调用、数据爬取及服务端通信,具备自动内容解码和连接池管理。

3. 关键代码实现

3.1 系统架构与依赖
(1)依赖库

import os
import json
import requests
from openai import OpenAI
from dotenv import load_dotenv
from requests.exceptions import RequestException
  • openaidotenv 用于与无问芯穹 API 进行交互及环境变量管理,为 AI 部分提供支持。
  • requests 主要用于和风天气 API 的 HTTP 请求,获取天气数据。
  • json 用于解析和处理 JSON 格式的响应数据,确保数据的正确性和可读性。

(2)环境变量初始化:

load_dotenv()
client = OpenAI(
    base_url="https://cloud.infini-ai.com/maas/v1",
    api_key=os.getenv("INFINI_AI_KEY")
)

使用dotenv加载.env配置文件,其中包含无问芯穹 API 的密钥INFINI_AI_KEY,将敏感信息与代码分离,符合安全规范。

(3)环境变量文件: .env文件

INFINI_AI_KEY=sk-**
WEATHER_API_KEY=**

3.2 核心函数
(1)城市编码解析:

def get_city_code(city: Union[str, int]) -> str:
    """
    智能解析城市编码(支持中英文城市名/行政区划编码)
    """
    api_key = os.getenv("WEATHER_API_KEY")

    # 判断是否为纯数字编码
    if isinstance(city, int) or city.isdigit():
        return str(city)

    # 调用和风天气城市查询 API
    geoapi_url = "https://geoapi.qweather.com/v2/city/lookup"
    params = {
   
        "location": city,
        "key": api_key,
        "range": "cn",
        "lang": "zh",
        "number": 1
    }

    try:
        response = requests.get(geoapi_url, params=params, timeout=10)
        response.raise_for_status()

        data = response.json()
        if data['code'] == '200' and data['location']:
            cid = data['location'][0]['id']
            return cid

        raise ValueError(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值