
深入解析 DeepSeek API 密钥:获取、使用与最佳实践
在大模型应用开发中,“模型 + 工具” 的协同模式 是突破能力边界的关键。本文将以 “智能天气查询” 为例,手把手教你通过 Dify Agent + DeepSeek 大模型 + 高德天气 API,借助 Function Calling 实现从 “用户提问” 到 “实时天气数据输出” 的完整闭环。
city
、date
、forecast
数组)。进入 Dify「工具」模块 → 新建 HTTP 工具:
key:固定为你的高德 API Key(认证字段)
forecast
中的 date
、weather
、temperature
字段)。在 Dify「模型」模块,接入 DeepSeek-chat(或其他支持 Function Calling 的大模型),验证调用正常。
通过 Dify 工作流编辑器,搭建 “输入→处理→输出” 核心流程(对应截图结构):
query
,接收用户提问(如 “上海明天天气”)。FunctionCalling
(让模型自主决定是否调用工具)。DeepSeek-chat
(负责意图理解和指令生成)。在 Agent 节点的 「指令」框 中,编写 Prompt 规则,指导模型完成三个核心动作:
提示词
当用户提问满足以下条件时,**强制调用「高德天气预报」工具**:
- 包含「天气」「气温」「预报」「晴雨」「温度」等关键词;
- 提到具体城市(如「北京」「上海」,从「开始」节点的 query
中提取);
- 未明确拒绝工具(如“不用工具,直接回答”)。
提示词
### 参数规则(严格匹配高德API)
| 参数名 | 取值逻辑(从 query
提取) | 示例 |
|--------|------------------------------------------------|-----------------------------------|
| city
| 提取城市名(如「上海明天天气」→ city="上海"
) | 必须为真实城市名称(省/市级) |
| date
| - 「今天」→ 系统当前日期(如 2025-06-29
)<br>- 「明天」→ 当前日期+1天(如 2025-06-30
)<br>- 具体日期(如「2025-07-01」)→ 直接使用 | 格式必须为 YYYY-MM-DD
### 回复规则(基于高德返回结构)
假设工具返回:
```json
{
"forecast": [
{"date": "2025-06-29", "weather": "小雨", "temp": "26~30℃"},
{"date": "2025-06-30", "weather": "阴", "temp": "25~28℃"}
]
}
需生成自然语言回复:
上海未来 2 天天气预报:
・2025-06-29:小雨,26~30℃
・2025-06-30:阴,25~28℃
若工具返回错误:
- **城市无效**:回复「未找到『{city}』的天气数据,请检查城市名称」;
- **日期格式错**:自动修正为 YYYY-MM-DD
后重试(最多1次);
- **API超时**:回复「天气查询繁忙,请稍后再试」,结合 Agent 最大迭代次数(如3次)触发重试。
# 高德天气 Function Calling 指令设计(精准版)
### 一、触发规则:何时调用高德天气工具?
当用户提问满足以下 **全部条件** 时,**强制触发 Function Calling**,调用「GAODE 天气预报」工具:
1. 提问包含 **天气相关关键词**:如「天气」「气温」「预报」「晴雨」「温度」「风力」「降水」等;
2. 提问涉及 **具体城市**(需从「开始」节点的 query
变量中提取城市名,如「北京」「上海」);
3. 未明确拒绝工具调用(如用户未说「不用工具,直接回答」)。
### 二、参数构造:如何调用高德接口?
严格遵循高德天气工具的参数要求,按以下规则生成调用参数:
| 参数名 | 类型 | 是否必填 | 取值逻辑(从 query
变量解析) |
|--------------|--------|----------|------------------------------------------------------------------------------------------------|
| city
| 字符串 | ✅ 必传 | 从用户提问中提取城市名称:<br>- 例 1:「北京明天天气」→ city="北京"
<br>- 例 2:「上海后天的气温」→ city="上海"
<br>- 若未提取到城市(如「今天天气」),触发异常(见「四、异常处理」)。 |
| date
| 字符串 | ❌ 选填 | 日期格式必须为 YYYY-MM-DD
:<br>- 「今天」→ 系统当前日期(如 2025-06-29
,需动态获取);<br>- 「明天」→ 当前日期+1天(如 2025-06-30
);<br>- 具体日期(如「2025-07-01」)→ 直接使用;<br>- 未提日期 → 默认为 **当前日期**(查询今日预报)。 |
| type
| 字符串 | ❌ 选填 | 默认为 forecast
(预报);若用户问「实时天气」,可传 realtime
(需工具支持,需提前确认高德接口能力)。 |
### 三、结果解析:如何生成用户能懂的回复?
工具返回 **结构化数据** 后,按以下规则整合为自然语言:
#### 1. 数据映射(假设高德返回格式示例):
```json
{
"city": "北京",
"date": "2025-06-29",
"weather": "晴转多云",
"temp_min": 22,
"temp_max": 30,
"wind": "南风 3-4 级",
"humidity": 55%
}
用户提问 | 预期行为 |
上海今天天气 | 调用高德工具,返回今日预报(如:上海 2025-06-29 天气:小雨,26~30℃ ) |
北京明天会下雨吗 | 提取城市「北京」、日期「2025-06-30」,解析降雨信息 |
某某村天气 | 因城市无效,回复「未找到『某某村』的天气数据…」 |
广州2025/07/01天气 | 自动修正日期为 2025-07-01 后重试,返回结果 |
功能扩展:
extensions=base
,解析实时温度、风力。体验优化:
通过 Dify Agent + 大模型 + 外部工具,三步搭建智能天气机器人:
这种模式 可扩展性极强 —— 替换工具(如股票、快递 API)和指令,即可快速构建新应用。掌握 Function Calling 核心逻辑,让大模型真正连接真实世界!
文章转载自: 【2025 年最新版】Dify 全链路实战 16:三步搭建智能天气查询机器人(Agent+DeepSeek + 高德天气)