如需将 Dify 应用迁移至 LangStudio,可通过本文提供的自动化脚本处理基础结构迁移,然后在此基础上进行手动配置和调试。
工作原理
迁移过程包含自动化转换与手动配置两个核心阶段。
自动化转换:自动化脚本会读取Dify DSL 文件,将其转换为 LangStudio 的应用流(Flow)格式,完成节点布局与基础连接的初步迁移。
手动配置:由于两个平台的环境依赖(如 LLM 连接、知识库、MCP工具)和部分节点实现存在差异,您需要参照原 Dify 应用,在 LangStudio 中手动重新创建这些依赖,并对部分节点进行微调和测试,以确保应用功能完整、运行正确。
步骤一: 自动化转换
在 LangStudio 中导入脚本转换后的文件,您会得到一个初步的LangStudio应用流结构。
从Dify导出应用的 DSL 文件(通常为
.yml
格式)。本文以QuestionClassifier+Knowledge+Chatbot模板搭建的Dify应用流为例,您可直接下载其DSL文件进行体验:QuestionClassifier+Knowledge+Chatbot.yml。下载迁移脚本dify_to_langstudio.py,并运行以下命令,将DSL文件转换为 LangStudio应用流。
python dify_to_langstudio.py /path/to/dify_dsl.yml /path/to/output_dir
其中:
/path/to/dify_dsl.yml
:DSL文件路径。/path/to/output_dir
:指定的输出目录。执行成功后,可在其中找到langstudio_flow.zip
文件。
登录LangStudio,进入新建应用流页面,选择从OSS导入,选择应用流路径,上传刚刚生成的
langstudio_flow.zip
文件并选中,填写名称后即可完成创建。
生成的初版应用流如下。
步骤二:手动配置
自动化转换后,需逐个检查并配置应用流中的节点。
开始
对应LangStudio节点:开始节点。
对于Dify中的系统变量,迁移方式如下:
sys.files:目前 LangStudio 仅支持单文件类型,如需要使用文件列表(Array[File]),需要通过创建多个单文件类型变量来实现。
sys.query:直接转换为输入字段question。
sys.dialogue_count/sys.conversation_id
sys.user_id/sys.app_id/sys.workflow_id/sys.workflow_run_id :需通过LangStudio应用流全局配置中的会话变量来实现。
问题分类
对应LangStudio节点:意图识别。
模型:对应模型设置。需要在LangStudio中创建和 Dify 中相同的LLM连接(参见连接配置),然后才可以在 LLM 节点上选择
分类:对应多意图配置。确认分类与原Dify应用中一致。
指令:对应意图识别节点的额外提示。
知识检索
对应LangStudio节点:知识库检索。
需使用 LangStudio 提供的工具重新创建一个知识库,然后在节点进行配置。详情请参见知识库管理。
查询变量:等价于知识库检索节点的检索关键词。
LLM
对应LangStudio节点:大模型。
模型:需在LangStudio中创建和 Dify 中相同的LLM连接(参见连接配置),然后才可以在节点上选择。
提示词:LangStudio的大模型节点提示词中如需使用之前节点的输出变量,需先定义为输入变量。
失败时重试:Dify 支持失败重试策略,LangStudio不支持。
视觉:等价于大模型节点的视觉开关。
记忆:等价于大模型节点的记忆窗口开关(需先启用会话历史)。
结构化输出:等价于大模型节点的输出变量定义。
输出变量:Dify的LLM节点返回的数据包含生成内容与模型用量信息,但LangStudio仅返回模型回答正文。
直接回复
对应LangStudio节点:直接输出。
结束
对应LangStudio节点:结束节点。
Dify的Chatflow不支持结束节点,但LangStudio应用流必须有一个结束节点,请将逻辑结束节点连接到结束节点,以显示声明执行结束。
代码执行
对应LangStudio节点:Python。
把 Dify 的 Python代码复制到 LangStudio,并增加@tool 的装饰以及输出类定义。
Dify根据设置的输入变量会解析成Python代码的入参,LangStudio正相反,您需要先在代码中定义好输入输出,在运行时启动的情况下,会自动解析代码生成输入输出参数。
LangStudio 不支持 NodeJS。
Agent
对应LangStudio节点:Agent。
Agent策略:Dify支持多种策略,LangStudio 仅支持functioncall/react两个策略。
模型:需要在LangStudio中创建和 Dify 中相同的LLM连接(参见连接配置),然后才可以在 LLM 节点上选择。
工具列表:Dify 支持选择内置的多种 Tool 与 MCP,而LangStudio仅支持MCP,且需要先在 LangStudio创建 MCP 连接。
指令/查询:等价于LangStudio Agent节点的提示词。
记忆:等价于Agent节点的memory开关。
迭代
对应LangStudio节点:循环。
需要额外在循环节点配置一个 index 变量,实现对一个 List 对象的遍历过程,模拟迭代节点的逻辑。
文档提取器
对应LangStudio节点:文档解析。
选择文档解析节点的文档。
模型:需要在LangStudio中创建OpenSearch 连接,用于解析文档。
条件分支
对应LangStudio节点:条件分支。
需根据Dify中条件,在LangStudio中配置。
更多节点说明
循环/退出循环/变量赋值/变量聚合/直接回复:直接转换。
模板转换/参数提取/HTTP 请求/列表操作:待支持。
其他第三方tool:不支持。(在LangStudio中使用MCP请参见基于LangStudio&Hologres构建ChatBI数据分析Agent应用)
更多功能说明
语音与文字转换
语音转文字:LangStudio可通过增加语音识别节点实现。
文字转语音:可在全局配置中设置。
文件上传开关
Dify在开始节点中有默认变量sys.files接受上传文件列表,LangStudio需要预定义 File 类型的字段。如上传多个文档,需定义多个 File 类型的字段。
步骤三:联调测试
完成所有节点的配置后,进行全面的联调测试,以确保应用能够稳定运行。
全流程联调:连接所有节点,通过观察日志排查变量未定义、数据未按预期传递等问题。
覆盖测试:模拟真实用户会话、异常及重试场景,确保应用鲁棒性。
单击右上角运行按钮进行调试,如果配置有误,会有对应的错误提醒,请根据提示进行修正。
生产应用建议
优先迁移简单应用:如果您首次迁移,建议选择一个结构简单的应用练手,以熟悉完整流程。
充分联调测试:自动转换只是第一步。Dify 和 LangStudio 在某些功能(如文件上传、错误重试机制)的实现上存在差异。在投产前,务必进行完整的端到端测试,特别注意检查变量传递、节点逻辑和数据格式是否符合预期。
常见问题
问:为什么迁移脚本不能 100% 自动完成所有工作?
答:因为 Dify 和 LangStudio 在环境依赖(如 API 密钥、数据库连接)和部分核心功能(如知识库实现、Python 代码规范)上存在差异。脚本负责转换与平台无关的应用结构,而环境相关的配置则需要您手动在新的目标环境中重建,以确保安全和正确性。
问:如果 Dify 中的某个节点在 LangStudio 不支持怎么办?
答:请查阅附录中的功能对照表。对于不支持的节点(如 HTTP Request),您通常可以使用 LangStudio 的“Python 节点”编写少量代码来模拟其功能,或者寻找其他节点组合来实现相同的业务逻辑。
问:从 Dify 复制的 Python 代码在 LangStudio 中运行报错,该如何解决?
答:LangStudio 的 Python 节点有特定的代码规范,例如,函数需要使用
@tool
装饰器,并且需要明确定义输出的数据结构。请参考代码执行的迁移说明进行适配。