- LLM
- Ollama
- OpenClaw
- Posts
- 安全
Dify 大语言模型配置
概述
在使用大型语言模型节点之前,需要在 系统设置 → 模型供应商 中配置至少一个模型供应商。本文将详细介绍如何在 Dify 中配置和使用各种大语言模型。
模型选择和参数
配置模型供应商
步骤:
- 进入 系统设置
- 选择 模型供应商
- 点击 添加供应商
- 配置 API 密钥
- 测试连接
支持的模型提供商
| 提供商 | 模型系列 | 特点 |
|---|---|---|
| OpenAI | GPT-4o, GPT-4o-mini | 强大的推理能力,多模态支持 |
| Anthropic | Claude 3.5 Opus, Sonnet, Haiku | 优秀的对话能力,长上下文 |
| Gemini Pro, Ultra | 多模态,Google 生态集成 | |
| 通义千问 | Qwen Max, Plus, Turbo | 中文优化,性价比高 |
| 智谱 AI | GLM-4, GLM-4 Flash | 国产模型,适合中文场景 |
| DeepSeek | DeepSeek Chat, Coder | 代码能力强,性价比高 |
| 本地模型 | Ollama, LocalAI, Xinference | 隐私安全,无网络依赖 |
模型选择建议
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 复杂推理 | GPT-4o, Claude Opus | 推理能力最强 |
| 代码生成 | GPT-4o, DeepSeek Coder | 代码理解准确 |
| 对话聊天 | Claude Sonnet, Qwen Plus | 对话自然流畅 |
| 成本敏感 | GPT-4o-mini, Haiku | 价格低廉 |
| 隐私要求 | 本地模型 | 数据不上传 |
| 中文场景 | Qwen Max, GLM-4 | 中文优化更好 |
LLM 节点配置
模型选择
从已配置的任何模型供应商中进行选择。
配置示例:
LLM 节点配置: model: provider: "openai" name: "gpt-4o" mode: "chat" # chat, completion温度参数
温度控制输出的随机性和创造性:
| 温度值 | 效果 | 适用场景 |
|---|---|---|
| 0.0 - 0.3 | 确定性输出,一致性强 | 代码生成、数据分析、精确问答 |
| 0.4 - 0.7 | 平衡输出,适度创造性 | 日常对话、内容生成、翻译 |
| 0.8 - 1.0 | 高创造性输出 | 创意写作、头脑风暴、故事生成 |
配置示例:
LLM 节点配置: model: temperature: 0.7核采样(Top P)
通过概率限制词汇选择,通常设置在 0.8-1.0。
配置示例:
LLM 节点配置: model: top_p: 0.95频率惩罚
减少重复内容,范围 -2.0 到 2.0。
配置示例:
LLM 节点配置: model: frequency_penalty: 0.5存在惩罚
鼓励讨论新话题,范围 -2.0 到 2.0。
配置示例:
LLM 节点配置: model: presence_penalty: 0.3预设选项
Dify 提供三种预设配置:
| 预设 | 温度 | Top P | 频率惩罚 | 存在惩罚 |
|---|---|---|---|---|
| 精确 | 0.3 | 0.95 | 0.0 | 0.0 |
| 平衡 | 0.7 | 0.95 | 0.3 | 0.3 |
| 创意 | 1.0 | 0.95 | 0.5 | 0.5 |
提示词配置
提示词类型
聊天模型
使用消息角色:
- 系统(System):定义 AI 的行为和角色
- 用户(User):用户的输入
- 助手(Assistant):AI 的回复示例
配置示例:
LLM 节点配置: prompt: system: "你是一个专业的 {{role}},专注于 {{expertise}}。" user: "请处理以下内容:{{input}}" assistant: "这是一个示例回复。"完成模型
使用简单的文本续写。
配置示例:
LLM 节点配置: prompt: completion: "以下是一段文本:{{text}}\n\n 请继续:"变量引用
使用双花括号语法引用工作流变量:
LLM 节点配置: prompt: system: "你是 {{User Input/role}}" user: "处理:{{Previous Node/output}}"Jinja2 模板支持
使用 Jinja2 模板进行高级变量处理:
LLM 节点配置: prompt: system: | 你是一个 {{role|default(' 助手 ')}}。 {% if language %} 请使用 {{language}} 回答。 {% endif %}支持的 Jinja2 功能:
- 变量替换
- 条件判断
- 循环
- 过滤器
上下文变量
知识库上下文
将知识库内容注入到 LLM 节点中。
配置示例:
LLM 节点配置: context: knowledge_base: "product_docs" retrieval: top_k: 5 similarity_threshold: 0.7 variable_name: "context" prompt: system: "你是一个客服助手。" user: | 基于以下上下文回答问题: {{context}}
问题:{{query}}文件上下文
处理上传的文件,包括图像和文档。
配置示例:
LLM 节点配置: context: files: variable: "User Input/user_file" vision: enabled: true detail: "high" # high, low document: extract_text: true变量来源
| 变量来源 | 说明 | 示例 |
|---|---|---|
| 用户输入 | 从用户输入节点获取 | {{User Input/text}} |
| 节点输出 | 从其他节点的输出获取 | {{Previous Node/output}} |
| 知识库 | 从知识库检索获取 | {{context}} |
| 系统变量 | 系统提供的变量 | {{sys.workflow_run_id}} |
| 环境变量 | 环境配置的变量 | {{env.API_KEY}} |
结构化输出
配置结构化输出
强制模型返回特定数据格式(如 JSON)以便程序化使用。
配置方法:
- 可视化编辑器
- JSON Schema
- AI 生成
可视化编辑器
配置示例:
LLM 节点配置: structured_output: enabled: true schema: type: "object" properties: title: type: "string" description: "标题" content: type: "string" description: "内容" tags: type: "array" items: type: "string" description: "标签列表" required: - "title" - "content"JSON Schema
直接粘贴 JSON Schema 定义。
配置示例:
{ "type": "object", "properties": { "platform_name": { "type": "string", "description": "平台名称" }, "post_content": { "type": "string", "description": "帖子内容" }, "hashtags": { "type": "array", "items": { "type": "string" }, "description": "标签列表" }, "character_count": { "type": "number", "description": "字符数" } }, "required": ["platform_name", "post_content"]}AI 生成
让 AI 自动生成适合的 Schema。
步骤:
- 点击 AI 生成
- 描述需要的数据结构
- AI 自动生成 Schema
- 手动调整和优化
记忆和文件处理
记忆管理
记忆是节点特定的,不会在不同对话之间持续存在。
配置示例:
LLM 节点配置: memory: enabled: true max_messages: 10 strategy: "recent" # recent, summary文件处理
支持处理多种文件类型:
图像处理:
LLM 节点配置: files: vision: enabled: true detail: "high" # 高细节,更准确但使用更多 token # 或 "low" - 低细节,更快但准确性较低文档处理:
LLM 节点配置: files: document: extract_text: true max_pages: 10自动获取文件:
LLM 节点配置: files: variable: "User Input/user_file" # 自动从用户输入节点获取流式结果返回
流式响应
大型语言模型节点默认支持流式结果返回。
配置示例:
LLM 节点配置: streaming: enabled: true chunk_size: 100流式事件
每个文本块都作为 RunStreamChunkEvent 产生,实现实时响应显示。
事件类型:
message:文本块message_end:消息结束error:错误信息
不同场景的配置
创意写作
LLM 节点配置: model: temperature: 0.9 top_p: 0.95 frequency_penalty: 0.5 presence_penalty: 0.3 prompt: system: "你是一个创意写作专家。" user: "请创作一个关于 {{topic}} 的故事。"代码生成
LLM 节点配置: model: temperature: 0.2 top_p: 0.95 frequency_penalty: 0.0 presence_penalty: 0.0 prompt: system: "你是一个专业的程序员。" user: "请编写一个 {{language}} 函数来 {{task}}。" structured_output: enabled: true schema: type: "object" properties: code: type: "string" explanation: type: "string"文档摘要
LLM 节点配置: model: temperature: 0.3 top_p: 0.9 frequency_penalty: 0.1 presence_penalty: 0.1 prompt: system: "你是一个文档摘要专家。" user: | 请总结以下文档: {{context}}
摘要要求: 1. 提取关键信息 2. 保持简洁(不超过 500 字) 3. 使用要点列表问答系统
LLM 节点配置: model: temperature: 0.1 top_p: 0.85 frequency_penalty: 0.0 presence_penalty: 0.0 context: knowledge_base: "faq" retrieval: top_k: 3 prompt: system: "你是一个客服助手。" user: | 基于以下信息回答问题: {{context}}
问题:{{query}}
如果信息不足,请诚实告知。性能优化
Token 优化
控制上下文长度:
LLM 节点配置: model: max_tokens: 2000使用缓存:
LLM 节点配置: cache: enabled: true ttl: 3600批处理
批量处理相似请求:
迭代节点: parallel_mode: true max_parallelism: 10模型选择
根据任务复杂度选择合适的模型:
路由配置: rules: - condition: "task.complexity < 3" model: "gpt-4o-mini" - condition: "task.complexity >= 3" model: "gpt-4o"故障排查
连接问题
症状:无法连接到模型 API
解决方案:
# 测试网络连接curl -I https://api.openai.com
# 检查 API 密钥echo $OPENAI_API_KEY
# 测试模型连接openclaw model test <model-id>认证问题
症状:401 Unauthorized 错误
解决方案:
# 验证 API 密钥echo $OPENAI_API_KEY
# 重新设置 API 密钥export OPENAI_API_KEY="new-key"
# 测试连接openclaw model test <model-id>限流问题
症状:429 Too Many Requests 错误
解决方案:
# 降低请求频率rate_limit: enabled: true requests_per_minute: 60
# 使用多个 API 密钥providers: - name: "openai" api_keys: - "${OPENAI_API_KEY_1}" - "${OPENAI_API_KEY_2}"资源链接
- OpenAI 文档: https://platform.openai.com/docs
- Anthropic 文档: https://docs.anthropic.com
- Dify 模型文档: https://docs.dify.ai/zh/use-dify/nodes/llm
最后更新: 2026-03-12 作者: EchoHaoRan
Auth_Verified: 2026.04.08
