Dify长文本分割教程:用户输入内容拆分全攻略

2026-06-18阅读 0热度 0
ai 人工智能

如果你是 Dify 的重度用户,或者频繁搭建自动化工作流,肯定遇到过这个棘手场景:用户提交一段超长文本,工作流要么直接崩溃,要么处理结果粗糙。这类问题其实很普遍——比如我在做长文本翻译工作流时发现,大模型面对一次性输入的过长内容,往往会截断响应,翻译质量也因此大幅缩水。

手把手教你在dify中如何将用户输入的长文本分割成多个内容

如何解决?一个直觉方案:既然一次消化不了,就切分成小段分批处理。具体说,在“开始节点”后面接一个“代码执行”节点,用极简脚本将长文本拆成多个短片段,再通过迭代节点逐个加工,最后合并结果。这样大模型拥有充分的“咀嚼空间”,处理精度自然提升。

实现起来并不复杂。代码执行节点只需编写最基础的切分逻辑,无需引入复杂算法。下面是一段可用的 Python 示例:


def main(input_text: str) -> str:
    token_limit = 1000
    overlap = 100
    chunk_size = int(token_limit * 6 * (4/3))

    # 初始化变量
    chunks = []
    start_index = 0
    text_length = len(input_text)

    # 循环直到文本末尾
    while start_index < text_length:
        # 若非起始位置,回退实现重叠
        if start_index > 0:
            start_index -= overlap

        # 计算当前块的结束索引
        end_index = start_index + chunk_size
        if end_index > text_length:
            end_index = text_length

        # 将当前块加入列表
        chunks.append(input_text[start_index:end_index])

        # 更新下一次起始索引
        start_index += chunk_size

    return {
        "chunks": chunks,
    }

一个关键细节:chunks 输出变量的类型必须选择 array[string],切勿选错。

代码节点的核心逻辑十分直观:将 input_text 按固定长度切块,每块间设置重叠区域(overlap)以保证上下文连贯,避免断句导致语义断裂。最终输出一个分段文本数组 chunks,后续直接接入迭代节点即可逐块处理。

切分完成后,迭代节点负责按实际需求处理每个文本块——翻译、摘要、格式化,均可胜任。迭代结束后,需要将结果拼装并展示。有两种方式:一是直接用“模板转换”节点拼接,简单高效;二是用代码执行节点手写拼接逻辑,灵活度更高,具体取决于你的编程习惯与能力。

整个流程仅三步:切分 → 迭代处理 → 拼接。核心在于代码节点内的切分逻辑,只要把 chunk_size 和 overlap 调优,绝大多数场景都能完美覆盖。若你正面临长文本处理瓶颈,不妨试试这个方案,低成本、高回报。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策