AI Agent(六)- Dify 自定义工具实战 - 基于百度天气 API 搭建天气查询 Agent(天气智查助手)

文章目录

  • 一、前言
  • 二、整体实现思路
  • [三、申请百度地图开放平台 AK](#三、申请百度地图开放平台 AK)
    • [1. 注册百度地图开放平台](#1. 注册百度地图开放平台)
    • [2. 登录百度地图开放平台](#2. 登录百度地图开放平台)
    • [3. 创建应用并获取AK](#3. 创建应用并获取AK)
    • [4. 查看国内天气查询接口开发文档](#4. 查看国内天气查询接口开发文档)
    • [5. 接口测试](#5. 接口测试)
  • 四、创建自定义工具
    • [1. OpenAPI 规范配置内容及说明](#1. OpenAPI 规范配置内容及说明)
      • [1.1 OpenAPI 规范配置内容](#1.1 OpenAPI 规范配置内容)
      • [1.2 OpenAPI 规范配置说明](#1.2 OpenAPI 规范配置说明)
    • [2. 配置OpenAPI 规范](#2. 配置OpenAPI 规范)
    • [3. 工具测试](#3. 工具测试)
  • 六、搭建天气智查助手Agent
    • [1. 创建Agent](#1. 创建Agent)
    • [2. System Prompt(系统提示词)](#2. System Prompt(系统提示词))
    • [3. 调用工具](#3. 调用工具)
    • [4. 功能测试与效果展示](#4. 功能测试与效果展示)
    • [5. 发布](#5. 发布)
    • [6. 运行](#6. 运行)

一、前言

在 AI 应用快速落地的当下,Dify 作为低代码 AI 应用开发平台,支持通过自定义工具对接第三方 API,快速封装具备业务能力的 Agent。

本文将完整实战演示:基于百度天气开放 API ,在 Dify 中配置 OpenAPI 规范、封装自定义工具、编写 Agent 系统提示词,最终实现一款可查询实况天气、7天预报、逐小时天气、生活指数、气象预警的天气查询智能助手

适用场景:AI 问答助手、小程序天气模块、企业内部气象查询工具、智能客服天气能力扩展。

二、整体实现思路

  1. 调用第三方接口:百度地图开放平台天气 API,支持城市/区县维度查询;
  2. 接口标准化:编写符合 OpenAPI 3.1.0 规范的接口描述文件,接入 Dify 自定义工具;
  3. 工具封装:在 Dify 中导入 OpenAPI 配置,完成接口参数、响应、异常码配置;
  4. Agent 配置:编写角色、任务、限制、输出格式四类系统提示词,规范 AI 解析与回复逻辑;
  5. 联调测试:调用工具获取原始天气 JSON 数据,验证 Agent 解析、格式化输出效果。

三、申请百度地图开放平台 AK

1. 注册百度地图开放平台

进入百度地图开放平台,点击页面右上角的「注册」按钮,进入开发者注册流程;按照指引填写用户名、手机号、密码和验证码,完成账号注册;若已有百度账号,也可直接点击「登录」,选择已有账号登录并完成开发者认证。

2. 登录百度地图开放平台

进入百度地图开放平台官网,点击右上角的「登录」按钮,在弹出的登录窗口中,可选择短信登录(输入手机号和验证码)、扫码登录或第三方账号登录,完成身份验证后即可进入平台后台。

3. 创建应用并获取AK

登录百度地图开放平台后,点击右上角「控制台」进入开发者后台,在左侧「应用管理」-「我的应用」页面,点击「创建应用」按钮,开始配置用于天气API调用的服务端应用。

在创建应用弹窗中,填写应用名称、选择「服务端」类型、勾选「国内天气查询」服务,同时在IP白名单中配置访问权限(测试阶段可设置为0.0.0.0/0,正式环境建议填写服务器公网IP),完成后点击「提交」即可创建应用。

应用创建成功后,在「我的应用」列表中找到目标应用,点击「访问应用(AK)」右侧的复制按钮,获取并保存生成的AK密钥,后续在Dify配置自定义工具时,将使用该密钥调用百度天气API。

4. 查看国内天气查询接口开发文档

在百度地图开放平台控制台顶部的搜索框中输入"国内天气",在搜索结果里点击「国内天气查询开发文档」链接,即可进入对应的官方接口说明页面。

进入国内天气查询开发文档页面后,可以查看接口说明、API服务地址、请求参数、返回参数等详细信息,为后续在Dify中配置OpenAPI和自定义工具提供官方依据。

5. 接口测试

在百度天气接口文档的「国内天气查询」页面,输入你之前获取的AK密钥并确认,在右侧「在线运行」面板填写测试参数(如区县代码district_id和数据类型data_type),点击「执行」按钮,即可直接测试接口调用,成功后会在下方返回包含statusresult字段的天气数据JSON响应,验证接口可用性。


四、创建自定义工具

1. OpenAPI 规范配置内容及说明

1.1 OpenAPI 规范配置内容

json 复制代码
{
  "openapi": "3.1.0",
  "info": {
    "title": "百度天气查询接口",
    "description": "根据城市、区县名称获取实时天气数据",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://api.map.baidu.com",
      "description": "百度地图开放平台服务地址"
    }
  ],
  "paths": {
    "/weather/v1/": {
      "get": {
        "summary": "城市+区县查询天气",
        "description": "传入城市、区县名称,获取对应地区完整天气信息",
        "operationId": "getWeatherByCityDistrict",
        "deprecated": false,
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "description": "城市名称",
            "required": false,
            "schema": {
              "type": "string",
              "example": "昭通市"
            }
          },
          {
            "name": "district",
            "in": "query",
            "description": "区县名称",
            "required": true,
            "schema": {
              "type": "string",
              "example": "镇雄县"
            }
          },
          {
            "name": "data_type",
            "in": "query",
            "description": "控制返回内容类型:now=实况, fc=5天预报, index=生活指数, alert=预警, fc_hour=小时预报, all=全部数据",
            "required": true,
            "schema": {
              "type": "string",
              "enum": ["now", "fc", "index", "alert", "fc_hour", "all"],
              "default": "all"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "请求成功,返回天气数据",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherResponse"
                }
              }
            }
          },
          "400": {
            "description": "请求参数错误"
          },
          "401": {
            "description": "AK密钥无效"
          },
          "403": {
            "description": "IP白名单限制 / 权限不足"
          },
          "500": {
            "description": "服务器内部异常"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "WeatherResponse": {
        "type": "object",
        "description": "天气接口统一返回结构",
        "properties": {
          "status": {
            "type": "integer",
            "description": "接口状态码,0 表示请求成功"
          },
          "result": {
            "type": "object",
            "description": "天气详细业务数据"
          }
        }
      }
    }
  }
}

1.2 OpenAPI 规范配置说明

基础信息与服务器配置:

字段 说明
openapi: "3.1.0" 声明使用 OpenAPI 3.1.0 规范,是 Dify 支持的主流版本
info.title 接口文档标题,会在工具列表中展示
info.description 接口功能概述,帮助 Dify 理解工具用途
servers[0].url 百度地图 API 的基础地址,后续路径会自动拼接在其后

接口路径与请求配置:

字段 说明
/weather/v1/ 百度天气接口的请求路径,与基础地址拼接后为 https://api.map.baidu.com/weather/v1/
get 接口使用 GET 请求,适合查询类操作
summary 接口的简短功能说明,用于工具调用时的提示
description 接口的详细描述,帮助大模型理解工具能力
operationId 接口唯一标识,Dify 用它来区分不同工具函数

请求参数配置:

参数名 位置 类型 是否必填 说明
city query string 城市名称,如"昭通市",用于辅助定位
district query string 区县名称,如"镇雄县",为接口定位的核心参数
data_type query string 控制返回数据类型,支持 now/fc/index/alert/fc_hour/all,默认 all

响应与状态码配置:

状态码 说明
200 请求成功,返回天气数据,响应结构引用 WeatherResponse 模型
400 请求参数错误,如 data_type 传参不在枚举范围内
401 AK 密钥无效或未授权
403 IP 白名单限制或接口权限不足
500 百度服务端内部异常

数据模型配置:

模型名 字段 类型 说明
WeatherResponse - object 接口统一返回结构
status integer 接口状态码,0 表示请求成功
result object 天气业务数据,包含定位、实况、预报、指数等内容

2. 配置OpenAPI 规范

登录 Dify 平台后,进入「工作室」→「工具」页面,选择「自定义」分类,点击「创建自定义工具」按钮;在工具创建窗口中,填写工具名称(如"天气智查助手"),并将前面准备好的 OpenAPI 规范配置完整粘贴到 Schema 输入框中,完成接口定义的导入。

由于百度天气接口需要通过 ak 参数鉴权,因此在工具配置的「鉴权方法」中,选择「查询参数」类型,设置参数名为 ak,并将之前在百度地图开放平台获取的 AK 密钥填入值输入框,点击「保存」即可完成接口调用权限配置。

3. 工具测试

在Dify的自定义工具配置页面,找到刚创建的"天气智查助手"工具,点击右侧的「测试」按钮;在测试面板中输入查询参数(例如district填"西山区"、city填"昆明市"),点击「测试」按钮即可调用百度天气接口;若返回包含status:0和天气数据的JSON响应,则说明接口配置与鉴权均正常,最后点击「保存」完成工具的发布配置。


六、搭建天气智查助手Agent

1. 创建Agent

2. System Prompt(系统提示词)

为了让 Agent 能够将百度天气接口返回的原始 JSON 数据,转化为用户可读的结构化自然语言,在 Dify 中配置了完整的系统提示词。

  1. 角色设定:明确 Agent 为专业的天气数据查询与解读助手,依托百度天气API提供服务。
  2. 任务指令 :定义了从接收用户查询、调用工具获取数据、解析整理信息到给出生活建议的完整流程,并支持按用户指定的 data_type 筛选展示内容。
  3. 限制要求:设定了严格的对话边界、数据真实性、信息安全和用户友好性规则,确保 Agent 回答的专业性和可靠性。
  4. 输出格式:规定了统一、清晰的结构化回复模板,并根据不同查询类型(实况、预报、指数)定义了对应的精简展示规则,避免信息冗余。
markdown 复制代码
### 1. 角色设定
你是云小朵,你是专业的**天气数据查询与解读助手**,依托百度天气API获取全国各城市、区县的气象数据,能够精准解析实况天气、七日预报、逐小时天气、气象预警、生活指数等信息,为用户提供清晰、易懂、实用的天气服务。

### 2. 任务指令
1. 接收用户提出的**城市/区县**天气查询需求,调用内置百度天气接口完成数据获取。
2. 根据接口返回的原始天气数据,分类整理信息:地理位置、实时实况、温度体感、风力风向、空气质量、未来7天天气预报、逐小时天气、气象预警、生活出行指数。
3. 结合天气情况给出合理的出行、穿衣、运动、洗车等生活化建议。
4. 若用户指定 data_type(now/fc/index/alert/fc_hour/all),仅展示对应类型的天气内容。
5. 接口返回异常时(参数错误、AK失效、IP限制、服务异常),如实告知用户故障原因及简单解决办法。

### 3. 限制要求
1. 仅围绕**天气查询、气象解读、出行建议**开展对话,不回应与天气无关的问题。
2. 严格基于接口返回的真实数据作答,禁止编造、篡改天气信息。
3. 数据单位统一使用接口标准:温度(℃)、降水量(mm)、湿度(%)、能见度(m)。
4. 气象预警为空时,明确说明「当前该地区无气象预警信息」,不虚构内容。
5. 语言通俗易懂,避免堆砌专业代码、原始JSON字段,面向普通用户展示结果。
6. 不泄露接口AK、服务器地址等敏感配置信息。
7. 区分城市、区县层级,精准对应用户查询的地域,不混淆地区数据。

### 4. 输出格式
统一使用结构化格式回复,根据查询类型精简内容,格式如下:
#### 通用标准格式(默认 all 全量数据)
【查询地区】:XX省XX市XX区县
【更新时间】:XXXX年XX月XX日 XX时

#### 实时实况天气
天气状况:xxx
当前温度:xxx℃ | 体感温度:xxx℃
相对湿度:xxx% | 能见度:xxx米
风向风力:xxx
空气质量:AQI xxx,PM2.5:xxx
1小时降水量:xxx mm

#### 生活指数
逐条展示各项指数名称、简要评价、详细建议

#### 未来7天天气预报
按日期+星期,展示当日最高/最低温、白天/夜间天气、风向风力

#### 逐小时预报(近期时段)
选取关键时段展示天气、温度、降水概率

#### 气象预警
有预警:展示预警类型、等级、详情;无预警:当前无气象预警

#### 出行小贴士
结合整体天气,给出穿衣、出行、户外活动等综合建议

---
补充规则:
1. 若用户仅查询实况(now):只保留「查询地区、更新时间、实时实况天气、出行小贴士」模块。
2. 若用户仅查询预报(fc):只保留「查询地区、更新时间、未来7天天气预报、出行小贴士」模块。
3. 若用户仅查询生活指数(index):只保留「查询地区、更新时间、生活指数」模块。
4. 若接口报错:直接输出【异常提示】+ 故障原因 + 解决建议。

在 Dify 的「编排」页面中,将完整的系统提示词粘贴到提示词输入框内,提示词包含角色设定、任务指令、限制要求和输出格式四大模块,用于规范 Agent 的行为逻辑和回复样式。配置完成后,可通过右侧「调试与预览」窗口进行对话测试,验证 Agent 是否能正确调用工具并按预设格式返回天气信息。

3. 调用工具

在 Dify 应用的「编排」页面下方的「工具」模块中,点击「+ 添加」按钮,在弹出的工具列表中找到并勾选之前创建的「天气智查助手」自定义工具,开启工具开关,将其添加到当前 Agent 应用中,使大模型能够在对话中自动调用百度天气接口获取数据。

这里的「天气智查助手」自定义工具,是基于百度天气API封装的查询能力载体,它的核心作用是让Agent能够根据用户的城市/区县查询指令,自动调用接口获取实况天气、7天预报、逐小时天气、生活指数等结构化气象数据,而选择它是因为它完美适配Dify的工具调用机制,能通过OpenAPI规范定义接口参数与返回格式,配合系统提示词实现从用户自然语言提问到天气数据解析、再到结构化自然语言回复的完整闭环,让Agent真正具备实用的天气查询能力。

这里的「时间」工具,作用是为 Agent 提供当前系统时间的获取能力,它可以让天气查询回复里自动带上数据更新时间、区分"今天/明天/后天"等日期表述,让预报信息更贴合实际;搭配天气工具使用时,能让 Agent 精准处理时间相关的天气提问(比如"今天下午几点下雨""未来三天的温度变化"),避免因缺少时间上下文导致的逻辑混乱。

4. 功能测试与效果展示

在 Dify 右侧的「调试与预览」窗口中,直接输入查询指令(如"帮我查询西山区现在的天气")进行测试,Agent 会自动调用配置好的百度天气工具获取数据,并按照系统提示词中预设的结构化格式,返回包含查询地区、更新时间、实时天气及出行建议等信息的回复,验证工具调用与回复逻辑是否正常。

5. 发布

完成 Agent 功能测试并确认效果后,点击页面右上角的「发布」按钮,在下拉菜单中选择「发布更新」,即可将配置好的天气智查助手应用正式发布上线。发布后,你可以通过运行、嵌入网站、访问API等方式调用该应用,将其集成到不同的业务场景中使用。

6. 运行

在 Dify 应用页面,点击右上角「发布」按钮,在下拉菜单中选择「运行」选项,即可打开独立的对话窗口,开始正式使用天气智查助手。

在独立运行的对话窗口中,用户输入"西山区现在的天气"后,助手自动调用百度天气接口获取数据,并按照预设格式返回包含查询地区、更新时间、实时实况天气及出行小贴士的完整回复,实现了天气查询功能的最终落地。

相关推荐
意图共鸣1 小时前
意图共鸣科技《历史的韵脚》:从第一次能力下放到第三次,AI浪潮背后的技术普及逻辑
人工智能·科技
lijgvnns1 小时前
使用AI工具作为量化盯盘助手的信息处理与研究辅助方法
大数据·人工智能
杨先生哦1 小时前
【2026热端攻防系列 3/12】反射型&存储型XSS全解:AI批量免杀、WAF绕过与企业级防御
前端·人工智能·笔记·web安全·xss
workflower1 小时前
基于机器学习的设备故障预测分析方法
人工智能·算法·机器学习·设计模式·语言模型·自然语言处理·重构
لا معنى له1 小时前
SF2Net: Sequence Feature Fusion Network for Palmprint Verification
人工智能·笔记·学习·机器学习
黄敬峰1 小时前
从 Canvas 像素级渲染到 AI 驱动开发:前端 2D 游戏与数据可视化实战指南
人工智能
2601_956743681 小时前
2026 上海软件定制开发公司:依托 D-coding 解析企业级定制开发的技术方案与落地全路径
大数据·数据库·人工智能·软件开发·开发经验·上海
咕咕AI学堂1 小时前
Python 消息队列选型:从 Redis Stream 到 Kafka 的工程决策框架
人工智能
信实翻译1 小时前
跨越语言的长河:纪录片翻译的艺术与科学
人工智能