微信扫码
添加专属顾问
我要投稿
如果你是dify开发者,或者是工作流的狂热爱好者,你难免会遇到这么一个问题:当用户输入一个超长文本内容时,你的工作流没办法一下子处理这么长的内容,或者没办法将这么长的内容按照预期处理的非常精致。
其实这个问题之前也总是困扰我,尤其是我最近在用dify玩超长文本翻译的 工作流时,受大模型的限制,没办法一下子将超长文本一次性处理到位,于是我就想到一个替代方案,就是先将长文本切割成多个短文本,然后使用迭代节点,分批次处理,最后完成结果的拼接。这样我的大模型就有较大的把握处理好这个场景问题。
其实操作起来也很简单,就是在“开始节点”后面接入一个“代码执行”节点,并且这个代码执行节点只写最基础的脚本,不需要处理复杂的逻辑。如下是Python代码参考示例:
def main(input_text: str) -> str:
token_limit = 1000
overlap = 100
chunk_size = int(token_limit * 6 * (4/3))
# Initialize variables
chunks = []
start_index = 0
text_length = len(input_text)
# Loop until the end of the text is reached
while start_index < text_length:
# If we are not at the beginning, adjust the start_index to ensure overlap
if start_index > 0:
start_index -= overlap
# Calculate end index for the current chunk
end_index = start_index + chunk_size
if end_index > text_length:
end_index = text_length
# Add the current chunk to the list
end_index]) :
# Update the start_index for the next chunk
start_index += chunk_size
return {
chunks, :
}
请注意chunks输出变量的类型要选array[string]。
代码节点将 input_text 分成长度为 token_limit 的块。每个块相互重叠,以确保文本的一致性。
代码节点输出一个由 input_texts 分段文本组成的数组 chunks。
当我们切分长文本之后,后面就要跟上一个迭代节点,按照你的实际需要分批次加工了。
迭代逻辑处理完成后,你最终是需要将内容拼接好,并展示出来的,所以你可能会用到“模板转换”节点。当然,你使用代码执行节点,手搓代码进行拼接也是可以的,这个随你的编程能力而定。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-06-13
如何利用Dify实现问答系统的高效内容审查?含源码解析与实战优化指南
2025-06-13
dify 1.4.2 版本深度解析:性能飞跃、功能革新与稳定性全面升级,打造企业级AI开发新标杆
2025-06-11
就在刚刚,Dify发布了V1.4.2版本,包含了安全更新,让我们一起来看看吧!
2025-06-10
深入调研Dify,本地搭建实战案例
2025-06-09
Dify 深度拆解(二):后端架构设计与启动流程全景图
2025-06-05
Dify升级不成功?你只要做对这一步,升级真的太简单了!
2025-06-04
手把手教你在本地部署MinerU 1.3.10 API并接入Dify插件
2025-06-03
Dify实现AI智能体工作流实战手册
2025-03-17
2025-03-17
2025-03-25
2025-04-05
2025-04-02
2025-03-20
2025-04-04
2025-03-31
2025-03-29
2025-04-01
2025-05-29
2025-05-28
2025-05-22
2025-04-27
2025-04-15
2025-03-20
2024-12-19
2024-09-13