
深入解析 DeepSeek API 密鑰:獲取、使用與最佳實踐
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 + 高德天氣)