DeepSeek:探索AI大模型与开发工具的全景指南(进阶版)

75 阅读4分钟

从上一篇,我们介绍了python结合LLM和deepseek模型,来处理一些问题,但是,无法回答实时性的问题,现在我们来解决这个问题

首先,我们需要借助一个外部的工具,比如查询天气,查询股票,我们需要使用它们的API,来获取实时性信息。

· 我们在终端输入以下命令,安装两个包!pip install requests 用于发送网络请求 !pip install openai

  • pip是python的一个指令,install是其子命令,openai,requests,是python自带的库,我们可以直接调用它们来使用各种各样的功能。
  • 使用方法:from openai import OpenAI,import requests

屏幕截图 2025-11-20 002635.png



先看不使用大模型,来处理我们的输入,获取实时天气信息

  • import json:将python对象解析成json格式的数据,或者将json数据转换成python对象,我们先导入这个json包,因为我们的数据都是json格式的。
  • 这里我们定义的一个和获取天气的函数 get_weather(),我们设置这个函数的返回值是字符串类型,->str

代码解析:

  • resp=requests.get(url,params=params,timeout=10),这里的requests.get方法,里面的params=params,有些人会看糊涂,第一个paramsget方法里自带的参数,是固定的,而第二个params是我们要传给这个参数的名称,只不过我们设置的变量名称刚好和参数名称重合了。
  • data=resp.json,将数据转换成json格式。
  • data["results"][0]获取json数据的值,有人又要问了,哪里来的results,我既没有声明它,也没有定义它,为什么要这么写呢?这是因为,json数据的格式就是这样的,请看下图:
    • 在这个json数据里,results是一个数组,然后还有location是对象,等等,所以我们要获取json的数据,我们就要根据json数据对应的格式来写对应的语法和名称。
    • 下面的r["location"]["name"]r["now"],都是同理。

image.png

def get_weather(location :str)->str: # location :str,添加类型的约定   ->str返回值的类型
    url="https://api.seniverse.com/v3/weather/now.json"
    params={
    "key":"你的deepseek APIKEY",
    "location":location,
    "language":"zh-Hans"
    }
    try:
        resp=requests.get(url,params=params,timeout=10) #timeout=10,时间设置,发送一个请求,来传里面的参数
        data=resp.json()
        print(data)
        if "results" in data:
            r=data["results"][0]
            city=r["location"]["name"]
            now=r["now"]
            temperature=now["temperature"]
            sky=now["text"]
            
            nwetime=r["last_update"]
            return f"在{city},当前天气的温度是:{temperature}度,天空:{sky},时间:{nwetime}"
        else:
            return "查询失败"
    except Exception as e:
         return f"异常:{e}" # 输出异常

获取结果和运行过程

天气查询函数运行过程分析

函数定义

def get_weather(location: str) -> str:

步骤说明

  1. 函数声明:定义一个名为 get_weather 的函数
  2. 参数类型提示location: str 表示参数应为字符串类型
  3. 返回值类型提示-> str 表示函数返回字符串类型

步骤1:准备API请求参数

url = "https://api.seniverse.com/v3/weather/now.json"
params = {
    "key": "Sqbro5KQgkxInEtk6",
    "location": location,
    "language": "zh-Hans"
}

执行过程:

  • 设置API端点:心知天气API的实时天气接口
  • 构建参数字典
    • key:API密钥(用于身份验证)
    • location:查询的城市名称(来自函数参数)
    • language:返回语言设置为简体中文

步骤2:发送HTTP请求

try:
    resp = requests.get(url, params=params, timeout=10)

执行过程:

  1. 进入异常处理块:使用 try 捕获可能出现的错误
  2. 发送GET请求
    • 使用 requests.get() 方法
    • 自动将参数拼接到URL中
    • 设置10秒超时,防止请求卡死
  3. 实际请求的URL示例api.seniverse.com/v3/weather/…

步骤3:处理API响应

data = resp.json()
print(data)

执行过程:

  1. 解析JSON响应:将API返回的JSON数据转换为Python字典
  2. 打印原始数据:用于调试和查看完整响应结构
  3. 响应数据结构示例
{
    "results": [{
        "location": {"name": "北京"},
        "now": {
            "temperature": "15",
            "text": "晴"
        },
        "last_update": "2024-01-20T10:00:00+08:00"
    }]
}

步骤4:数据提取与验证

if "results" in data:
    r = data["results"][0]
    city = r["location"]["name"]
    now = r["now"]
    temperature = now["temperature"]
    sky = now["text"]
    nwetime = r["last_update"]

执行过程:

  1. 检查数据有效性:确认响应中包含 results 字段
  2. 提取第一项结果:通常只有一个城市的数据
  3. 逐层解析数据
    • 城市名称:data["results"][0]["location"]["name"]
    • 当前天气:data["results"][0]["now"]
    • 温度信息:从now对象中提取
    • 天气状况:从now对象中提取
    • 更新时间:获取最后更新时间

步骤5:格式化返回结果

return f"在{city},当前天气的温度是:{temperature}度,天空:{sky},时间:{nwetime}"

执行结果示例:

"在北京,当前天气的温度是:15度,天空:晴,时间:2024-01-20T10:00:00+08:00"

步骤6:错误处理

else:
    return "查询失败"
except Exception as e:
    return f"异常:{e}"

异常处理场景:

  1. API返回错误:当 results 字段不存在时返回"查询失败"
  2. 网络异常:请求超时、连接失败等
  3. 数据解析错误:JSON格式不正确
  4. 其他未知错误:返回具体的异常信息

完整执行流程图

graph TD
    A[输入城市名称] --> B[准备API参数]
    B --> C[发送HTTP请求]
    C --> D{请求成功?}
    D -->|是| E[解析JSON数据]
    D -->|否| F[返回异常信息]
    E --> G{有results字段?}
    G -->|是| H[提取天气数据]
    G -->|否| I[返回查询失败]
    H --> J[格式化结果字符串]
    I --> K[返回结果]
    J --> K
    F --> K

函数调用示例

image.png

谢谢观看,持续为大家更新,多谢支持!!!