news 2026/4/15 17:16:18

Dify 如何用代码节点精简 Promp

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Dify 如何用代码节点精简 Promp

在 Dify 工作流中,使用“代码节点”是精简 Prompt 最直接、有效的手段。其核心思路是:将原本需要大模型在 Prompt 中处理的“数据清洗”和“逻辑判断”工作,转移到代码节点中预先完成,只将最终结果传递给大模型。


💡 核心思路:从“描述”转向“结果”

与其在 Prompt 中详细描述复杂的规则,不如在代码节点中计算出最终结果,再让大模型基于结果进行决策。

传统方式 (高 Token 消耗):

Prompt:​ "请根据以下规则判断用户意图:1. 包含‘退款’、‘退货’为售后;2. 包含‘多少钱’、‘价格’为价格咨询…… 用户问题是:{{query}}"

优化方式 (低 Token 消耗):

代码节点:​ 预先运行规则判断,输出intent = "售后"

Prompt:​ "用户意图是 {{intent}},请据此回答:{{query}}"

通过这种方式,可以将成百上千的 Token 消耗降至个位数。


🛠️ 实战案例

1. 意图分类:用代码替代冗长规则

将复杂的 if-else 逻辑在代码节点中实现,Prompt 只负责传递结果。

代码节点 (Python):

def main(query: str) -> dict: q = query.lower() if "多少钱" in q or "价格" in q or "费用" in q: intent = "价格咨询" elif "退款" in q or "退货" in q or "换货" in q: intent = "售后" elif "你好" in q or "在吗" in q: intent = "问候" else: intent = "其他" return {"intent": intent}

LLM 节点 Prompt:

你是一个客服助手。用户意图是 {{intent}},请据此回答:{{query}}

2. 数据压缩:聚合信息后再输入

当处理日志、表格等长文本时,先在代码节点进行聚合和摘要,避免将原始数据全部塞入 Prompt。

代码节点 (Python):

def main(logs: list) -> dict: # logs 为 HTTP 请求返回的日志列表 summary = {} for log in logs: level = log.get("level", "unknown") summary[level] = summary.get(level, 0) + 1 # 构造简洁的文本描述 text = "日志统计结果:" + ",".join([f"{k}级日志 {v} 条" for k, v in summary.items()]) return {"summary": text}

LLM 节点 Prompt:

请根据以下摘要生成一份运维报告:{{summary}}

3. 文本清洗:移除无关内容

在文本进入大模型前,使用代码节点清洗掉 HTML 标签、多余空格等噪声。

代码节点 (Python):

import re def main(html_text: str) -> dict: # 移除 HTML 标签 text = re.sub(r'<[^>]+>', '', html_text) # 压缩多余空白符 text = re.sub(r'\s+', ' ', text).strip() return {"clean_text": text}

LLM 节点 Prompt:

请对以下内容进行摘要:{{clean_text}}

4. 历史摘要:压缩对话上下文

对于多轮对话,将冗长的历史记录压缩成一条摘要,而非全部传入。

代码节点 (Python):

def main(history: list) -> dict: # history 为对话历史列表,每项包含 role 和 content user_queries = [item["content"] for item in history if item["role"] == "user"] summary = "用户主要关心:" + ";".join(user_queries[-3:]) # 仅保留最近3条 return {"history_summary": summary}

LLM 节点 Prompt:

对话历史摘要:{{history_summary}}\n\n请回答当前问题:{{query}}

5. 条件路由:用代码替代复杂 Prompt 判断

将“是否调用知识库”、“是否触发特定工具”等逻辑用代码实现,简化 LLM 节点的 Prompt。

代码节点 (Python):

def main(query: str) -> dict: q = query.lower() use_kb = any(kw in q for kw in ["政策", "规定", "流程", "制度"]) return {"use_kb": use_kb}

后续流程:​ 根据use_kb的值,使用“条件分支”节点决定是走“知识检索+LLM”路径,还是直接走“LLM”路径。


✨ 最佳实践总结

  1. 数据预处理:在代码节点完成清洗、格式转换、聚合统计等工作。

  2. 规则前置:将明确的 if-else 规则在代码中实现,输出结果供 LLM 使用。

  3. 信息压缩:将长文本、列表、历史记录等压缩为短文本或结构化摘要。

  4. 逻辑分流:用代码节点进行条件判断,简化 LLM 节点的 Prompt 和后续流程分支。

通过以上方法,你可以显著减少 Prompt 的长度,从而有效控制 Token 消耗,提升响应速度并降低成本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 17:16:16

告别硅基焦虑:用MoS2和WSe2这些二维半导体,真能做出下一代芯片吗?

告别硅基焦虑&#xff1a;二维半导体如何重塑芯片制造的底层逻辑 硅基芯片的物理极限已经清晰可见——当制程工艺逼近1纳米节点&#xff0c;量子隧穿效应和热耗散问题如同两座无法逾越的高山。在台积电和三星的实验室里&#xff0c;工程师们开始频繁讨论一个曾经被视为科幻的概…

作者头像 李华
网站建设 2026/4/15 17:14:45

为什么92%的AI视频项目在POC后失败?2026奇点大会技术委员会深度复盘:从数据飞轮断裂到版权溯源断链的5个致命盲区

第一章&#xff1a;92% AI视频项目POC失败的全局图谱与根本归因 2026奇点智能技术大会(https://ml-summit.org) AI视频项目在概念验证&#xff08;POC&#xff09;阶段遭遇系统性溃败——行业调研显示&#xff0c;高达92%的POC未能进入规模化部署。这一现象并非源于算法能力不…

作者头像 李华
网站建设 2026/4/15 17:08:47

云原生架构设计模式

系列导读&#xff1a;本篇将深入讲解云原生架构的核心设计模式与最佳实践。 文章目录一、云原生概述1.1 云原生定义1.2 云原生架构特征二、核心设计模式2.1 Sidecar 模式2.2 Ambassador 模式2.3 Adapter 模式三、弹性设计模式3.1 重试模式3.2 断路器模式3.3 舱壁模式3.4 限流模…

作者头像 李华
网站建设 2026/4/15 17:04:05

初学者电钢琴怎么买?9款好用又高性价比横评,我的选购笔记全公开!

当你想为生活添置一份能长久陪伴的爱好&#xff0c;或为孩子选择一位严肃的“音乐启蒙老师”时&#xff0c;一台电钢琴无疑是明智的起点。它安静、省心、功能多样&#xff0c;但面对铺天盖地的型号、参数和营销话术&#xff0c;从何选起成了最大的困扰。 作为一名在乐器行业沉浸…

作者头像 李华
网站建设 2026/4/15 17:03:09

小说下载器终极指南:三步实现全网小说免费离线阅读

小说下载器终极指南&#xff1a;三步实现全网小说免费离线阅读 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否曾经遇到过这样的情况&#xff1a;追更的小说突然下架&#xff…

作者头像 李华
网站建设 2026/4/15 17:03:09

为什么92%的AI团队在多模态融合上失败?SITS2026首席架构师亲述:4个被忽略的数据-模型-部署断层及72小时修复方案

第一章&#xff1a;SITS2026专家&#xff1a;多模态模型融合 2026奇点智能技术大会(https://ml-summit.org) 融合动机与核心挑战 在SITS2026专家系统中&#xff0c;单一模态模型&#xff08;如纯文本LLM或独立视觉编码器&#xff09;已难以满足跨域协同推理需求。真实世界任务…

作者头像 李华