必须手动注入DeepL API密钥与请求逻辑以构建双向翻译工作流:先在DeepL Pro控制台生成密钥并配置白名单,再通过环境变量注入Dify;工作流含代码执行、条件判断、双LLM节点及模板转换节点,支持多轮上下文修正与自动语种检测。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中构建一个能实时响应用户上传文档并按需切换源/目标语言、支持多轮上下文修正的双向机器翻译工作流,必须绕过Dify原生节点对DeepL API的限制,手动注入认证与请求逻辑。
配置DeepL API密钥与权限
登录DeepL Pro控制台,进入「API Keys」页面,点击「Create new key」生成专属密钥。该密钥默认绑定到你的账户域名白名单,【若调用来源为Dify本地部署或非HTTPS公网地址,必须手动添加对应Origin到白名单,否则返回403】。
复制生成的密钥(格式如 xxxx.xxxx.xxxx:fx),暂存至安全位置。不要在Dify节点提示词中硬编码该密钥,后续将通过环境变量注入。
创建双向翻译工作流结构
在Dify控制台新建Workflow应用,命名为「DeepL双向翻译流」。删除默认LLM节点,仅保留Start节点作为唯一入口。
从Start节点右侧依次拖入:代码执行节点 → 条件判断节点 → 两个并行的LLM节点(分别标为「正向译」和「反向译」)→ 模板转换节点 → 结束节点。
条件判断节点用于识别用户意图:当输入含“译成英文”“to English”等关键词时走正向路径;含“译成中文”“to Chinese”则走反向路径。其余情况默认启用正向翻译。
编写DeepL调用代码(Python)
双击「代码执行」节点,在编辑框中粘贴以下代码:
```python
import requests
import json
DEEPL_AUTH_KEY = os.getenv("DEEPL_API_KEY")
if not DEEPL_AUTH_KEY:
raise ValueError("DEEPL_API_KEY not set in environment")
source_lang = inputs.get("source_language", "auto")
target_lang = inputs.get("target_language", "EN-US")
text = inputs.get("text", "")
url = "https://api-free.deepl.com/v2/translate"
if "pro" in DEEPL_AUTH_KEY:
url = "https://api.deepl.com/v2/translate"
payload = {
"auth_key": DEEPL_AUTH_KEY,
"text": text,
"source_lang": source_lang,
"target_lang": target_lang,
"split_sentences": "1",
"preserve_formatting": True
}
response = requests.post(url, data=payload, timeout=30)
response.raise_for_status()
result = response.json()
outputs["translated_text"] = result["translations"][0]["text"]
outputs["detected_source_lang"] = result["translations"][0].get("detected_source_language", source_lang)
```
这段代码自动适配免费版与Pro版API端点,启用句子切分与格式保留,并将检测到的源语言回传——这对后续多轮修正至关重要,因为第二轮优化必须知道原始语种才能正确反向校验。
设置开始节点变量
在Start节点中新增三个输入字段:
① attachments:类型设为「文件」,用于接收PDF/TXT/DOCX等任意格式文档;
② target_language:类型设为「文本」,默认值填 ZH 或 EN-US,用户可在调用时覆盖;
③ source_language:类型设为「文本」,留空即可,由代码节点自动探测并填充。
注意:Dify文档提取器节点输出的纯文本会直接流入代码执行节点的 inputs["text"],无需额外配置连接线——只要确保文档提取器节点已接在Start节点后、代码执行节点前。
配置环境变量注入DeepL密钥
进入Dify部署服务器终端,编辑Dify服务的环境变量文件(如 .env 或 docker-compose.yml 的 environment 区块),添加一行:DEEPL_API_KEY=your_actual_key_here
重启Dify服务使变量生效:docker compose restart dify 或 systemctl restart dify-server。
这一步不可跳过。若仅在节点内写死密钥,每次更新工作流都会暴露凭证,且违反DeepL的密钥使用条款。
测试双向修正流程
第一步:上传一份英文技术白皮书PDF,填写target_language为 ZH,触发反向翻译路径;
第二步:收到中文初稿后,在同一会话中输入“把第三段改成更正式的公文口吻”,此时会话变量 text 自动携带上一轮的中文输出,而 detected_source_language 值为 ZH,代码节点将自动设置 source_lang=ZH、target_lang=ZH(保持原语种),并在提示词中注入风格指令后再次调用DeepL;
第三步:DeepL返回润色后的中文段落,模板节点将其拼入原文档结构,直接回复用户。


















