上一篇 下一篇 分享链接 返回 返回顶部

Dify 成本太高?这套配置和优化方法能省不少钱

发布人:慈云数据-客服中心 发布时间:5小时前 阅读量:2

Dify 如何降低成本|附配置文件

Dify 是一个非常适合企业和团队快速搭建 AI 应用的平台。无论是知识库问答、智能客服、Agent 工作流,还是内部自动化助手,Dify 都能以较低的开发门槛完成落地。

但在真实使用过程中,很多团队会发现一个问题:Dify 本身部署不难,真正持续产生费用的是模型调用、知识库检索、向量化、服务器资源和调试过程中的无效消耗

如果不做成本控制,一个看似简单的知识库问答应用,在用户量上来之后,每月模型费用、Embedding 费用、服务器费用和存储费用都会快速增长。

本文将系统介绍如何降低 Dify 使用成本,并附上可直接参考的配置文件,包括:

  • Dify 成本主要来自哪里;
  • 如何选择更经济的模型;
  • 如何降低 Prompt 和 Token 消耗;
  • 如何优化知识库召回;
  • 如何通过缓存减少重复调用;
  • 如何调整 Docker Compose 配置;
  • 如何用本地模型或国产模型降低费用;
  • 如何配置 Nginx、环境变量和资源限制;
  • 企业团队使用 Dify 时的成本治理建议。

一、Dify 的成本主要来自哪里?

在讨论降本之前,首先要明确 Dify 的成本构成。很多人以为 Dify 的成本就是“服务器费用”,但实际上服务器往往不是最大头,真正的大头通常是模型调用费用。

Dify 的成本大致可以分为以下几类。


1. 大模型调用费用

这是最主要的成本来源。

每一次用户对话、工作流节点调用、Agent 推理,本质上都会请求一次或多次大模型 API。

费用通常按照以下方式计算:

费用 = 输入 Token 费用 + 输出 Token 费用

比如用户问一句话,系统会把以下内容一起发给模型:

  • 用户问题;
  • 系统提示词;
  • 应用角色设定;
  • 历史对话;
  • 知识库召回内容;
  • 工作流中间变量;
  • 工具调用结果。

很多团队在调试时发现,用户明明只问了一句“公司报销流程是什么?”,但实际发给模型的上下文可能已经有几千甚至上万 Token。

这就是成本升高的主要原因。


2. Embedding 向量化费用

如果你使用 Dify 的知识库功能,就会涉及 Embedding。

知识库有两个阶段会消耗 Embedding:

  1. 文档上传和切分时,需要把文本转成向量;
  2. 用户查询时,需要把用户问题也转成向量,再去知识库中检索。

如果知识库内容很多,或者频繁更新文档,Embedding 成本也会明显增加。

虽然单次 Embedding 的价格通常低于大模型对话,但对于文档量大、调用频繁的系统,Embedding 成本也不能忽略。


3. Rerank 重排序费用

Dify 支持在知识库检索后使用 Rerank 模型,对召回结果重新排序。

Rerank 可以提升回答准确性,但也会增加额外成本。

如果每次查询都把大量召回片段交给 Rerank 模型处理,费用和延迟都会增加。

因此,Rerank 应该根据业务场景谨慎开启,而不是默认所有应用都打开。


4. 服务器和数据库成本

如果自部署 Dify,需要服务器承载以下服务:

  • Dify API;
  • Dify Web;
  • Worker;
  • PostgreSQL;
  • Redis;
  • 向量数据库;
  • 文件存储;
  • Sandbox;
  • Nginx 反向代理。

如果部署方式不合理,比如所有组件无限制占用内存,或者 Worker 数量过多,就会导致服务器配置过高,增加固定成本。


5. 调试和测试成本

很多团队忽略了一个隐性成本:调试成本。

比如:

  • 频繁测试同一个工作流;
  • 每次调试都调用高价模型;
  • 测试阶段使用正式知识库;
  • Prompt 反复试错但没有缓存;
  • 多人同时调试同一个应用。

这些都会带来大量无效消耗。

所以,Dify 降本不只是“换便宜模型”,而是需要从模型、Prompt、知识库、部署、缓存和权限管理等多个方面一起优化。


二、模型选择:优先使用“分层模型策略”

降低 Dify 成本最有效的方式,就是不要所有任务都用最贵的大模型。

