第八章:模型接入與配置
8.1 模型概述
8.1.1 Dify 與模型的關係
Dify 是基於大語言模型(LLM)的 AI 應用開發平台,模型是 Dify 的核心驅動力。Dify 本身不提供模型,而是作為一個統一的接口層,讓你可以:
- 接入數百種不同的模型
- 統一管理模型配置
- 靈活切換和對比模型
- 控制模型調用成本
8.1.2 為什麼需要模型管理
多模型支持:
不同的任務可能需要不同的模型,統一的管理界面讓切換更便捷。
成本控制:
跟蹤和優化模型調用成本,選擇性價比最優的方案。
靈活性:
可以隨時更換模型供應商,不被單一供應商鎖定。
安全性:
集中管理 API 密鑰,保護敏感信息。
8.1.3 模型類型分類
在 Dify 中,模型按使用場景分為四類:
|
類型
|
用途
|
示例模型
|
|
系統推理模型
|
應用核心推理
|
GPT-4, Claude 3
|
|
Embedding 模型
|
文本向量化
|
text-embedding-3
|
|
Rerank 模型
|
檢索結果重排序
|
Cohere Rerank
|
|
語音模型
|
語音轉文字
|
Whisper
|
8.2 模型供應商
8.2.1 主流模型供應商
OpenAI:
公司: OpenAI
主要模型: GPT-4, GPT-3.5-turbo
特點:
- 最廣泛使用的商業模型
- 優秀的指令跟隨能力
- 支持函數調用
獲取 API Key: platform.openai.com
Anthropic:
公司: Anthropic
主要模型: Claude 3 (Opus, Sonnet, Haiku)
特點:
- 強大的長文本處理能力
- 優秀的推理和分析能力
- 注重安全和可控性
獲取 API Key: console.anthropic.com
Azure OpenAI:
公司: Microsoft Azure
主要模型: GPT-4, GPT-3.5-turbo (Azure 部署版)
特點:
- 企業級服務保障
- 合規性認證
- 與 Azure 生態集成
獲取方式: Azure Portal
8.2.2 國產模型供應商
百度文心一言:
公司: 百度
主要模型: ERNIE-4.0, ERNIE-Bot
特點:
- 中文理解能力強
- 本土化服務
- 多模態支持
獲取 API Key: cloud.baidu.com/product/wenxinworkshop
阿里通義千問:
公司: 阿里雲
主要模型: qwen-turbo, qwen-plus, qwen-max
特點:
- 優秀的中文能力
- 長上下文支持
- 與阿里雲集成
獲取 API Key: dashscope.aliyun.com
訊飛星火:
公司: 科大訊飛
主要模型: Spark 3.5, Spark 3.0
特點:
- 語音能力強
- 多輪對話優化
- 行業解決方案
獲取 API Key: xinghuo.xfyun.cn
智譜 AI:
公司: 智譜 AI
主要模型: GLM-4, ChatGLM
特點:
- 開源與商用結合
- 中英雙語能力
- 工具調用支持
獲取 API Key: open.bigmodel.cn
8.2.3 開源模型部署
Hugging Face:
平台: Hugging Face Inference API
主要模型: Llama, Mistral, Mixtral 等
特點:
- 海量開源模型
- 按需調用
- 社區活躍
本地部署方案:
|
方案
|
特點
|
適用場景
|
|
Ollama
|
簡單易用
|
本地開發測試
|
|
vLLM
|
高性能推理
|
生產環境
|
|
LocalAI
|
OpenAI 兼容
|
本地替代
|
|
Xinference
|
多框架支持
|
靈活部署
|
8.3 模型接入配置
8.3.1 進入模型配置
- 登錄 Dify 控制枱
- 點擊左下角"設置"
- 選擇"模型供應商"
8.3.2 接入 OpenAI
配置步驟:
- 在模型供應商列表中找到 OpenAI
- 點擊"設置"按鈕
- 輸入 API Key
- 點擊"保存"
高級配置:
API Key: sk-xxxxxxxxxxxxxxxx
API Base URL: https://api.openai.com/v1 # 可選,用於代理
組織 ID: org-xxxxx # 可選
可用模型:
- gpt-4-turbo
- gpt-4
- gpt-3.5-turbo
- text-embedding-3-small
- text-embedding-3-large
- whisper-1
8.3.3 接入 Anthropic
配置步驟:
- 找到 Anthropic 供應商
- 輸入 API Key
- 保存配置
可用模型:
- claude-3-opus
- claude-3-sonnet
- claude-3-haiku
- claude-2.1
8.3.4 接入 Azure OpenAI
配置步驟:
API Base URL: https://your-resource.openai.azure.com
API Key: xxxxxxxxxx
API Version: 2024-02-15-preview
部署名稱: your-deployment-name
注意事項:
- 需要先在 Azure Portal 創建資源
- 每個模型需要單獨部署
- 部署名稱需要手動指定
8.3.5 接入國產模型
百度文心:
API Key: xxxxxxxxxxx
Secret Key: xxxxxxxxxxx
阿里通義:
API Key: sk-xxxxxxxxxx
訊飛星火:
App ID: xxxxxxxx
API Key: xxxxxxxxxx
API Secret: xxxxxxxxxxxx
8.3.6 接入本地模型
Ollama 配置:
API Base URL: http://localhost:11434
模型名稱: llama2, mistral, mixtral 等
啓動 Ollama:
# 安裝 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# 運行模型
ollama run llama2
# Ollama 服務地址
http://localhost:11434
Xinference 配置:
API Base URL: http://localhost:9997
模型名稱: 根據部署的模型確定
8.4 模型參數配置
8.4.1 核心參數説明
Temperature(温度):
範圍: 0.0 - 2.0
默認: 1.0
作用: 控制輸出的隨機性
- 低值(0.1-0.3): 輸出更確定、更一致
- 中值(0.5-0.7): 平衡創造性和一致性
- 高值(0.8-1.5): 輸出更多樣、更有創意
推薦設置:
- 代碼生成: 0.1-0.3
- 客服回答: 0.3-0.5
- 創意寫作: 0.7-1.0
Top P(核採樣):
範圍: 0.0 - 1.0
默認: 1.0
作用: 控制詞彙選擇的範圍
- 低值(0.5): 只選擇概率最高的詞
- 高值(0.9): 允許選擇更多詞彙
注意: 通常不與 Temperature 同時調整
Max Tokens(最大輸出長度):
作用: 限制模型輸出的最大 Token 數
設置建議:
- 簡短回答: 256-512
- 一般對話: 1024-2048
- 長文生成: 4096+
注意: 更長的輸出需要更多成本
Presence Penalty(存在懲罰):
範圍: -2.0 - 2.0
默認: 0
作用: 懲罰已出現的詞彙
- 正值: 鼓勵討論新話題
- 負值: 允許重複話題
Frequency Penalty(頻率懲罰):
範圍: -2.0 - 2.0
默認: 0
作用: 懲罰頻繁出現的詞彙
- 正值: 減少重複用詞
- 負值: 允許重複用詞
8.4.2 參數調優建議
按場景調參:
|
場景
|
Temperature
|
Top P
|
Max Tokens
|
|
代碼生成
|
0.2
|
0.9
|
2048
|
|
客服對話
|
0.5
|
0.9
|
512
|
|
創意寫作
|
0.8
|
0.95
|
4096
|
|
數據分析
|
0.3
|
0.9
|
2048
|
|
翻譯
|
0.3
|
0.9
|
2048
|
|
摘要
|
0.5
|
0.9
|
1024
|
8.4.3 模型切換
在應用中切換模型:
- 進入應用編排界面
- 點擊模型選擇下拉框
- 選擇目標模型
- 調整相應參數
- 測試效果
模型對比測試:
- 準備測試用例
- 在相同輸入下對比不同模型
- 記錄響應質量、速度和成本
- 選擇最優方案
8.5 默認模型設置
8.5.1 設置默認模型
在"設置" → "模型供應商"中配置:
系統推理模型:
- 用於新建應用的默認推理模型
- 用於系統功能(對話命名、建議問題等)
Embedding 模型:
- 用於知識庫向量化的默認模型
8.5.2 默認配置建議
系統推理模型: gpt-3.5-turbo
# 性價比高,適合大多數場景
Embedding 模型: text-embedding-3-small
# 成本較低,效果良好
備選方案:
推理: gpt-4-turbo(需要更強能力時)
Embedding: text-embedding-3-large(需要更高質量時)
8.6 負載均衡
8.6.1 什麼是負載均衡
當需要處理大量請求時,可以配置多個相同模型的 API Key,實現:
- 提高併發能力
- 避免單個 Key 的速率限制
- 故障轉移
8.6.2 配置負載均衡
步驟:
- 進入模型配置
- 點擊"負載均衡"
- 添加多個 API Key
- 配置負載策略
負載策略:
輪詢(Round Robin): 按順序依次使用
權重(Weighted): 按權重比例分配
最少連接: 選擇當前連接最少的
8.6.3 配置示例
模型: gpt-4-turbo
負載均衡:
- API Key: sk-key1
權重: 50
狀態: 啓用
- API Key: sk-key2
權重: 30
狀態: 啓用
- API Key: sk-key3
權重: 20
狀態: 備用
8.7 成本控制
8.7.1 模型定價瞭解
OpenAI 定價示例(價格可能變化):
|
模型
|
輸入
|
輸出
|
|
gpt-4-turbo
|
$10/1M tokens
|
$30/1M tokens
|
|
gpt-3.5-turbo
|
$0.5/1M tokens
|
$1.5/1M tokens
|
|
text-embedding-3-small
|
$0.02/1M tokens
|
-
|
8.7.2 成本優化策略
選擇合適的模型:
- 簡單任務用 gpt-3.5-turbo
- 複雜任務才用 gpt-4
優化提示詞:
- 精簡提示詞減少輸入 Token
- 明確輸出格式減少輸出 Token
合理設置參數:
- 限制 max_tokens
- 避免不必要的長輸出
使用緩存:
- 相似問題複用答案
- 減少重複調用
8.7.3 用量監控
在 Dify 中查看用量:
- 進入應用詳情
- 查看"監控"面板
- 分析 Token 消耗趨勢
監控指標:
- 總 Token 消耗
- 平均每次調用 Token
- 成本趨勢
- 高消耗請求
8.8 Embedding 模型配置
8.8.1 Embedding 模型的作用
Embedding 模型用於將文本轉換為向量表示:
- 知識庫文檔向量化
- 用户查詢向量化
- 相似度計算
8.8.2 主流 Embedding 模型
OpenAI:
text-embedding-3-large:
維度: 3072
效果: 最佳
成本: 較高
text-embedding-3-small:
維度: 1536
效果: 良好
成本: 較低
開源方案:
BGE(中文):
模型: bge-large-zh
維度: 1024
特點: 中文效果好
Jina Embeddings:
模型: jina-embeddings-v2
維度: 768
特點: 多語言支持
8.8.3 選擇建議
|
場景
|
推薦模型
|
原因
|
|
英文為主
|
text-embedding-3-small
|
性價比高
|
|
中文為主
|
bge-large-zh
|
中文優化
|
|
高精度要求
|
text-embedding-3-large
|
效果最好
|
|
預算有限
|
開源模型本地部署
|
成本最低
|
8.9 Rerank 模型配置
8.9.1 Rerank 的作用
Rerank 模型用於對檢索結果進行重排序:
- 提高檢索準確率
- 過濾不相關結果
- 優化答案質量
8.9.2 配置 Rerank
Cohere Rerank:
提供商: Cohere
模型: rerank-multilingual-v2.0
配置:
API Key: your-cohere-api-key
Jina Reranker:
提供商: Jina AI
模型: jina-reranker-v1
配置:
API Key: your-jina-api-key
8.9.3 使用建議
適用場景:
- 知識庫檢索質量要求高
- 檢索結果需要精確排序
- 願意承擔額外成本
配置位置:
- 在知識庫檢索設置中啓用
- 在工作流知識檢索節點中配置
8.10 最佳實踐
8.10.1 模型選擇原則
按任務選擇:
簡單對話: gpt-3.5-turbo
複雜推理: gpt-4
代碼生成: gpt-4 或 Claude 3
長文處理: Claude 3
中文任務: 國產模型或專門優化的模型
按成本選擇:
開發測試: gpt-3.5-turbo
生產環境: 根據質量要求選擇
高價值場景: 選擇最優模型
8.10.2 安全建議
API Key 管理:
- 定期輪換 Key
- 不在代碼中硬編碼
- 使用環境變量
訪問控制:
- 限制 Key 的訪問 IP
- 設置使用配額
- 監控異常調用
8.10.3 可靠性保障
故障轉移:
- 配置備用模型
- 使用負載均衡
- 監控模型可用性
超時處理:
- 設置合理的超時時間
- 配置重試策略
- 提供降級方案
8.11 本章小結
通過本章的學習,你應該掌握:
- 模型分類:瞭解不同類型模型的用途
- 供應商接入:掌握各主流供應商的接入方法
- 參數配置:理解核心參數的含義和調優方法
- 成本控制:學會監控和優化模型使用成本
- 高可用:瞭解負載均衡和故障轉移配置
8.12 思考與練習
- 實踐練習:
- 接入 OpenAI 和一個國產模型
- 對比不同模型在相同任務上的表現
- 配置負載均衡
- 思考題:
- 如何選擇適合業務場景的模型?
- 如何在質量和成本之間取得平衡?
- 本地部署模型有哪些優缺點?
下一章預告:第九章將介紹 API 集成與發佈,包括應用發佈方式、API 調用和安全管理。