很多场景其实不需要顶级模型,例如:

  • 文档摘要;
  • 意图识别;
  • FAQ 问答;
  • 格式转换;
  • 简单分类;
  • 简单代码生成;
  • 数据提取;
  • 固定模板回复。

这些任务可以使用更便宜的模型完成。

建议采用“分层模型策略”。


1. 简单任务使用低成本模型

例如:

意图识别:使用便宜模型
文本分类:使用便宜模型
关键词提取:使用便宜模型
普通 FAQ:使用便宜模型
格式化输出:使用便宜模型

在 Dify 工作流中,可以把这些节点配置为低成本模型。

比如:

  • OpenAI:GPT-4o mini、GPT-3.5 级别模型;
  • DeepSeek:deepseek-chat;
  • Qwen:qwen-turbo、qwen-plus;
  • Zhipu:glm-4-flash;
  • Moonshot:moonshot-v1-8k;
  • 本地模型:Qwen2.5、Llama、Yi、InternLM 等。

2. 复杂推理使用高能力模型

以下场景再使用高能力模型:

复杂推理
多步骤规划
高价值客户问题
专业法律/医学/金融分析
复杂代码生成
长上下文总结

这样可以避免所有请求都走高价模型。


3. 在工作流中做模型路由

Dify 的工作流非常适合做模型路由。

例如:

  1. 第一个节点判断问题复杂度;
  2. 如果是普通 FAQ,走低成本模型;
  3. 如果是复杂问题,走高能力模型;
  4. 如果低成本模型置信度不足,再升级到高能力模型。

示例逻辑:

用户问题
  ↓
意图识别节点:判断问题类型
  ↓
如果是 FAQ / 简单咨询 → 低成本模型
如果是复杂分析 / 多轮推理 → 高能力模型
如果无法判断 → 默认低成本模型 + 兜底升级

这种方式可以显著降低平均调用成本。


三、减少 Token:Dify 降本的核心手段

模型费用通常按 Token 计费,因此减少 Token 是最直接的降本方式。


1. 精简系统提示词

很多团队喜欢写非常长的 Prompt,例如:

你是一个专业、严谨、耐心、细致、逻辑清晰、擅长沟通、善于分析、具备多行业经验的 AI 助手……

这类描述看起来很完整,但每次请求都会重复发送,长期使用成本很高。

更好的方式是简洁明确:

你是企业内部知识库助手。请基于检索内容回答问题。
如果资料中没有答案,请回复“当前知识库未提供相关信息”。
回答需简洁、准确、分点说明。

不要为了“风格”堆砌大量形容词,应把 Prompt 聚焦在任务规则上。


2. 控制历史对话长度

多轮对话会带来大量上下文成本。

如果 Dify 应用开启了较长的上下文记忆,每次请求都会携带历史消息。用户聊得越久,成本越高。

建议:

  • 普通客服类应用:保留最近 3~5 轮对话;
  • 知识库问答:通常保留最近 2~3 轮即可;
  • 单轮工具类应用:可以关闭历史上下文;
  • 长对话应用:使用摘要记忆代替完整历史。

在应用设置中,应避免默认保留过多历史消息。


3. 限制输出长度

输出 Token 也会计费,而且很多应用不需要长篇大论。

建议在模型参数中设置:

max_tokens: 512

或者根据业务调整:

场景 建议最大输出 Token
FAQ 问答 300~500
客服回复 300~800
文档摘要 800~1500
报告生成 2000+
代码生成 1000~3000

对于大多数企业知识库问答,512 或 800 已经足够。


4. 降低知识库召回片段数量

知识库召回内容会被放进上下文里,因此召回越多,输入 Token 越多。

例如每次召回 10 个片段,每个片段 500 字,输入成本会非常高。

建议:

top_k: 3~5

对于普通知识库问答,先从 3 开始测试。如果准确率不足,再调整到 5。

不建议一开始就设置为 10 或更多。


5. 优化文档切分大小

文档切分也会影响成本。

切分太大:

  • 每个召回片段 Token 很多;
  • 模型输入成本升高;
  • 可能包含大量无关内容。

切分太小:

  • 语义不完整;
  • 需要召回更多片段;
  • 容易丢失上下文。

推荐初始配置:

chunk_size: 500~800 tokens
chunk_overlap: 50~100 tokens

中文文档可以按段落和标题结构切分,而不是粗暴按字符数切分。


四、知识库降本:不是召回越多越好

Dify 的知识库功能非常强大,但如果配置不合理,也会带来高成本和低质量。


1. 区分高频知识库和低频知识库

不要把所有文档都堆进一个知识库。

建议拆分为:

通用制度知识库
产品说明知识库
售后 FAQ 知识库
技术文档知识库
销售话术知识库

这样可以让不同应用只绑定必要知识库,减少无关召回。


2. 建立 FAQ 优先机制

对于大量高频问题,没必要每次都走完整 RAG。

例如:

  • 上班时间;
  • 报销流程;
  • Wi-Fi 密码;
  • 请假规则;
  • 售后联系方式;
  • 发票开具方式。

可以建立 FAQ 数据集或工作流判断:

  1. 先匹配 FAQ;
  2. 命中则直接返回;
  3. 未命中再走知识库检索;
  4. 检索失败再调用大模型生成兜底回答。

这样能显著减少大模型调用次数。


3. 谨慎开启 Rerank

Rerank 对提升准确率有帮助,但不是所有场景都必须开启。

建议:

  • 高价值问答:开启 Rerank;
  • 普通 FAQ:不开启;
  • 简单客服:不开启;
  • 技术文档问答:可以开启;
  • 法律、金融、医疗等严肃场景:建议开启。

如果开启 Rerank,也要控制候选数量,例如先召回 10 条,再重排取前 3 条,而不是把大量文本直接输入模型。


五、缓存:减少重复调用的关键

如果用户经常问重复问题,缓存是非常有效的降本手段。

例如:

“怎么申请报销?”
“报销流程是什么?”
“发票怎么报销?”

这些问题本质上可能是同一类问题。

可以通过以下方式降低调用:

  1. FAQ 缓存;
  2. Redis 缓存;
  3. 语义相似问题缓存;
  4. 工作流节点结果缓存;
  5. 对固定输出结果做静态化。

Redis 缓存思路

可以把用户问题标准化后作为 key:

cache_key = app_id + normalized_question

然后缓存模型输出结果。

对于知识库问答,可以设置较短 TTL,例如 1 小时或 1 天。

对于制度类固定问答,可以设置更长 TTL,例如 7 天或 30 天。


六、Dify 自部署降本配置文件

下面给出一套适合中小团队的 Dify 自部署参考配置。

说明:以下配置用于降本思路参考,具体版本和参数需要结合你的 Dify 版本调整。


1. .env 环境变量配置示例

# =========================
# Basic
# =========================
CONSOLE_API_URL=https://dify.example.com
CONSOLE_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com
APP_API_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com

# 建议生产环境关闭调试
DEBUG=false

# =========================
# Security
# =========================
SECRET_KEY=please-change-this-to-a-random-secret-key
INIT_EMAIL=admin@example.com
INIT_PASSWORD=Change_This_Strong_Password

# =========================
# Database
# =========================
DB_USERNAME=postgres
DB_PASSWORD=please-change-db-password
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify

# 限制数据库连接池,避免小服务器被连接打满
SQLALCHEMY_POOL_SIZE=10
SQLALCHEMY_MAX_OVERFLOW=5
SQLALCHEMY_POOL_RECYCLE=1800

# =========================
# Redis
# =========================
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=please-change-redis-password
REDIS_DB=0
REDIS_USE_SSL=false

# =========================
# Celery
# =========================
CELERY_BROKER_URL=redis://:please-change-redis-password@redis:6379/1

# 限制 Worker 并发,降低服务器资源占用
CELERY_WORKER_CONCURRENCY=2

# =========================
# Upload
# =========================
UPLOAD_FILE_SIZE_LIMIT=15
UPLOAD_FILE_BATCH_LIMIT=5

# 如果不是必须,限制大文件上传,防止知识库处理成本失控
ETL_TYPE=dify

# =========================
# Vector Store
# =========================
VECTOR_STORE=weaviate

# =========================
# Token / Logging
# =========================
LOG_LEVEL=INFO

# =========================
# Sandbox
# =========================
CODE_EXECUTION_ENDPOINT=http://sandbox:8194
CODE_EXECUTION_API_KEY=please-change-sandbox-key

# =========================
# Cost Control
# =========================
# 建议在应用层配置 max_tokens、temperature、top_k 等参数
# 这里保留成本控制说明,便于团队维护

2. docker-compose.override.yml 降本资源限制示例

如果使用 Docker Compose 部署,可以增加一个 docker-compose.override.yml,对服务资源进行限制,避免容器无限占用 CPU 和内存。

version: "3.8"

services:
  api:
    deploy:
      resources:
        limits:
          cpus: "1.00"
          memory: 1024M
        reservations:
          memory: 512M
    environment:
      LOG_LEVEL: INFO
      DEBUG: "false"

  worker:
    deploy:
      resources:
        limits:
          cpus: "1.00"
          memory: 1536M
        reservations:
          memory: 768M
    environment:
      CELERY_WORKER_CONCURRENCY: 2
      LOG_LEVEL: INFO

  web:
    deploy:
      resources:
        limits:
          cpus: "0.50"
          memory: 512M
        reservations:
          memory: 256M

  db:
    deploy:
      resources:
        limits:
          cpus: "1.00"
          memory: 1536M
        reservations:
          memory: 768M

  redis:
    deploy:
      resources:
        limits:
          cpus: "0.50"
          memory: 512M
        reservations:
          memory: 256M

  weaviate:
    deploy:
      resources:
        limits:
          cpus: "1.00"
          memory: 2048M
        reservations:
          memory: 1024M
    environment:
      LIMIT_RESOURCES: "true"
      QUERY_DEFAULTS_LIMIT: 10

需要注意,deploy.resources 在普通 docker compose up 下并非所有字段都会完全生效,如果你使用的是非 Swarm 模式,也可以通过 mem_limit 等方式控制。

示例:

services:
  api:
    mem_limit: 1024m
    cpus: 1.0

  worker:
    mem_limit: 1536m
    cpus: 1.0

  db:
    mem_limit: 1536m
    cpus: 1.0

3. Nginx 反向代理配置示例

Nginx 可以帮助限制请求大小、请求频率,避免恶意或误操作造成成本暴涨。

server {
    listen 80;
    server_name dify.example.com;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name dify.example.com;

    ssl_certificate /etc/nginx/ssl/dify.example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/dify.example.com.key;

    client_max_body_size 15m;

    # 简单限流:同一 IP 每秒最多 5 个请求
    limit_req_zone $binary_remote_addr zone=dify_limit:10m rate=5r/s;

    location / {
        limit_req zone=dify_limit burst=20 nodelay;

        proxy_pass http://127.0.0.1:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }
}

如果你对外开放 Dify 应用接口,建议一定要做限流,否则可能出现以下问题:

  • 用户频繁刷新;
  • 脚本误调用;
  • 外部恶意请求;
  • 工作流被重复触发;
  • 模型费用异常增长。

七、模型配置建议

下面给出几类常见场景的推荐配置。


1. 企业知识库问答

model:
  name: low-cost-chat-model
  temperature: 0.2
  max_tokens: 600

retrieval:
  top_k: 3
  score_threshold: 0.55
  rerank: false

memory:
  enabled: true
  window: 3

适用场景:

  • 公司制度;
  • 产品文档;
  • 售后问题;
  • 内部流程问答。

特点:

  • 温度低,减少胡编;
  • 输出短,降低 Token;
  • 召回少,减少上下文;
  • 历史轮次少,降低成本。

2. 技术文档问答

model:
  name: medium-capability-chat-model
  temperature: 0.1
  max_tokens: 1000

retrieval:
  top_k: 5
  score_threshold: 0.5
  rerank: true
  rerank_top_n: 3

memory:
  enabled: true
  window: 4

适用场景:

  • API 文档;
  • SDK 文档;
  • 运维手册;
  • 错误排查。

技术文档对准确性要求更高,可以适当开启 Rerank,但要控制最终输入片段数量。


3. 简单客服机器人

model:
  name: cheapest-chat-model
  temperature: 0.3
  max_tokens: 400

retrieval:
  top_k: 3
  score_threshold: 0.6
  rerank: false

memory:
  enabled: true
  window: 2

适用场景:

  • 售前咨询;
  • 物流查询说明;
  • 常见问题;
  • 引导人工客服。

客服机器人不应输出过长内容,回答越短越可控。


4. 工作流分类节点

model:
  name: cheapest-chat-model
  temperature: 0
  max_tokens: 100

prompt: |
  请判断用户问题属于以下哪一类:
  1. faq
  2. technical
  3. billing
  4. complaint
  5. other

  只返回类别英文,不要解释。

分类节点一定要便宜、短输出、低温度。

这种节点如果用高价模型,会造成很大浪费。


八、使用本地模型降低成本

如果团队请求量较大,可以考虑接入本地模型。

Dify 支持通过 OpenAI-API-Compatible 方式接入很多本地推理服务,例如:

  • Ollama;
  • Xinference;
  • vLLM;
  • LM Studio;
  • LocalAI;
  • FastChat。

本地模型的优点是:

  • 单次调用成本低;
  • 数据不出内网;
  • 适合高频简单任务;
  • 可以用于分类、摘要、改写、FAQ 等场景。

缺点是:

  • 需要 GPU 或较强 CPU;
  • 运维成本更高;
  • 模型效果可能不如商业大模型;
  • 并发能力需要调优。

Ollama 配置示例

假设本地部署 Ollama:

ollama run qwen2.5:7b

在 Dify 模型供应商中选择 OpenAI-API-Compatible,配置:

provider: openai-compatible
base_url: http://ollama:11434/v1
api_key: ollama
model: qwen2.5:7b

如果是 Docker 环境,需要确保 Dify API 容器可以访问 Ollama 服务。


vLLM 配置示例

vLLM 适合更高并发的本地推理。

启动示例:

python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-7B-Instruct \
  --host 0.0.0.0 \
  --port 8000 \
  --served-model-name qwen2.5-7b

Dify 中配置:

provider: openai-compatible
base_url: http://your-vllm-server:8000/v1
api_key: dummy-key
model: qwen2.5-7b

本地模型建议优先承担以下任务:

  • 意图分类;
  • 文本改写;
  • 关键词提取;
  • 轻量问答;
  • 文档摘要初稿;
  • 工作流中间节点。

复杂问题仍可路由到商业大模型。


九、Embedding 模型降本方案

Embedding 是知识库成本的重要组成部分。

建议优先选择性价比高的 Embedding 模型:

  • bge-small-zh;
  • bge-base-zh;
  • bge-m3;
  • text-embedding-3-small;
  • qwen text embedding;
  • nomic-embed-text;
  • m3e-base。

如果数据量大,可以考虑本地 Embedding。

例如使用 Ollama:

ollama pull bge-m3

Dify 配置:

embedding:
  provider: openai-compatible
  base_url: http://ollama:11434/v1
  api_key: ollama
  model: bge-m3

对于中文企业知识库,bge-m3bge-base-zh 等模型通常有不错表现。

如果你的知识库不是特别复杂,没必要一开始就使用最贵的 Embedding 服务。


十、工作流降本技巧

Dify 工作流非常灵活,但也容易因为节点过多导致成本增加。


1. 避免每个节点都调用大模型

有些逻辑不需要 LLM,例如:

  • 判断字段是否为空;
  • 拼接文本;
  • 正则提取;
  • 数值计算;
  • 简单条件分支;
  • 固定模板输出。

这些应该使用代码节点、条件节点或模板节点完成。

不要把所有问题都交给大模型。


2. 使用条件节点提前结束

例如用户问题命中 FAQ 后,直接返回,不再进入后续 LLM 节点。

用户输入
  ↓
FAQ 匹配
  ↓
命中 → 直接返回
未命中 → 知识库检索
  ↓
模型回答

提前结束流程,可以减少不必要的调用。


3. 对失败路径做限制

有些工作流在失败后会反复重试,导致调用次数增加。

建议:

  • 限制最大重试次数;
  • 工具调用失败后直接提示用户;
  • 不要无限循环调用 Agent;
  • 对外部 API 超时进行保护;
  • 对复杂任务设置人工确认。

十一、团队成本治理建议

如果是团队或企业使用 Dify,建议建立基础成本治理机制。


1. 不同环境使用不同模型

建议区分:

开发环境:便宜模型
测试环境:便宜模型
预生产环境:中等模型
生产环境:按场景分层

不要让测试人员在开发阶段频繁调用高价模型。


2. 设置应用级预算

每个 Dify 应用都应该有预算意识:

客服机器人:每月预算 500 元
内部知识库:每月预算 300 元
销售助手:每月预算 1000 元
技术支持助手:每月预算 800 元

当成本异常时,及时排查:

  • 是否有人批量测试;
  • 是否某个工作流循环调用;
  • 是否召回内容过多;
  • 是否输出长度失控;
  • 是否遭遇恶意请求。

3. 建立 Prompt 审核机制

Prompt 不是越长越好。

团队可以约定:

  • 系统 Prompt 不超过 500 字;
  • 分类 Prompt 不超过 150 字;
  • 输出格式尽量固定;
  • 不在 Prompt 中堆砌无关背景;
  • 不把整篇文档直接塞进 Prompt。

4. 定期分析调用日志

建议每周分析:

  • 哪些应用调用最多;
  • 哪些用户消耗最多;
  • 哪些问题最常见;
  • 哪些工作流节点成本最高;
  • 哪些知识库召回片段过长;
  • 哪些模型调用失败率高。

成本优化不是一次性动作,而是持续运营过程。


十二、推荐的低成本落地架构

对于中小团队,可以采用以下架构:

用户
 ↓
Nginx 限流
 ↓
Dify 应用
 ↓
FAQ / 缓存判断
 ↓
知识库检索
 ↓
低成本模型回答
 ↓
复杂问题路由到高能力模型

模型策略:

分类节点:本地模型或低价模型
FAQ 问答:低价模型
知识库问答:低价或中等模型
复杂推理:高能力模型
Embedding:本地或低价 Embedding
Rerank:仅高价值场景开启

部署策略:

小团队:2 核 4G 起步
中等团队:4 核 8G 或 8 核 16G
高并发团队:API、Worker、DB、向量库分离部署

如果知识库数据量不大,完全没必要一开始就上高规格服务器。


十三、Dify 降本检查清单

最后给出一份实用检查清单。

模型方面

  • [ ] 是否所有节点都使用了高价模型?
  • [ ] 是否区分了简单任务和复杂任务?
  • [ ] 是否使用低价模型做分类、摘要、改写?
  • [ ] 是否设置了合理的 max_tokens
  • [ ] 是否降低了不必要的 temperature?

Prompt 方面

  • [ ] 系统提示词是否过长?
  • [ ] 是否包含大量无关说明?
  • [ ] 是否可以用规则替代长描述?
  • [ ] 是否限制了输出格式?
  • [ ] 是否减少了重复上下文?

知识库方面

  • [ ] top_k 是否过大?
  • [ ] chunk_size 是否过大?
  • [ ] 是否开启了不必要的 Rerank?
  • [ ] 是否拆分了不同知识库?
  • [ ] 是否有 FAQ 优先机制?

工作流方面

  • [ ] 是否存在重复调用模型的节点?
  • [ ] 是否可以用代码节点替代 LLM?
  • [ ] 是否有提前结束条件?
  • [ ] 是否限制了失败重试?
  • [ ] 是否避免了 Agent 无限循环?

部署方面

  • [ ] 是否限制了上传文件大小?
  • [ ] 是否配置了 Nginx 限流?
  • [ ] 是否关闭了 Debug?
  • [ ] 是否限制了 Worker 并发?
  • [ ] 是否定期清理无用数据?

总结

Dify 降低成本的关键,不是单纯寻找一个“最便宜的模型”,而是建立一套完整的成本控制体系。

核心思路可以总结为五句话:

  1. 简单任务用便宜模型,复杂任务才用高能力模型。
  2. 减少 Prompt、历史对话和知识库召回带来的 Token 消耗。
  3. FAQ、缓存和条件分支可以大幅减少重复调用。
  4. Rerank、本地模型、Embedding 要按场景选择,不要默认全开。
  5. 自部署时通过资源限制、限流、日志分析和预算机制控制长期成本。

如果你刚开始使用 Dify,建议先从以下配置入手:

model:
  temperature: 0.2
  max_tokens: 600

retrieval:
  top_k: 3
  rerank: false

memory:
  window: 3

deployment:
  debug: false
  worker_concurrency: 2
  upload_file_size_limit: 15MB

这套配置虽然简单,但已经能避免大部分常见成本浪费。

当业务增长后,再逐步引入模型路由、本地模型、语义缓存、Rerank 优化和分布式部署。这样既能保证应用效果,也能让 Dify 的使用成本始终处于可控范围内。

目录结构
全文