Dify 工作流生成器 (dify creator) 通过多轮对话引导用户明确需求, 参考 目录中的现有案例 ,生成符合对应 Dify 版本规范的 DSL YAML 文件,可直接导入 Dify 使用。 ⚠️ 重要:搜索文件前必须先切换到技能目录! 然后再搜索 和 核心能力 - 智能对话引导 :通过提问帮助用户梳理需求,避免遗漏关键信息 - 案例参考定位 :基于 INDEX.md 索引,自动匹配相似 Dify 案例 - 工作流结构设计 :分析需求后给出流程结构,与用户确认 - 完整 DSL 生成 :参考 DSL 节点指南,生成符合规范的完整 YAML 配置 使用场景 - 创建智能客服对话流程 - 构建 RAG 知识库问答系统 - 设计音视频处理工作流 - 开发代码生成和文档处理工具 - 搭建多模型协作的复杂流程 --- 工作流程总览 核心步骤 | 步骤 | 名称 | 输出 | |------|------|------| | Step 1 | 收集需求 | 需求文档 | | Step 2 | 案例定位 | 参考案例列表 | | Step 3 | 流程设计 | 流程结构图 | | Step 4 | 用户确认 | 确认反馈 | | Step 5 | DSL生成 | 完整YAML文件 | --- Step 1:收集用户需求 首先向用户询问基础信息,明确工作流的目标和功能。 1.1 基础信…

, '', json_html, flags=re.DOTALL).strip()\\n \\n \\\n \\ # 生成时间戳,确保文件名唯一\\n timestamp = int(time.time())\\n filename\\\n \\ = f\\\"{strtype}_{timestamp}.html\\\"\\n \\n # API端点(假设本地运行)\\n\\\n \\ url = f\\\"{apiurl}\\\"\\n \\n # 请求数据\\n payload\\\n \\ = {\\n \\\"html_content\\\": html_content,\\n \\\"filename\\\"\\\n : filename # 使用传入的文件名\\n }\\n \\n # 设置请求头(包含认证token)\\n\\\n \\ headers = {\\n \\\"Authorization\\\": f\\\"Bearer {apikey}\\\"\\\n , # 替换为实际的认证token\\n \\\"Content-Type\\\": \\\"application/json\\\"\\n\\\n \\ }\\n \\n try:\\n # 发送POST请求\\n \\\n \\ response = requests.post(url, json=payload, headers=headers)\\n \\\n \\ \\n # 检查响应状态\\n if response.status_code == 200:\\n\\\n \\ result = response.json()\\n html_url = result.get(\\\"\\\n html_url\\\", \\\"\\\")\\n generated_filename = result.get(\\\"filename\\\"\\\n , \\\"\\\")\\n \\n # 返回结果\\n return\\\n \\ {\\n \\\"html_url\\\": html_url,\\n \\\"\\\n filename\\\": generated_filename,\\n \\\"markdown_result\\\"\\\n : f\\\"[点击查看]({html_url})\\\"\\n }\\n else:\\n \\\n \\ raise Exception(f\\\"HTTP Error: {response.status_code}, Message:\\\n \\ {response.text}\\\")\\n \\n except requests.exceptions.RequestException\\\n \\ as e:\\n raise Exception(f\\\"Request failed: {str(e)}\\\")\\n \\\n \\ \\n except Exception as e:\\n return {\\n \\\"error\\\"\\\n : f\\\"Error: {str(e)}\\\"\\n }\"\n code_language: python3\n desc: ''\n outputs:\n filename:\n children: null\n type: string\n html_url:\n children: null\n type: string\n markdown_result:\n children: null\n type: string\n selected: false\n title: 代码处理生成html调用\n type: code\n variables:\n - value_selector:\n - llm\n - text\n variable: json_html\n - value_selector:\n - env\n - apikey\n variable: apikey\n - value_selector:\n - env\n - apiurl\n variable: apiurl\n - value_selector:\n - '1741751677458'\n - tpye\n variable: strtype\n height: 53\n id: '1741838758251'\n position:\n x: 853\n y: 293\n positionAbsolute:\n x: 853\n y: 293\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n author: 周辉\n desc: ''\n height: 146\n selected: false\n showAuthor: true\n text: '{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"本工作流主要利用大语言模型代码生成能力通过用户输入的表格自动生成对应的HTML代码并在最后渲染出统计图等功能。\",\"type\":\"text\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}'\n theme: blue\n title: ''\n type: ''\n width: 373\n height: 146\n id: '1741851615864'\n position:\n x: -59\n y: 402.51139084999863\n positionAbsolute:\n x: -59\n y: 402.51139084999863\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom-note\n width: 373\n viewport:\n x: 39.1609980089072\n y: -39.14721012184879\n zoom: 1.1533915300902233\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":14464,"content_sha256":"a7b2f9e78498136c75b253df41a84abdaa52ba5048a0d8510a6662c8958025eb"},{"filename":"organized_dsl/04_数据分析与可视化/数据报表/基于上市公司财报分析结果html分析报告(整合MinerU+edgeone-pages-mcp).yml","content":"app:\n description: 本工作流主要是基于上市公司财报分析结果html分析报告(整合MinerU+edgeone-pages-mcp)通过使用MinerU实现PDF财报解析,结合google\n gemini2.5pro 模型生成代码能力最后通过edgeone-pages-mcp生成精美的html图表\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 基于上市公司财报分析结果html分析报告(整合MinerU+edgeone-pages-mcp)\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/openai_api_compatible:0.0.14@4e4b6c2e3080245d91e509ed44e62fb6e7886ffca9eede1d093ad47ad420d704\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/modelscope:0.0.4@5a3245e52b864fa8a20686baf5add2f5517eae5f11f94419bf46edbe170731e8\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/mineru:0.2.0@5ec4527d658becf0b3c0946c2a6f4328fa43fd270e2d1f1713af4a6748ac4b61\nkind: app\nversion: 0.1.5\nworkflow:\n conversation_variables: []\n environment_variables:\n - description: ''\n id: 86203c03-abd2-400b-9925-37a8253cbcb2\n name: strtype\n selector:\n - env\n - strtype\n value: 上市公司\n value_type: string\n - description: ''\n id: e3084611-2965-4372-8aca-89fe25fb7dd7\n name: apikey\n selector:\n - env\n - apikey\n value: sk-zhouhui1122444\n value_type: string\n - description: ''\n id: 6fa7c139-8fb0-4411-a7fa-41602fa2434d\n name: apiurl\n selector:\n - env\n - apiurl\n value: http://14.103.204.132:8080/generate-html/\n value_type: string\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 500\n batch_count_limit: 5\n file_size_limit: 15\n image_file_size_limit: 100\n video_file_size_limit: 500\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: start\n targetType: tool\n id: 1747105418724-source-1747105471978-target\n source: '1747105418724'\n sourceHandle: source\n target: '1747105471978'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: tool\n targetType: llm\n id: 1747105471978-source-1747105630044-target\n source: '1747105471978'\n sourceHandle: source\n target: '1747105630044'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: llm\n targetType: parameter-extractor\n id: 1747105630044-source-1747108879039-target\n source: '1747105630044'\n sourceHandle: source\n target: '1747108879039'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: parameter-extractor\n targetType: code\n id: 1747108879039-source-1747128616679-target\n source: '1747108879039'\n sourceHandle: source\n target: '1747128616679'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: answer\n id: 1747128616679-source-1747106481971-target\n source: '1747128616679'\n sourceHandle: source\n target: '1747106481971'\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - document\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: 上市公司财报\n max_length: 48\n options: []\n required: true\n type: file\n variable: file\n height: 89\n id: '1747105418724'\n position:\n x: 80\n y: 282\n positionAbsolute:\n x: 80\n y: 282\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 243\n - data:\n desc: ''\n is_team_authorization: true\n output_schema:\n properties:\n full_zip_url:\n description: The zip URL of the complete parsed result\n type: string\n images:\n description: The images extracted from the file\n items:\n type: object\n type: array\n type: object\n paramSchemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: the file to be parsed(support pdf, ppt, pptx, doc, docx, png, jpg,\n jpeg)\n ja_JP: 解析するファイル(pdf、ppt、pptx、doc、docx、png、jpg、jpegをサポート)\n pt_BR: the file to be parsed(support pdf, ppt, pptx, doc, docx, png, jpg,\n jpeg)\n zh_Hans: 用于解析的文件(支持 pdf, ppt, pptx, doc, docx, png, jpg, jpeg)\n label:\n en_US: file\n ja_JP: file\n pt_BR: file\n zh_Hans: file\n llm_description: the file to be parsed (support pdf, ppt, pptx, doc, docx,\n png, jpg, jpeg)\n max: null\n min: null\n name: file\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: file\n - auto_generate: null\n default: auto\n form: form\n human_description:\n en_US: (For local deployment service)Parsing method, can be auto, ocr,\n or txt. Default is auto. If results are not satisfactory, try ocr\n ja_JP: (ローカルデプロイメントサービス用)解析方法は、auto、ocr、またはtxtのいずれかです。デフォルトはautoです。結果が満足できない場合は、ocrを試してください\n pt_BR: (For local deployment service)Parsing method, can be auto, ocr,\n or txt. Default is auto. If results are not satisfactory, try ocr\n zh_Hans: (用于本地部署服务)解析方法,可以是auto, ocr, 或 txt。默认是auto。如果结果不理想,请尝试ocr\n label:\n en_US: parse method\n ja_JP: 解析方法\n pt_BR: parse method\n zh_Hans: 解析方法\n llm_description: Parsing method, can be auto, ocr, or txt. Default is auto.\n If results are not satisfactory, try ocr\n max: null\n min: null\n name: parse_method\n options:\n - label:\n en_US: auto\n ja_JP: auto\n pt_BR: auto\n zh_Hans: auto\n value: auto\n - label:\n en_US: ocr\n ja_JP: ocr\n pt_BR: ocr\n zh_Hans: ocr\n value: ocr\n - label:\n en_US: txt\n ja_JP: txt\n pt_BR: txt\n zh_Hans: txt\n value: txt\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: select\n - auto_generate: null\n default: 1\n form: form\n human_description:\n en_US: (For official API) Whether to enable formula recognition\n ja_JP: (公式API用)数式認識を有効にするかどうか\n pt_BR: (For official API) Whether to enable formula recognition\n zh_Hans: (用于官方API)是否开启公式识别\n label:\n en_US: Enable formula recognition\n ja_JP: 数式認識を有効にする\n pt_BR: Enable formula recognition\n zh_Hans: 开启公式识别\n llm_description: (For official API) Whether to enable formula recognition\n max: null\n min: null\n name: enable_formula\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: boolean\n - auto_generate: null\n default: 1\n form: form\n human_description:\n en_US: (For official API) Whether to enable table recognition\n ja_JP: (公式API用)表認識を有効にするかどうか\n pt_BR: (For official API) Whether to enable table recognition\n zh_Hans: (用于官方API)是否开启表格识别\n label:\n en_US: Enable table recognition\n ja_JP: 表認識を有効にする\n pt_BR: Enable table recognition\n zh_Hans: 开启表格识别\n llm_description: (For official API) Whether to enable table recognition\n max: null\n min: null\n name: enable_table\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: boolean\n - auto_generate: null\n default: doclayout_yolo\n form: form\n human_description:\n en_US: '(For official API) Optional values: doclayout_yolo, layoutlmv3,\n default value is doclayout_yolo. doclayout_yolo is a self-developed\n model with better effect'\n ja_JP: (公式API用)オプション値:doclayout_yolo、layoutlmv3、デフォルト値は doclayout_yolo。doclayout_yolo\n は自己開発モデルで、効果がより良い\n pt_BR: '(For official API) Optional values: doclayout_yolo, layoutlmv3,\n default value is doclayout_yolo. doclayout_yolo is a self-developed\n model with better effect'\n zh_Hans: (用于官方API)可选值:doclayout_yolo、layoutlmv3,默认值为 doclayout_yolo。doclayout_yolo\n 为自研模型,效果更好\n label:\n en_US: Layout model\n ja_JP: レイアウト検出モデル\n pt_BR: Layout model\n zh_Hans: 布局检测模型\n llm_description: '(For official API) Optional values: doclayout_yolo, layoutlmv3,\n default value is doclayout_yolo. doclayout_yolo is a self-developed model\n withbetter effect'\n max: null\n min: null\n name: layout_model\n options:\n - label:\n en_US: doclayout_yolo\n ja_JP: doclayout_yolo\n pt_BR: doclayout_yolo\n zh_Hans: doclayout_yolo\n value: doclayout_yolo\n - label:\n en_US: layoutlmv3\n ja_JP: layoutlmv3\n pt_BR: layoutlmv3\n zh_Hans: layoutlmv3\n value: layoutlmv3\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: select\n - auto_generate: null\n default: auto\n form: form\n human_description:\n en_US: '(For official API) Specify document language, default ch, can\n be set to auto, when auto, the model will automatically identify document\n language, other optional value list see: https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5'\n ja_JP: (公式API用)ドキュメント言語を指定します。デフォルトはchで、autoに設定できます。autoの場合、モデルはドキュメント言語を自動的に識別します。他のオプション値リストについては、次を参照してください:https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5\n pt_BR: '(For official API) Specify document language, default ch, can\n be set to auto, when auto, the model will automatically identify document\n language, other optional value list see: https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5'\n zh_Hans: (用于官方API)指定文档语言,默认 ch,可以设置为auto,当为auto时模型会自动识别文档语言,其他可选值列表详见:https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5\n label:\n en_US: Document language\n ja_JP: ドキュメント言語\n pt_BR: Document language\n zh_Hans: 文档语言\n llm_description: '(For official API) Specify document language, default\n ch, can be set to auto, when auto, the model will automatically identify\n document language, other optional value list see: https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5'\n max: null\n min: null\n name: language\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: 0\n form: form\n human_description:\n en_US: (For official API) Whether to enable OCR recognition\n ja_JP: (公式API用)OCR認識を有効にするかどうか\n pt_BR: (For official API) Whether to enable OCR recognition\n zh_Hans: (用于官方API)是否开启OCR识别\n label:\n en_US: Enable OCR recognition\n ja_JP: OCR認識を有効にする\n pt_BR: Enable OCR recognition\n zh_Hans: 开启OCR识别\n llm_description: (For official API) Whether to enable OCR recognition\n max: null\n min: null\n name: enable_ocr\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: boolean\n - auto_generate: null\n default: '[]'\n form: form\n human_description:\n en_US: '(For official API) Example: [\"docx\",\"html\"], markdown, json are\n the default export formats, no need to set, this parameter only supports\n one or more of docx, html, latex'\n ja_JP: (公式API用)例:[\"docx\",\"html\"]、markdown、jsonはデフォルトのエクスポート形式であり、設定する必要はありません。このパラメータは、docx、html、latexの3つの形式のいずれかまたは複数のみをサポートします\n pt_BR: '(For official API) Example: [\"docx\",\"html\"], markdown, json are\n the default export formats, no need to set, this parameter only supports\n one or more of docx, html, latex'\n zh_Hans: (用于官方API)示例:[\"docx\",\"html\"],markdown、json为默认导出格式,无须设置,该参数仅支持docx、html、latex三种格式中的一个或多个\n label:\n en_US: Extra export formats\n ja_JP: 追加のエクスポート形式\n pt_BR: Extra export formats\n zh_Hans: 额外导出格式\n llm_description: '(For official API) Example: [\"docx\",\"html\"], markdown,\n json are the default export formats, no need to set, this parameter only\n supports one or more of docx, html, latex'\n max: null\n min: null\n name: extra_formats\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n params:\n enable_formula: ''\n enable_ocr: ''\n enable_table: ''\n extra_formats: ''\n file: ''\n language: ''\n layout_model: ''\n parse_method: ''\n provider_id: langgenius/mineru/mineru\n provider_name: langgenius/mineru/mineru\n provider_type: builtin\n selected: false\n title: Parse File\n tool_configurations:\n enable_formula: 1\n enable_ocr: 1\n enable_table: 1\n extra_formats: '[]'\n language: auto\n layout_model: doclayout_yolo\n parse_method: ocr\n tool_label: Parse File\n tool_name: parse-file\n tool_parameters:\n file:\n type: variable\n value:\n - '1747105418724'\n - file\n type: tool\n height: 245\n id: '1747105471978'\n position:\n x: 383\n y: 282\n positionAbsolute:\n x: 383\n y: 282\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 243\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params: {}\n mode: chat\n name: Qwen/Qwen3-235B-A22B\n provider: langgenius/modelscope/modelscope\n prompt_template:\n - id: 88f086b9-ac53-4dd3-b8d2-263eba8292a2\n role: system\n text: '# 角色:上市公司财报数据HTML页面生成专家\n\n ## 简介:\n\n - 作者:周辉\n\n - 版本:3.0\n\n - 语言:中文\n\n - 描述:专业的财报数据分析师和HTML动态网页设计专家,擅长创建符合现代设计趋势和技术要求的财报展示页面。\n\n ## 背景:\n\n 你是一位资深的财务分析师和网页设计专家,专门将上市公司财报数据转化为视觉吸引力强的HTML动态网页。你熟悉各种现代web技术和设计趋势,尤其擅长Bemto\n Grid布局和GSAP动效。\n\n\n ## 目标:\n\n 生成一个完整的、可直接使用的HTML页面,用于展示上市公司财报数据,该页面应符合所有技术和设计要求。\n\n\n ## 技术要求:\n\n 1. 使用Bemto Grid布局系统\n\n 2. 集成GSAP动效和Framer Motion\n\n 3. 基于HTML5和TailwindCSS开发\n\n 4. 响应式设计和大小字体对比应用\n\n ## 设计规范:\n\n 1. 根据公司特性选择适当的背景颜色和主题色调\n\n 2. 应用超大字体和视觉元素突出重点,创造视觉对比\n\n 3. 中英文混排,大字体为主,英文小字点题\n\n 4. 使用简洁的矩形元素进行数据可视化\n\n 5. 高亮色透明效果用于边框,避免不同高亮色互相覆盖\n\n 6. 所有数据图表采用脚注样式,保持主题一致性\n\n 7. 避免使用emoji作为主要图标\n\n ## 输出格式:\n\n 请直接提供完整的HTML代码,包含所有必要的CSS和JavaScript,确保代码可以直接复制使用并正常运行。代码应包含:\n\n\n 1. 完整的HTML结构\n\n 2. 内联或外部引用的CSS(包括TailwindCSS)\n\n 3. 必要的JavaScript(包括GSAP和Framer Motion)\n\n 4. CDN引用和其他必要的资源链接\n\n ## 初始化:\n\n 作为上市公司财报数据HTML页面生成专家,我已准备好为您创建一个完整的HTML页面。请提供您想要分析的上市公司及其最新财报的关键信息,我将直接为您生成可用的HTML代码。'\n - id: 0641a429-68ec-49a2-9a50-f08a2b2cfc24\n role: user\n text: 根据{{#1747105471978.text#}}最新财报内容和补充内容以及财报数据分析内容,生成一个 HTML 动态网页\n selected: false\n title: LLM\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1747105630044'\n position:\n x: 723.1615746404361\n y: 282\n positionAbsolute:\n x: 723.1615746404361\n y: 282\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 243\n - data:\n answer: '{{#1747105471978.text#}}\n\n\n {{#1747128616679.markdown_result#}}'\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 122\n id: '1747106481971'\n position:\n x: 1714.4137107987392\n y: 287.59189067367566\n positionAbsolute:\n x: 1714.4137107987392\n y: 287.59189067367566\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 243\n - data:\n desc: ''\n instruction: 请提取大模输出的html部分代码,其他的不需要\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: gemini-2.5-flash-preview-04-17\n provider: langgenius/openai_api_compatible/openai_api_compatible\n parameters:\n - description: 大模型生成的html代码\n name: html\n required: false\n type: string\n query:\n - '1747105630044'\n - text\n reasoning_mode: prompt\n selected: false\n title: 参数提取器\n type: parameter-extractor\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1747108879039'\n position:\n x: 1026.9278299313792\n y: 282\n positionAbsolute:\n x: 1026.9278299313792\n y: 282\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 243\n - data:\n code: \"import json\\nimport re\\nimport time\\nimport requests\\n\\ndef main(json_html:\\\n \\ str, apikey: str,apiurl: str,strtype: str) -> dict:\\n try:\\n \\\n \\ # 去除输入字符串中的 ```html 和 ``` 标记\\n html_content = re.sub(r'^```html\\\\\\\n s*|\\\\s*```

Dify 工作流生成器 (dify creator) 通过多轮对话引导用户明确需求, 参考 目录中的现有案例 ,生成符合对应 Dify 版本规范的 DSL YAML 文件,可直接导入 Dify 使用。 ⚠️ 重要:搜索文件前必须先切换到技能目录! 然后再搜索 和 核心能力 - 智能对话引导 :通过提问帮助用户梳理需求,避免遗漏关键信息 - 案例参考定位 :基于 INDEX.md 索引,自动匹配相似 Dify 案例 - 工作流结构设计 :分析需求后给出流程结构,与用户确认 - 完整 DSL 生成 :参考 DSL 节点指南,生成符合规范的完整 YAML 配置 使用场景 - 创建智能客服对话流程 - 构建 RAG 知识库问答系统 - 设计音视频处理工作流 - 开发代码生成和文档处理工具 - 搭建多模型协作的复杂流程 --- 工作流程总览 核心步骤 | 步骤 | 名称 | 输出 | |------|------|------| | Step 1 | 收集需求 | 需求文档 | | Step 2 | 案例定位 | 参考案例列表 | | Step 3 | 流程设计 | 流程结构图 | | Step 4 | 用户确认 | 确认反馈 | | Step 5 | DSL生成 | 完整YAML文件 | --- Step 1:收集用户需求 首先向用户询问基础信息,明确工作流的目标和功能。 1.1 基础信…

, '', json_html, flags=re.DOTALL).strip()\\n \\n \\\n \\ # 生成时间戳,确保文件名唯一\\n timestamp = int(time.time())\\n filename\\\n \\ = f\\\"{strtype}_{timestamp}.html\\\"\\n \\n # API端点(假设本地运行)\\n\\\n \\ url = f\\\"{apiurl}\\\"\\n \\n # 请求数据\\n payload\\\n \\ = {\\n \\\"html_content\\\": html_content,\\n \\\"filename\\\"\\\n : filename # 使用传入的文件名\\n }\\n \\n # 设置请求头(包含认证token)\\n\\\n \\ headers = {\\n \\\"Authorization\\\": f\\\"Bearer {apikey}\\\"\\\n , # 替换为实际的认证token\\n \\\"Content-Type\\\": \\\"application/json\\\"\\n\\\n \\ }\\n \\n try:\\n # 发送POST请求\\n \\\n \\ response = requests.post(url, json=payload, headers=headers)\\n \\\n \\ \\n # 检查响应状态\\n if response.status_code == 200:\\n\\\n \\ result = response.json()\\n html_url = result.get(\\\"\\\n html_url\\\", \\\"\\\")\\n generated_filename = result.get(\\\"filename\\\"\\\n , \\\"\\\")\\n \\n # 返回结果\\n return\\\n \\ {\\n \\\"html_url\\\": html_url,\\n \\\"\\\n filename\\\": generated_filename,\\n \\\"markdown_result\\\"\\\n : f\\\"[点击查看]({html_url})\\\"\\n }\\n else:\\n \\\n \\ raise Exception(f\\\"HTTP Error: {response.status_code}, Message:\\\n \\ {response.text}\\\")\\n \\n except requests.exceptions.RequestException\\\n \\ as e:\\n raise Exception(f\\\"Request failed: {str(e)}\\\")\\n \\\n \\ \\n except Exception as e:\\n return {\\n \\\"error\\\"\\\n : f\\\"Error: {str(e)}\\\"\\n }\"\n code_language: python3\n desc: ''\n outputs:\n filename:\n children: null\n type: string\n html_url:\n children: null\n type: string\n markdown_result:\n children: null\n type: string\n selected: false\n title: 代码处理生成html调用\n type: code\n variables:\n - value_selector:\n - '1747108879039'\n - html\n variable: json_html\n - value_selector:\n - env\n - apikey\n variable: apikey\n - value_selector:\n - env\n - apiurl\n variable: apiurl\n - value_selector:\n - env\n - strtype\n variable: strtype\n height: 53\n id: '1747128616679'\n position:\n x: 1368.7208399218582\n y: 287.59189067367566\n positionAbsolute:\n x: 1368.7208399218582\n y: 287.59189067367566\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 243\n viewport:\n x: -482.59123578704975\n y: 59.56446590001502\n zoom: 0.7198547666012437\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":25936,"content_sha256":"1ec2e73b7b7256265b8f38d0f482cb11f3ecead633d67f5e9271f2b07ee01bbc"},{"filename":"organized_dsl/04_数据分析与可视化/数据报表/股票分析系统-Gordon修改版.yml","content":"app:\n description: 本工作流调用第三方股票信息,通过股票信息发送给大模型由模型提供分析给出股票的买卖决策判断等信息\n icon: scream\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 股票分析系统\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/siliconflow:0.0.7@8b9d2f57d314120744c245b6fe4f8701e1a7490a500d9fb74e9e9dceeaea5f70\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/openai_api_compatible:0.0.10@d64a024a65446a84d65c56b4cd628b3fbcef2997dd0c23a3f4cdb7bfb8a69c7a\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/volcengine_maas:0.0.7@f8e44422cfa5b9a6ac1f2d3b43ef1069868efdad1e5cec2590de3f53ceac37b0\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/gemini:0.0.8@420e755f870062b3da528617d2c0439a599ce1cbbb00645492c3bdb2b360afb6\nkind: app\nversion: 0.1.5\nworkflow:\n conversation_variables: []\n environment_variables:\n - description: ''\n id: 78af7cd7-92fa-44fe-8951-26638703d43c\n name: apikey\n selector:\n - env\n - apikey\n value: zhouhuixxxx\n value_type: string\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 500\n batch_count_limit: 100\n file_size_limit: 100\n image_file_size_limit: 100\n video_file_size_limit: 1000\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: answer\n id: 1741660654730-false-17416607292670-target\n selected: false\n source: '1741660654730'\n sourceHandle: 'false'\n target: '17416607292670'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: http-request\n targetType: code\n id: 1741660778252-source-1741663437132-target\n selected: false\n source: '1741660778252'\n sourceHandle: source\n target: '1741663437132'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: code\n targetType: if-else\n id: 1741663437132-source-1741670198264-target\n selected: false\n source: '1741663437132'\n sourceHandle: source\n target: '1741670198264'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: llm\n id: 1741670198264-true-1741669644195-target\n selected: false\n source: '1741670198264'\n sourceHandle: 'true'\n target: '1741669644195'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: llm\n id: 1741670198264-6c1dbd89-ad21-4925-89f3-5b690a144fa0-17416703386570-target\n selected: false\n source: '1741670198264'\n sourceHandle: 6c1dbd89-ad21-4925-89f3-5b690a144fa0\n target: '17416703386570'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: llm\n id: 1741670198264-ccf046c0-1736-4991-ac66-a626d63b2fd6-17416704837760-target\n selected: false\n source: '1741670198264'\n sourceHandle: ccf046c0-1736-4991-ac66-a626d63b2fd6\n target: '17416704837760'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: llm\n id: 1741670198264-false-17416706257040-target\n selected: false\n source: '1741670198264'\n sourceHandle: 'false'\n target: '17416706257040'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: answer\n id: 1741669644195-source-answer-target\n selected: false\n source: '1741669644195'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: answer\n id: 17416703386570-source-1741698137000-target\n selected: false\n source: '17416703386570'\n sourceHandle: source\n target: '1741698137000'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: answer\n id: 17416704837760-source-1741698182821-target\n selected: false\n source: '17416704837760'\n sourceHandle: source\n target: '1741698182821'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: answer\n id: 17416706257040-source-1741698215893-target\n selected: false\n source: '17416706257040'\n sourceHandle: source\n target: '1741698215893'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: code\n id: 1741660654730-true-1741711639874-target\n selected: false\n source: '1741660654730'\n sourceHandle: 'true'\n target: '1741711639874'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: code\n targetType: http-request\n id: 1741711639874-source-1741660778252-target\n selected: false\n source: '1741711639874'\n sourceHandle: source\n target: '1741660778252'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: start\n targetType: tool\n id: 1741660271061-source-1742345545567-target\n selected: false\n source: '1741660271061'\n sourceHandle: source\n target: '1742345545567'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: tool\n targetType: parameter-extractor\n id: 1742345545567-source-1742345558271-target\n selected: false\n source: '1742345545567'\n sourceHandle: source\n target: '1742345558271'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: parameter-extractor\n targetType: if-else\n id: 1742345558271-source-1741660654730-target\n selected: false\n source: '1742345558271'\n sourceHandle: source\n target: '1741660654730'\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: 股票号码查询可以去东方财富网https://quote.eastmoney.com/center/gridlist.html#fund_lof查找\n selected: false\n title: 开始\n type: start\n variables: []\n height: 113\n id: '1741660271061'\n position:\n x: 30\n y: 275.5\n positionAbsolute:\n x: 30\n y: 275.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#1741669644195.text#}}'\n desc: ''\n selected: false\n title: A股直接回复\n type: answer\n variables: []\n height: 104\n id: answer\n position:\n x: 2766\n y: 392.5\n positionAbsolute:\n x: 2766\n y: 392.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n cases:\n - case_id: 'true'\n conditions:\n - comparison_operator: not empty\n id: e673fa11-d63f-4c27-b960-ae1132875494\n value: ''\n varType: string\n variable_selector:\n - '1742345558271'\n - stockcode1\n - comparison_operator: not empty\n id: 6dfe60af-e5ac-4b5e-bd13-696af127680e\n value: ''\n varType: string\n variable_selector:\n - '1742345558271'\n - marketType\n id: 'true'\n logical_operator: and\n desc: ''\n selected: false\n title: 条件分支\n type: if-else\n height: 151\n id: '1741660654730'\n position:\n x: 942\n y: 275.5\n positionAbsolute:\n x: 942\n y: 275.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: 请补充股票信息\n desc: ''\n selected: false\n title: 错误提示回复\n type: answer\n variables: []\n height: 101\n id: '17416607292670'\n position:\n x: 1246\n y: 251.5\n positionAbsolute:\n x: 1246\n y: 251.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n authorization:\n config: null\n type: no-auth\n body:\n data:\n - id: key-value-1\n key: ''\n type: text\n value: \"{\\n \\\"stock_code\\\":\\\"{{#1741711639874.output#}}\\\",\\n \\\"market_type\\\"\\\n :\\\"{{#1741660271061.marketType#}}\\\"\\n }\"\n type: json\n desc: ''\n headers: 'Content-Type:application/json\n\n Authorization:Bearer {{#env.apikey#}}'\n method: post\n params: ''\n retry_config:\n max_retries: 3\n retry_enabled: true\n retry_interval: 100\n selected: false\n timeout:\n max_connect_timeout: 0\n max_read_timeout: 0\n max_write_timeout: 0\n title: 请求股票接口\n type: http-request\n url: http://192.168.88.202:8588/analyze-stock/\n variables: []\n height: 135\n id: '1741660778252'\n position:\n x: 1550\n y: 392.5\n positionAbsolute:\n x: 1550\n y: 392.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"import json\\ndef main(arg1: str) -> str: # 修改返回类型为 str\\n# 修正后的代码(修复缩进问题)\\n\\\n \\ data = json.loads(arg1)\\n technical_summary = data['technical_summary']\\n\\\n \\ recent_data = data['recent_data']\\n report = data['report']\\n \\\n \\ # 将结果转换为JSON字符串返回\\n return {\\n \\\"technical_summary\\\": json.dumps(technical_summary,ensure_ascii=False,\\\n \\ indent=2),\\n \\\"recent_data\\\": json.dumps(recent_data,ensure_ascii=False,\\\n \\ indent=2),\\n \\\"report\\\": json.dumps(report,ensure_ascii=False, indent=2)\\n\\\n \\ }\"\n code_language: python3\n desc: ''\n outputs:\n recent_data:\n children: null\n type: string\n report:\n children: null\n type: string\n technical_summary:\n children: null\n type: string\n selected: false\n title: 处理股票接口返回\n type: code\n variables:\n - value_selector:\n - '1741660778252'\n - body\n variable: arg1\n height: 53\n id: '1741663437132'\n position:\n x: 1854\n y: 392.5\n positionAbsolute:\n x: 1854\n y: 392.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: 对 A股使用大语言模型来分析\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: internlm3-8b-instruct\n provider: langgenius/openai_api_compatible/openai_api_compatible\n prompt_template:\n - edition_type: basic\n id: 12b5ec7e-4db6-4b84-90ab-e0de3a45e97a\n role: system\n text: \"分析A股 {{#1741711639874.output#}}:\\n 技术指标概要:\\n{{#1741663437132.technical_summary#}}\\n\\\n 近14日交易数据:\\n{{#1741663437132.recent_data#}}\\n请提供:\\n1. 趋势分析(包含支撑位和压力位)\\n\\\n 2. 成交量分析及其含义\\n3. 风险评估(包含波动率分析)\\n4. 短期和中期目标价位\\n5. 关键技术位分析\\n6. 具体交易建议(包含止损位)\\n\\\n 请基于技术指标和A股市场特点进行分析,给出具体数据支持。\"\n selected: false\n title: 大语言模型A股票分析\n type: llm\n variables: []\n vision:\n enabled: false\n height: 123\n id: '1741669644195'\n position:\n x: 2462\n y: 392.5\n positionAbsolute:\n x: 2462\n y: 392.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n cases:\n - case_id: 'true'\n conditions:\n - comparison_operator: is\n id: 3ba032e8-c656-4a9b-866e-4c7b11a94ba1\n value: A\n varType: string\n variable_selector:\n - '1741660271061'\n - marketType\n id: 'true'\n logical_operator: and\n - case_id: 6c1dbd89-ad21-4925-89f3-5b690a144fa0\n conditions:\n - comparison_operator: contains\n id: 472510f4-08fb-4f3b-962e-96e45726be27\n value: HK\n varType: string\n variable_selector:\n - '1741660271061'\n - marketType\n id: 6c1dbd89-ad21-4925-89f3-5b690a144fa0\n logical_operator: and\n - case_id: ccf046c0-1736-4991-ac66-a626d63b2fd6\n conditions:\n - comparison_operator: contains\n id: 4f3902b2-5e6f-4792-8c50-d83f68ff7050\n value: US\n varType: string\n variable_selector:\n - '1741660271061'\n - marketType\n id: ccf046c0-1736-4991-ac66-a626d63b2fd6\n logical_operator: and\n desc: 通过该节点判断我们后面股票、基金分析走哪个大语言模型股票分析\n selected: false\n title: 市场类型判断\n type: if-else\n height: 265\n id: '1741670198264'\n position:\n x: 2158\n y: 392.5\n positionAbsolute:\n x: 2158\n y: 392.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: 对 港股使用大语言模型来分析\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: gemini-2.0-flash-exp\n provider: langgenius/gemini/google\n prompt_template:\n - edition_type: basic\n id: 12b5ec7e-4db6-4b84-90ab-e0de3a45e97a\n role: system\n text: ''\n - id: e758d19f-6c21-4ca6-8d8d-e4f3387c5c8f\n role: user\n text: \"分析港股 {{#1741711639874.output#}}:\\n 技术指标概要:\\n{{#1741663437132.technical_summary#}}\\n\\\n 近14日交易数据:\\n{{#1741663437132.recent_data#}}\\n请提供:\\n1. 趋势分析(包含支撑位和压力位,港币计价)\\n\\\n 2. 成交量分析及其含义\\n3. 风险评估(包含波动率和港股市场特有风险)\\n4. 短期和中期目标价位(港币)\\n5. 关键技术位分析\\n\\\n 6. 具体交易建议(包含止损位)\\n请基于技术指标和港股市场特点进行分析,给出具体数据支持。\"\n selected: false\n title: 大语言模型港股票分析\n type: llm\n variables: []\n vision:\n enabled: false\n height: 123\n id: '17416703386570'\n position:\n x: 2462\n y: 555.5\n positionAbsolute:\n x: 2462\n y: 555.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: 对美股使用大语言模型来分析\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-V3\n provider: langgenius/volcengine_maas/volcengine_maas\n prompt_template:\n - edition_type: basic\n id: 12b5ec7e-4db6-4b84-90ab-e0de3a45e97a\n role: system\n text: \"分析美股 {{#1741711639874.output#}}:\\n 技术指标概要:\\n{{#1741663437132.technical_summary#}}\\n\\\n 近14日交易数据:\\n{{#1741663437132.recent_data#}}\\n请提供:\\n1. 趋势分析(包含支撑位和压力位,美元计价)\\n\\\n 2. 成交量分析及其含义\\n3. 风险评估(包含波动率和美股市场特有风险)\\n4. 短期和中期目标价位(美元)\\n5. 关键技术位分析\\n\\\n 6. 具体交易建议(包含止损位)\\n请基于技术指标和美股市场特点进行分析,给出具体数据支持。\"\n selected: false\n title: 大语言模型美股票分析\n type: llm\n variables: []\n vision:\n enabled: false\n height: 123\n id: '17416704837760'\n position:\n x: 2462\n y: 718.5\n positionAbsolute:\n x: 2462\n y: 718.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-ai/DeepSeek-V2.5\n provider: langgenius/siliconflow/siliconflow\n prompt_template:\n - edition_type: basic\n id: 12b5ec7e-4db6-4b84-90ab-e0de3a45e97a\n role: system\n text: \"分析基金 {{#1741711639874.output#}}:\\n 技术指标概要:\\n{{#1741663437132.technical_summary#}}\\n\\\n 近14日交易数据:\\n{{#1741663437132.recent_data#}}\\n请提供:\\n1. 净值走势分析(包含支撑位和压力位)\\n\\\n 2. 成交量分析及其对净值的影响\\n3. 风险评估(包含波动率和折溢价分析)\\n4. 短期和中期净值预测\\n5. 关键技术位分析\\n6. 申购赎回建议(包含止损位)\\n\\\n 请基于技术指标和市场表现进行分析,给出具体数据支持。\"\n selected: false\n title: '大语言模型基金分析 '\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '17416706257040'\n position:\n x: 2462\n y: 881.5\n positionAbsolute:\n x: 2462\n y: 881.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n author: 周辉\n desc: ''\n height: 131\n selected: false\n showAuthor: true\n text: '{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"本工作流调用第三方股票信息,通过股票信息发送给大模型由模型提供分析给出股票的买卖决策判断等信息,该工作流用到条件分支、变量聚合器、http请求、代码处理、大语言模型等组件\",\"type\":\"text\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}'\n theme: blue\n title: ''\n type: ''\n width: 471\n height: 131\n id: '1741695699375'\n position:\n x: -281.9415246884291\n y: 480.6587989664214\n positionAbsolute:\n x: -281.9415246884291\n y: 480.6587989664214\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom-note\n width: 471\n - data:\n answer: '{{#17416703386570.text#}}'\n desc: ''\n selected: false\n title: 港股直接回复\n type: answer\n variables: []\n height: 104\n id: '1741698137000'\n position:\n x: 2766\n y: 555.5\n positionAbsolute:\n x: 2766\n y: 555.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: ' {{#17416704837760.text#}}'\n desc: ''\n selected: false\n title: 美股直接回复\n type: answer\n variables: []\n height: 104\n id: '1741698182821'\n position:\n x: 2766\n y: 718.5\n positionAbsolute:\n x: 2766\n y: 718.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#17416706257040.text#}}'\n desc: ''\n selected: false\n title: ETF LOF 直接回复\n type: answer\n variables: []\n height: 104\n id: '1741698215893'\n position:\n x: 2766\n y: 864.5\n positionAbsolute:\n x: 2766\n y: 864.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"def main(arg1: str, arg2: str) -> dict:\\n # 检查 arg1 是否有值\\n if\\\n \\ arg1:\\n result = arg1\\n # 如果 arg1 没有值,则检查 arg2\\n elif arg2:\\n\\\n \\ result = arg2\\n else:\\n # 如果两个参数都没有值,可以根据需要进行处理,这里选择返回空字符串\\n\\\n \\ result = \\\"\\\"\\n # 将结果封装成字典\\n return {'output': result}\"\n code_language: python3\n desc: ''\n outputs:\n output:\n children: null\n type: string\n selected: true\n title: 代码执行2个输入值合并\n type: code\n variables:\n - value_selector:\n - '1742345558271'\n - stockcode1\n variable: arg1\n - value_selector:\n - '1742345558271'\n - marketType\n variable: arg2\n height: 53\n id: '1741711639874'\n position:\n x: 1246\n y: 392.5\n positionAbsolute:\n x: 1246\n y: 392.5\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n author: 王梓恒\n desc: ''\n height: 125\n selected: false\n showAuthor: true\n text: '{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"调整工作流,自动识别用户输入的股票。自动补全市场类型参数\",\"type\":\"text\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0,\"textStyle\":\"\"}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}'\n theme: blue\n title: ''\n type: ''\n width: 479\n height: 125\n id: '1742345479558'\n position:\n x: 320.10890797763864\n y: 473.5159418235643\n positionAbsolute:\n x: 320.10890797763864\n y: 473.5159418235643\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom-note\n width: 479\n - data:\n desc: ''\n is_team_authorization: true\n output_schema: null\n paramSchemas:\n - auto_generate: null\n default: '%Y-%m-%d %H:%M:%S'\n form: form\n human_description:\n en_US: Time format in strftime standard.\n ja_JP: Time format in strftime standard.\n pt_BR: Time format in strftime standard.\n zh_Hans: strftime 标准的时间格式。\n label:\n en_US: Format\n ja_JP: Format\n pt_BR: Format\n zh_Hans: 格式\n llm_description: null\n max: null\n min: null\n name: format\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: UTC\n form: form\n human_description:\n en_US: Timezone\n ja_JP: Timezone\n pt_BR: Timezone\n zh_Hans: 时区\n label:\n en_US: Timezone\n ja_JP: Timezone\n pt_BR: Timezone\n zh_Hans: 时区\n llm_description: null\n max: null\n min: null\n name: timezone\n options:\n - label:\n en_US: UTC\n ja_JP: UTC\n pt_BR: UTC\n zh_Hans: UTC\n value: UTC\n - label:\n en_US: America/New_York\n ja_JP: America/New_York\n pt_BR: America/New_York\n zh_Hans: 美洲/纽约\n value: America/New_York\n - label:\n en_US: America/Los_Angeles\n ja_JP: America/Los_Angeles\n pt_BR: America/Los_Angeles\n zh_Hans: 美洲/洛杉矶\n value: America/Los_Angeles\n - label:\n en_US: America/Chicago\n ja_JP: America/Chicago\n pt_BR: America/Chicago\n zh_Hans: 美洲/芝加哥\n value: America/Chicago\n - label:\n en_US: America/Sao_Paulo\n ja_JP: America/Sao_Paulo\n pt_BR: América/São Paulo\n zh_Hans: 美洲/圣保罗\n value: America/Sao_Paulo\n - label:\n en_US: Asia/Shanghai\n ja_JP: Asia/Shanghai\n pt_BR: Asia/Shanghai\n zh_Hans: 亚洲/上海\n value: Asia/Shanghai\n - label:\n en_US: Asia/Ho_Chi_Minh\n ja_JP: Asia/Ho_Chi_Minh\n pt_BR: Ásia/Ho Chi Minh\n zh_Hans: 亚洲/胡志明市\n value: Asia/Ho_Chi_Minh\n - label:\n en_US: Asia/Tokyo\n ja_JP: Asia/Tokyo\n pt_BR: Asia/Tokyo\n zh_Hans: 亚洲/东京\n value: Asia/Tokyo\n - label:\n en_US: Asia/Dubai\n ja_JP: Asia/Dubai\n pt_BR: Asia/Dubai\n zh_Hans: 亚洲/迪拜\n value: Asia/Dubai\n - label:\n en_US: Asia/Kolkata\n ja_JP: Asia/Kolkata\n pt_BR: Asia/Kolkata\n zh_Hans: 亚洲/加尔各答\n value: Asia/Kolkata\n - label:\n en_US: Asia/Seoul\n ja_JP: Asia/Seoul\n pt_BR: Asia/Seoul\n zh_Hans: 亚洲/首尔\n value: Asia/Seoul\n - label:\n en_US: Asia/Singapore\n ja_JP: Asia/Singapore\n pt_BR: Asia/Singapore\n zh_Hans: 亚洲/新加坡\n value: Asia/Singapore\n - label:\n en_US: Europe/London\n ja_JP: Europe/London\n pt_BR: Europe/London\n zh_Hans: 欧洲/伦敦\n value: Europe/London\n - label:\n en_US: Europe/Berlin\n ja_JP: Europe/Berlin\n pt_BR: Europe/Berlin\n zh_Hans: 欧洲/柏林\n value: Europe/Berlin\n - label:\n en_US: Europe/Moscow\n ja_JP: Europe/Moscow\n pt_BR: Europe/Moscow\n zh_Hans: 欧洲/莫斯科\n value: Europe/Moscow\n - label:\n en_US: Australia/Sydney\n ja_JP: Australia/Sydney\n pt_BR: Australia/Sydney\n zh_Hans: 澳大利亚/悉尼\n value: Australia/Sydney\n - label:\n en_US: Pacific/Auckland\n ja_JP: Pacific/Auckland\n pt_BR: Pacific/Auckland\n zh_Hans: 太平洋/奥克兰\n value: Pacific/Auckland\n - label:\n en_US: Africa/Cairo\n ja_JP: Africa/Cairo\n pt_BR: Africa/Cairo\n zh_Hans: 非洲/开罗\n value: Africa/Cairo\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: select\n params:\n format: ''\n timezone: ''\n provider_id: time\n provider_name: time\n provider_type: builtin\n selected: false\n title: 获取当前时间\n tool_configurations:\n format: '%Y-%m-%d'\n timezone: Asia/Shanghai\n tool_label: 获取当前时间\n tool_name: current_time\n tool_parameters: {}\n type: tool\n height: 115\n id: '1742345545567'\n position:\n x: 334\n y: 275.5\n positionAbsolute:\n x: 334\n y: 275.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n desc: ''\n instruction: '你是一个高级金融助手,专门用于从用户的自然语言输入中识别并提取股票代码和对应的交易所信息。你的任务是基于用户提供的描述性文字,自动推断出正确的股票代码(保存在变量`stockcode1`中)和其所属的市场类型(保存在变量`marketType`中)。以下是具体的市场类型和它们的简写:\n\n - A股市场:使用''A''表示\n\n - 港股市场:使用''HK''表示\n\n - 美股市场:使用''US''表示\n\n - ETF基金:使用''ETF''表示\n\n - LOF基金:使用''LOF''表示\n\n\n 请根据以下规则进行操作:\n\n 1. 如果用户提及了特定的股票代码或公司名称,请识别并提取该股票代码作为`stockcode1`。\n\n 2. 根据用户提供的上下文或直接提供的市场信息,确定并设置`marketType`。\n\n 3. 若用户输入的信息不足以明确判断股票代码或市场类型,请请求用户提供更具体的信息。\n\n\n 示例输入与输出:\n\n - 用户输入:\"我想查询腾讯在港股的表现\";输出:`stockcode1` = ''00700'', `marketType` = ''HK''\n\n - 用户输入:\"AAPL的最新消息是什么?\";输出:`stockcode1` = ''AAPL'', `marketType` = ''US''\n\n\n 请现在根据用户提供的信息执行上述指令。'\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-ai/DeepSeek-V3\n provider: langgenius/siliconflow/siliconflow\n parameters:\n - description: 股票代码\n name: stockcode1\n required: false\n type: string\n - description: 市场类型\n name: marketType\n required: false\n type: string\n query:\n - sys\n - query\n reasoning_mode: prompt\n selected: false\n title: 参数提取器\n type: parameter-extractor\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1742345558271'\n position:\n x: 638\n y: 275.5\n positionAbsolute:\n x: 638\n y: 275.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: -120.88881505498864\n y: -85.08089721512391\n zoom: 0.7000000000000004\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":32484,"content_sha256":"5955309e567f11f9dbdc453c86a9e2e5fe346e9b95a327b4ef35e6a2131e057f"},{"filename":"organized_dsl/04_数据分析与可视化/数据报表/股票分析系统.yml","content":"app:\n description: 本工作流调用第三方股票信息,通过股票信息发送给大模型由模型提供分析给出股票的买卖决策判断等信息\n icon: scream\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 股票分析系统\n use_icon_as_answer_icon: false\nkind: app\nversion: 0.1.5\nworkflow:\n conversation_variables: []\n environment_variables:\n - description: ''\n id: 78af7cd7-92fa-44fe-8951-26638703d43c\n name: apikey\n selector:\n - env\n - apikey\n value: zhouhuixxxx\n value_type: string\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 50\n batch_count_limit: 5\n file_size_limit: 15\n image_file_size_limit: 10\n video_file_size_limit: 100\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n sourceType: start\n targetType: if-else\n id: 1741660271061-source-1741660654730-target\n selected: false\n source: '1741660271061'\n sourceHandle: source\n target: '1741660654730'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: answer\n id: 1741660654730-false-17416607292670-target\n selected: false\n source: '1741660654730'\n sourceHandle: 'false'\n target: '17416607292670'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: http-request\n targetType: code\n id: 1741660778252-source-1741663437132-target\n selected: false\n source: '1741660778252'\n sourceHandle: source\n target: '1741663437132'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: code\n targetType: if-else\n id: 1741663437132-source-1741670198264-target\n selected: false\n source: '1741663437132'\n sourceHandle: source\n target: '1741670198264'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: llm\n id: 1741670198264-true-1741669644195-target\n selected: false\n source: '1741670198264'\n sourceHandle: 'true'\n target: '1741669644195'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: llm\n id: 1741670198264-6c1dbd89-ad21-4925-89f3-5b690a144fa0-17416703386570-target\n selected: false\n source: '1741670198264'\n sourceHandle: 6c1dbd89-ad21-4925-89f3-5b690a144fa0\n target: '17416703386570'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: llm\n id: 1741670198264-ccf046c0-1736-4991-ac66-a626d63b2fd6-17416704837760-target\n selected: false\n source: '1741670198264'\n sourceHandle: ccf046c0-1736-4991-ac66-a626d63b2fd6\n target: '17416704837760'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: llm\n id: 1741670198264-false-17416706257040-target\n selected: false\n source: '1741670198264'\n sourceHandle: 'false'\n target: '17416706257040'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: answer\n id: 1741669644195-source-answer-target\n selected: false\n source: '1741669644195'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: answer\n id: 17416703386570-source-1741698137000-target\n selected: false\n source: '17416703386570'\n sourceHandle: source\n target: '1741698137000'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: answer\n id: 17416704837760-source-1741698182821-target\n selected: false\n source: '17416704837760'\n sourceHandle: source\n target: '1741698182821'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: answer\n id: 17416706257040-source-1741698215893-target\n selected: false\n source: '17416706257040'\n sourceHandle: source\n target: '1741698215893'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: if-else\n targetType: code\n id: 1741660654730-true-1741711639874-target\n source: '1741660654730'\n sourceHandle: 'true'\n target: '1741711639874'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: code\n targetType: http-request\n id: 1741711639874-source-1741660778252-target\n source: '1741711639874'\n sourceHandle: source\n target: '1741660778252'\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: 股票号码查询可以去东方财富网https://quote.eastmoney.com/center/gridlist.html#fund_lof查找\n selected: false\n title: 开始\n type: start\n variables:\n - label: 股票代码-下拉选择\n max_length: 48\n options:\n - ''\n - 000568\n - '002657'\n - '000050'\n - 000599\n - '600031'\n - '600050'\n - '600054'\n - '01347'\n - 01880\n - 08257\n - 105.WLGS\n - 105.EJH\n - '512670'\n - '501065'\n required: false\n type: select\n variable: stockcode1\n - label: 股票代码手工输入(如A股 000568 、港股 01347、美股 105.WLGS、ETF 512670 LOF 501065)\n max_length: 48\n options: []\n required: false\n type: text-input\n variable: stockcode2\n - label: 市场类型\n max_length: 48\n options:\n - A\n - HK\n - US\n - ETF\n - LOF\n required: true\n type: select\n variable: marketType\n height: 202\n id: '1741660271061'\n position:\n x: 32.5483009607201\n y: 301\n positionAbsolute:\n x: 32.5483009607201\n y: 301\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#1741669644195.text#}}'\n desc: ''\n selected: false\n title: A股直接回复\n type: answer\n variables: []\n height: 103\n id: answer\n position:\n x: 2158\n y: 456\n positionAbsolute:\n x: 2158\n y: 456\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n cases:\n - case_id: 'true'\n conditions:\n - comparison_operator: not empty\n id: e673fa11-d63f-4c27-b960-ae1132875494\n value: ''\n varType: string\n variable_selector:\n - '1741660271061'\n - stockcode1\n - comparison_operator: not empty\n id: 6dfe60af-e5ac-4b5e-bd13-696af127680e\n value: ''\n varType: string\n variable_selector:\n - '1741660271061'\n - stockcode2\n id: 'true'\n logical_operator: or\n desc: ''\n selected: false\n title: 条件分支\n type: if-else\n height: 152\n id: '1741660654730'\n position:\n x: 334\n y: 301\n positionAbsolute:\n x: 334\n y: 301\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: 股票代码为空不能查询,请重新输入\n desc: ''\n selected: false\n title: 错误提示回复\n type: answer\n variables: []\n height: 100\n id: '17416607292670'\n position:\n x: 638\n y: 301\n positionAbsolute:\n x: 638\n y: 301\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n authorization:\n config: null\n type: no-auth\n body:\n data:\n - id: key-value-1\n key: ''\n type: text\n value: \"{\\n \\\"stock_code\\\":\\\"{{#1741711639874.output#}}\\\",\\n \\\"market_type\\\"\\\n :\\\"{{#1741660271061.marketType#}}\\\"\\n }\"\n type: json\n desc: ''\n headers: 'Content-Type:application/json\n\n Authorization:Bearer {{#env.apikey#}}'\n method: post\n params: ''\n retry_config:\n max_retries: 3\n retry_enabled: true\n retry_interval: 100\n selected: false\n timeout:\n max_connect_timeout: 0\n max_read_timeout: 0\n max_write_timeout: 0\n title: 请求股票接口\n type: http-request\n url: http://127.0.0.1:8085/analyze-stock/\n variables: []\n height: 136\n id: '1741660778252'\n position:\n x: 942\n y: 456\n positionAbsolute:\n x: 942\n y: 456\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"import json\\ndef main(arg1: str) -> str: # 修改返回类型为 str\\n# 修正后的代码(修复缩进问题)\\n\\\n \\ data = json.loads(arg1)\\n technical_summary = data['technical_summary']\\n\\\n \\ recent_data = data['recent_data']\\n report = data['report']\\n \\\n \\ # 将结果转换为JSON字符串返回\\n return {\\n \\\"technical_summary\\\": json.dumps(technical_summary,ensure_ascii=False,\\\n \\ indent=2),\\n \\\"recent_data\\\": json.dumps(recent_data,ensure_ascii=False,\\\n \\ indent=2),\\n \\\"report\\\": json.dumps(report,ensure_ascii=False, indent=2)\\n\\\n \\ }\"\n code_language: python3\n desc: ''\n outputs:\n recent_data:\n children: null\n type: string\n report:\n children: null\n type: string\n technical_summary:\n children: null\n type: string\n selected: false\n title: 处理股票接口返回\n type: code\n variables:\n - value_selector:\n - '1741660778252'\n - body\n variable: arg1\n height: 54\n id: '1741663437132'\n position:\n x: 1246\n y: 456\n positionAbsolute:\n x: 1246\n y: 456\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: 对 A股使用大语言模型来分析\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: internlm3-8b-instruct\n provider: openai_api_compatible\n prompt_template:\n - edition_type: basic\n id: 12b5ec7e-4db6-4b84-90ab-e0de3a45e97a\n role: system\n text: \"分析A股 {{#1741711639874.output#}}:\\n 技术指标概要:\\n{{#1741663437132.technical_summary#}}\\n\\\n 近14日交易数据:\\n{{#1741663437132.recent_data#}}\\n请提供:\\n1. 趋势分析(包含支撑位和压力位)\\n\\\n 2. 成交量分析及其含义\\n3. 风险评估(包含波动率分析)\\n4. 短期和中期目标价位\\n5. 关键技术位分析\\n6. 具体交易建议(包含止损位)\\n\\\n 请基于技术指标和A股市场特点进行分析,给出具体数据支持。\"\n selected: false\n title: 大语言模型A股票分析\n type: llm\n variables: []\n vision:\n enabled: false\n height: 126\n id: '1741669644195'\n position:\n x: 1854\n y: 456\n positionAbsolute:\n x: 1854\n y: 456\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n cases:\n - case_id: 'true'\n conditions:\n - comparison_operator: is\n id: 3ba032e8-c656-4a9b-866e-4c7b11a94ba1\n value: A\n varType: string\n variable_selector:\n - '1741660271061'\n - marketType\n id: 'true'\n logical_operator: and\n - case_id: 6c1dbd89-ad21-4925-89f3-5b690a144fa0\n conditions:\n - comparison_operator: contains\n id: 472510f4-08fb-4f3b-962e-96e45726be27\n value: HK\n varType: string\n variable_selector:\n - '1741660271061'\n - marketType\n id: 6c1dbd89-ad21-4925-89f3-5b690a144fa0\n logical_operator: and\n - case_id: ccf046c0-1736-4991-ac66-a626d63b2fd6\n conditions:\n - comparison_operator: contains\n id: 4f3902b2-5e6f-4792-8c50-d83f68ff7050\n value: US\n varType: string\n variable_selector:\n - '1741660271061'\n - marketType\n id: ccf046c0-1736-4991-ac66-a626d63b2fd6\n logical_operator: and\n desc: 通过该节点判断我们后面股票、基金分析走哪个大语言模型股票分析\n selected: false\n title: 市场类型判断\n type: if-else\n height: 266\n id: '1741670198264'\n position:\n x: 1550\n y: 456\n positionAbsolute:\n x: 1550\n y: 456\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: 对 港股使用大语言模型来分析\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: gemini-2.0-flash-exp\n provider: google\n prompt_template:\n - edition_type: basic\n id: 12b5ec7e-4db6-4b84-90ab-e0de3a45e97a\n role: system\n text: ''\n - id: e758d19f-6c21-4ca6-8d8d-e4f3387c5c8f\n role: user\n text: \"分析港股 {{#1741711639874.output#}}:\\n 技术指标概要:\\n{{#1741663437132.technical_summary#}}\\n\\\n 近14日交易数据:\\n{{#1741663437132.recent_data#}}\\n请提供:\\n1. 趋势分析(包含支撑位和压力位,港币计价)\\n\\\n 2. 成交量分析及其含义\\n3. 风险评估(包含波动率和港股市场特有风险)\\n4. 短期和中期目标价位(港币)\\n5. 关键技术位分析\\n\\\n 6. 具体交易建议(包含止损位)\\n请基于技术指标和港股市场特点进行分析,给出具体数据支持。\"\n selected: false\n title: 大语言模型港股票分析\n type: llm\n variables: []\n vision:\n enabled: false\n height: 126\n id: '17416703386570'\n position:\n x: 1854\n y: 622\n positionAbsolute:\n x: 1854\n y: 622\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: 对美股使用大语言模型来分析\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-V3\n provider: volcengine_maas\n prompt_template:\n - edition_type: basic\n id: 12b5ec7e-4db6-4b84-90ab-e0de3a45e97a\n role: system\n text: \"分析美股 {{#1741711639874.output#}}:\\n 技术指标概要:\\n{{#1741663437132.technical_summary#}}\\n\\\n 近14日交易数据:\\n{{#1741663437132.recent_data#}}\\n请提供:\\n1. 趋势分析(包含支撑位和压力位,美元计价)\\n\\\n 2. 成交量分析及其含义\\n3. 风险评估(包含波动率和美股市场特有风险)\\n4. 短期和中期目标价位(美元)\\n5. 关键技术位分析\\n\\\n 6. 具体交易建议(包含止损位)\\n请基于技术指标和美股市场特点进行分析,给出具体数据支持。\"\n selected: false\n title: 大语言模型美股票分析\n type: llm\n variables: []\n vision:\n enabled: false\n height: 126\n id: '17416704837760'\n position:\n x: 1854\n y: 788\n positionAbsolute:\n x: 1854\n y: 788\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-ai/DeepSeek-V2.5\n provider: siliconflow\n prompt_template:\n - edition_type: basic\n id: 12b5ec7e-4db6-4b84-90ab-e0de3a45e97a\n role: system\n text: \"分析基金 {{#1741711639874.output#}}:\\n 技术指标概要:\\n{{#1741663437132.technical_summary#}}\\n\\\n 近14日交易数据:\\n{{#1741663437132.recent_data#}}\\n请提供:\\n1. 净值走势分析(包含支撑位和压力位)\\n\\\n 2. 成交量分析及其对净值的影响\\n3. 风险评估(包含波动率和折溢价分析)\\n4. 短期和中期净值预测\\n5. 关键技术位分析\\n6. 申购赎回建议(包含止损位)\\n\\\n 请基于技术指标和市场表现进行分析,给出具体数据支持。\"\n selected: false\n title: '大语言模型基金分析 '\n type: llm\n variables: []\n vision:\n enabled: false\n height: 98\n id: '17416706257040'\n position:\n x: 1854\n y: 954\n positionAbsolute:\n x: 1854\n y: 954\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n author: 周辉\n desc: ''\n height: 131\n selected: false\n showAuthor: true\n text: '{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"本工作流调用第三方股票信息,通过股票信息发送给大模型由模型提供分析给出股票的买卖决策判断等信息,该工作流用到条件分支、变量聚合器、http请求、代码处理、大语言模型等组件\",\"type\":\"text\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"paragraph\",\"version\":1,\"textFormat\":0}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}'\n theme: blue\n title: ''\n type: ''\n width: 471\n height: 131\n id: '1741695699375'\n position:\n x: 38.16777964460357\n y: 622\n positionAbsolute:\n x: 38.16777964460357\n y: 622\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom-note\n width: 471\n - data:\n answer: '{{#17416703386570.text#}}'\n desc: ''\n selected: false\n title: 港股直接回复\n type: answer\n variables: []\n height: 103\n id: '1741698137000'\n position:\n x: 2158\n y: 622\n positionAbsolute:\n x: 2158\n y: 622\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: ' {{#17416704837760.text#}}'\n desc: ''\n selected: false\n title: 美股直接回复\n type: answer\n variables: []\n height: 103\n id: '1741698182821'\n position:\n x: 2158\n y: 788\n positionAbsolute:\n x: 2158\n y: 788\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#17416706257040.text#}}'\n desc: ''\n selected: false\n title: ETF LOF 直接回复\n type: answer\n variables: []\n height: 103\n id: '1741698215893'\n position:\n x: 2158\n y: 940\n positionAbsolute:\n x: 2158\n y: 940\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"def main(arg1: str, arg2: str) -> dict:\\n # 检查 arg1 是否有值\\n if\\\n \\ arg1:\\n result = arg1\\n # 如果 arg1 没有值,则检查 arg2\\n elif arg2:\\n\\\n \\ result = arg2\\n else:\\n # 如果两个参数都没有值,可以根据需要进行处理,这里选择返回空字符串\\n\\\n \\ result = \\\"\\\"\\n # 将结果封装成字典\\n return {'output': result}\"\n code_language: python3\n desc: ''\n outputs:\n output:\n children: null\n type: string\n selected: false\n title: 代码执行2个输入值合并\n type: code\n variables:\n - value_selector:\n - '1741660271061'\n - stockcode1\n variable: arg1\n - value_selector:\n - '1741660271061'\n - stockcode2\n variable: arg2\n height: 54\n id: '1741711639874'\n position:\n x: 631.2045307714131\n y: 469.7301778750681\n positionAbsolute:\n x: 631.2045307714131\n y: 469.7301778750681\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: 124.99218234652903\n y: 13.158016708250557\n zoom: 0.8324449805019046\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":22850,"content_sha256":"a6686d8d1828a1424a3a7d57f7f6b5a6a80c388359b1066d6ecbfd47f39d5e86"},{"filename":"organized_dsl/05_文档处理与OCR/PDF解析/66-dify案例分享-效率飙升!借助大模型,Dify 轻松实现 PPT 到 SVG 海报的华丽变身_合合版.yml","content":"app:\n description: ''\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 66-dify案例分享-效率飙升!借助大模型,Dify 轻松实现 PPT 到 SVG 海报的华丽变身_合合版\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/openai_api_compatible:0.0.16@77274df8fe2632cac66bfd153fcc75aa5e96abbe92b5c611b8984ad9f4cd4457\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: textin/pdf2markdown:1.1.0@b07a97720ff1f7bac9595eef5febbffd3a1cc6514e86d2d91d1d8cee927758a8\nkind: app\nversion: 0.3.0\nworkflow:\n conversation_variables: []\n environment_variables: []\n features:\n file_upload:\n allowed_file_extensions: []\n allowed_file_types:\n - document\n allowed_file_upload_methods:\n - remote_url\n - local_file\n enabled: true\n fileUploadConfig:\n audio_file_size_limit: 500\n batch_count_limit: 10\n file_size_limit: 100\n image_file_size_limit: 100\n video_file_size_limit: 500\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInLoop: false\n sourceType: llm\n targetType: answer\n id: 1750402968238-source-1750554197380-target\n source: '1750402968238'\n sourceHandle: source\n target: '1750554197380'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: start\n targetType: tool\n id: 1744785564443-source-1750558752576-target\n source: '1744785564443'\n sourceHandle: source\n target: '1750558752576'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: tool\n targetType: code\n id: 1750558752576-source-1750559733255-target\n source: '1750558752576'\n sourceHandle: source\n target: '1750559733255'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: llm\n id: 1750559733255-source-1750402968238-target\n source: '1750559733255'\n sourceHandle: source\n target: '1750402968238'\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - document\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: file\n max_length: 48\n options: []\n required: true\n type: file\n variable: file\n height: 89\n id: '1744785564443'\n position:\n x: -31.341962120695257\n y: 223.38017555061964\n positionAbsolute:\n x: -31.341962120695257\n y: 223.38017555061964\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params: {}\n mode: chat\n name: gemini-2.5-flash-preview-05-20\n provider: langgenius/openai_api_compatible/openai_api_compatible\n prompt_template:\n - id: 50266a16-5614-423c-9641-9f63e5754699\n role: system\n text: \"# Role: SVG海报设计专家\\n\\n## Profile\\n- Author: 周辉\\n- Version: 1.0\\n-\\\n \\ Language: 中文\\n- Description: 我是一位专业的平面设计师和SVG技术专家,擅长将结构化的商业演示文稿(PPT)内容,提炼并转化为专业、信息丰富且视觉美观的多页A4宣传海报。我能够直接输出高质量、可直接使用的SVG代码。\\n\\\n \\n## Skills\\n1. **内容提炼与结构化**: 深度理解用户提供的PPT文字内容[1],精准捕捉并梳理其核心逻辑,如:客户痛点、产品优势、解决方案、应用场景等。\\n\\\n 2. **视觉与布局设计**:\\n - 根据内容进行专业的视觉布局,设计符合商业场景的、多页A4尺寸海报。\\n - 确保信息层次分明,使用标题、副标题、正文、列表等元素,实现良好的可读性。\\n\\\n \\ - 采用统一的商务色调(如蓝、灰、白),营造专业、稳重的视觉风格。\\n3. **SVG代码生成**:\\n - 精通SVG语法,能够生成结构清晰、代码简洁且符合W3C标准的SVG代码。\\n\\\n \\ - 代码中应包含字体、颜色、尺寸等样式定义,方便后续修改和维护。\\n - 能够将多页内容分别生成为独立的、完整的SVG代码块[previous_conversation]。\\n\\\n 4. **图标设计与嵌入**: 能够根据场景内容(如“安全”、“数据”、“权限”),智能设计并嵌入简洁、表意明确的SVG路径图标,提升海报的视觉表现力。\\n\\\n 5. **迭代与定制**: 支持根据用户的具体要求进行迭代修改,例如更新联系方式、调整某个模块的布局或文案。\\n\\n## Rules\\n\\\n 1. **最终产出**: 最终交付物**必须**是完整的、可以直接保存为 `.svg` 文件的代码块。\\n2. **禁止额外解释**:\\\n \\ 除了SVG代码本身,不要生成任何额外的解释、前言或总结性文字。\\n3. **严格遵循标准**:\\n - 严格遵循A4纸张尺寸(`width=\\\"\\\n 210mm\\\" height=\\\"297mm\\\"`)和对应的 `viewBox` 比例。\\n - 字体应使用通用、跨平台的安全字体(如\\\n \\ `Arial, 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif`)。\\n4. **分页处理**:\\\n \\ 若内容需要多页展示,**必须**为每一页生成一个独立的、完整的SVG代码块,并明确标注页码,如在代码注释或标题中注明“第1页”、“第2页”[previous_conversation]。\\n\\\n 5. **保持角色**: 始终以专业设计师的身份进行沟通和创作,确保产出物的专业性。\\n\\n## Workflow\\n1. **接收需求**:\\\n \\ 首先,我会请用户提供PPT的核心文字内容[1]。用户可以分点、分段或直接粘贴相关页面的文本。\\n2. **信息确认**: 如果信息不足或不清晰,我会主动提问以确认设计要点,例如:\\n\\\n \\ - \\\"海报的核心目标是什么?(是突出痛点,还是展示应用场景?)\\\"\\n - \\\"是否有特定的品牌色调或Logo需要整合?\\\"\\\n \\n - \\\"最终需要生成几页海报?\\\"\\n3. **设计与生成**:\\n - **第一步**: 根据提炼的信息,进行整体构思和布局设计。\\n\\\n \\ - **第二步**: 生成第一页(通常是痛点与核心优势)的SVG代码。\\n - **第三步**: 按顺序生成后续页面(如应用场景、联系方式)的SVG代码。\\n\\\n 4. **交付与反馈**: 交付所有页面的SVG代码,并等待用户的反馈。如果用户提出修改意见,我将基于`Skills-5`进行快速迭代。\\n\\\n \\n## Initialization\\n作为一名\u003cRole>,我将严格遵守\u003cRules>,并使用默认的\u003cLanguage>与您交流。现在,请开始吧。\\n\\\n 你好,我是您的专属SVG海报设计专家。请将您的PPT核心内容或关键要点告诉我,我将为您把它转换成专业、精美的SVG宣传海报。您可以指定海报的页数、风格和需要突出的信息,让我们即刻开始创作!\"\n - id: c49795e9-f6f3-4338-957e-a99efd848077\n role: user\n text: 请根据这个{{#1750559733255.result#}}帮我生成一个宣传海报,1-2页A4纸张内容覆盖内容即可,可以使用SVG方式生成\n selected: true\n title: 生成 SVG海报设计专家\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1750402968238'\n position:\n x: 857.2560767600751\n y: 223.38017555061964\n positionAbsolute:\n x: 857.2560767600751\n y: 223.38017555061964\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n answer: ' {{#1750402968238.text#}}'\n desc: ''\n selected: false\n title: ' SVG海报'\n type: answer\n variables: []\n height: 104\n id: '1750554197380'\n position:\n x: 1169.324583090553\n y: 218.833025806001\n positionAbsolute:\n x: 1169.324583090553\n y: 218.833025806001\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n desc: ''\n is_team_authorization: true\n output_schema: null\n paramSchemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Image or PDF URL\n ja_JP: Image or PDF URL\n pt_BR: Image or PDF URL\n zh_Hans: 图片、PDF等文件在线链接地址\n label:\n en_US: Image or PDF URL\n ja_JP: Image or PDF URL\n pt_BR: Image or PDF URL\n zh_Hans: 图片、PDF等文件在线链接地址\n llm_description: Image or PDF URL\n max: null\n min: null\n name: url\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: form\n human_description:\n en_US: x-ti-app-id\n ja_JP: x-ti-app-id\n pt_BR: x-ti-app-id\n zh_Hans: textin开发者账号的 x-ti-app-id\n label:\n en_US: x-ti-app-id\n ja_JP: x-ti-app-id\n pt_BR: x-ti-app-id\n zh_Hans: textin开发者账号的 x-ti-app-id\n llm_description: x-ti-app-id\n max: null\n min: null\n name: app_id\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: form\n human_description:\n en_US: x-ti-secret-code\n ja_JP: x-ti-secret-code\n pt_BR: x-ti-secret-code\n zh_Hans: textin开发者账号的 x-ti-secret-code\n label:\n en_US: x-ti-secret-code\n ja_JP: x-ti-secret-code\n pt_BR: x-ti-secret-code\n zh_Hans: textin开发者账号的 x-ti-secret-code\n llm_description: x-ti-secret-code\n max: null\n min: null\n name: secret_code\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: form\n human_description:\n en_US: Additional options (JSON string)\n ja_JP: Additional options (JSON string)\n pt_BR: Additional options (JSON string)\n zh_Hans: 更多自定义参数,以 JSON 字符串传入,参考 textin 官方应用示例,如 '{\"page_count\":1}'\n label:\n en_US: Additional options (JSON string)\n ja_JP: Additional options (JSON string)\n pt_BR: Additional options (JSON string)\n zh_Hans: 更多自定义参数,以 JSON 字符串传入,参考 textin 官方应用示例,如 '{\"page_count\":1}'\n llm_description: Additional options (JSON string)\n max: null\n min: null\n name: options\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n params:\n app_id: ''\n options: ''\n secret_code: ''\n url: ''\n provider_id: textin/pdf2markdown/pdf2markdown\n provider_name: textin/pdf2markdown/pdf2markdown\n provider_type: builtin\n selected: false\n title: 通用文档解析\n tool_configurations:\n app_id: \n options: null\n secret_code: \n tool_description: 专为大语言模型(LLM)下游任务设计,能够识别文档或图片中的文字信息,并智能还原文档的阅读顺序,输出标准化的Markdown格式。服务支持OCR识别,覆盖10+种常见文档版式,支持52+种语言,助力各类大模型在理解、生成、问答等场景中更高效地利用文档内容。\n tool_label: 通用文档解析\n tool_name: pdf2markdown\n tool_parameters:\n url:\n type: mixed\n value: '{{#1744785564443.file.url#}}'\n type: tool\n height: 141\n id: '1750558752576'\n position:\n x: 289.6044951485494\n y: 223.38017555061964\n positionAbsolute:\n x: 289.6044951485494\n y: 223.38017555061964\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n code: \"import json\\ndef main(arg1: str) -> dict: # 修改返回类型为 str\\n # 如果传入的是字典,直接使用;如果是字符串,则解析\\n\\\n \\ if isinstance(arg1, str):\\n data = json.loads(arg1)\\n elif\\\n \\ isinstance(arg1, list):\\n # 如果是列表,取第一个元素\\n data = arg1[0]\\\n \\ if arg1 else {}\\n elif isinstance(arg1, dict):\\n # 如果已经是字典,直接使用\\n\\\n \\ data = arg1\\n else:\\n # 其他类型,返回错误\\n return {\\\"\\\n result\\\": \\\"\\\", \\\"error\\\": f\\\"不支持的输入类型: {type(arg1)}\\\"}\\n markdown =\\\n \\ data['markdown']\\n \\n return {\\n \\\"result\\\": markdown,\\n\\\n \\ }\"\n code_language: python3\n desc: ''\n outputs:\n result:\n children: null\n type: string\n selected: false\n title: 代码执行\n type: code\n variables:\n - value_selector:\n - '1750558752576'\n - json\n variable: arg1\n height: 53\n id: '1750559733255'\n position:\n x: 571.5435011398671\n y: 223.38017555061964\n positionAbsolute:\n x: 571.5435011398671\n y: 223.38017555061964\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n viewport:\n x: 10.406522029430562\n y: 57.13368349390612\n zoom: 1.319507897689247\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":15432,"content_sha256":"e115ddb6f975bd335de08a29119a7215727ff825d0eb23d0f5eb0270def4af6e"},{"filename":"organized_dsl/05_文档处理与OCR/PDF解析/66-dify案例分享-效率飙升!借助大模型,Dify 轻松实现 PPT 到 SVG 海报的华丽变身-MinerU版.yml","content":"app:\n description: ''\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 66-dify案例分享-效率飙升!借助大模型,Dify 轻松实现 PPT 到 SVG 海报的华丽变身-MinerU版\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/openai_api_compatible:0.0.16@77274df8fe2632cac66bfd153fcc75aa5e96abbe92b5c611b8984ad9f4cd4457\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/mineru:0.2.0@5ec4527d658becf0b3c0946c2a6f4328fa43fd270e2d1f1713af4a6748ac4b61\nkind: app\nversion: 0.3.0\nworkflow:\n conversation_variables: []\n environment_variables: []\n features:\n file_upload:\n allowed_file_extensions: []\n allowed_file_types:\n - document\n allowed_file_upload_methods:\n - remote_url\n - local_file\n enabled: true\n fileUploadConfig:\n audio_file_size_limit: 500\n batch_count_limit: 10\n file_size_limit: 100\n image_file_size_limit: 100\n video_file_size_limit: 500\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: start\n targetType: tool\n id: 1744785564443-source-1750553534724-target\n source: '1744785564443'\n sourceHandle: source\n target: '1750553534724'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: tool\n targetType: llm\n id: 1750553534724-source-1750402968238-target\n source: '1750553534724'\n sourceHandle: source\n target: '1750402968238'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: llm\n targetType: answer\n id: 1750402968238-source-1750554197380-target\n source: '1750402968238'\n sourceHandle: source\n target: '1750554197380'\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - document\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: file\n max_length: 48\n options: []\n required: true\n type: file\n variable: file\n height: 89\n id: '1744785564443'\n position:\n x: 130.08185381326814\n y: 237.77948307524548\n positionAbsolute:\n x: 130.08185381326814\n y: 237.77948307524548\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params: {}\n mode: chat\n name: gemini-2.5-flash-preview-05-20\n provider: langgenius/openai_api_compatible/openai_api_compatible\n prompt_template:\n - id: 50266a16-5614-423c-9641-9f63e5754699\n role: system\n text: \"# Role: SVG海报设计专家\\n\\n## Profile\\n- Author: 周辉\\n- Version: 1.0\\n-\\\n \\ Language: 中文\\n- Description: 我是一位专业的平面设计师和SVG技术专家,擅长将结构化的商业演示文稿(PPT)内容,提炼并转化为专业、信息丰富且视觉美观的多页A4宣传海报。我能够直接输出高质量、可直接使用的SVG代码。\\n\\\n \\n## Skills\\n1. **内容提炼与结构化**: 深度理解用户提供的PPT文字内容[1],精准捕捉并梳理其核心逻辑,如:客户痛点、产品优势、解决方案、应用场景等。\\n\\\n 2. **视觉与布局设计**:\\n - 根据内容进行专业的视觉布局,设计符合商业场景的、多页A4尺寸海报。\\n - 确保信息层次分明,使用标题、副标题、正文、列表等元素,实现良好的可读性。\\n\\\n \\ - 采用统一的商务色调(如蓝、灰、白),营造专业、稳重的视觉风格。\\n3. **SVG代码生成**:\\n - 精通SVG语法,能够生成结构清晰、代码简洁且符合W3C标准的SVG代码。\\n\\\n \\ - 代码中应包含字体、颜色、尺寸等样式定义,方便后续修改和维护。\\n - 能够将多页内容分别生成为独立的、完整的SVG代码块[previous_conversation]。\\n\\\n 4. **图标设计与嵌入**: 能够根据场景内容(如“安全”、“数据”、“权限”),智能设计并嵌入简洁、表意明确的SVG路径图标,提升海报的视觉表现力。\\n\\\n 5. **迭代与定制**: 支持根据用户的具体要求进行迭代修改,例如更新联系方式、调整某个模块的布局或文案。\\n\\n## Rules\\n\\\n 1. **最终产出**: 最终交付物**必须**是完整的、可以直接保存为 `.svg` 文件的代码块。\\n2. **禁止额外解释**:\\\n \\ 除了SVG代码本身,不要生成任何额外的解释、前言或总结性文字。\\n3. **严格遵循标准**:\\n - 严格遵循A4纸张尺寸(`width=\\\"\\\n 210mm\\\" height=\\\"297mm\\\"`)和对应的 `viewBox` 比例。\\n - 字体应使用通用、跨平台的安全字体(如\\\n \\ `Arial, 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif`)。\\n4. **分页处理**:\\\n \\ 若内容需要多页展示,**必须**为每一页生成一个独立的、完整的SVG代码块,并明确标注页码,如在代码注释或标题中注明“第1页”、“第2页”[previous_conversation]。\\n\\\n 5. **保持角色**: 始终以专业设计师的身份进行沟通和创作,确保产出物的专业性。\\n\\n## Workflow\\n1. **接收需求**:\\\n \\ 首先,我会请用户提供PPT的核心文字内容[1]。用户可以分点、分段或直接粘贴相关页面的文本。\\n2. **信息确认**: 如果信息不足或不清晰,我会主动提问以确认设计要点,例如:\\n\\\n \\ - \\\"海报的核心目标是什么?(是突出痛点,还是展示应用场景?)\\\"\\n - \\\"是否有特定的品牌色调或Logo需要整合?\\\"\\\n \\n - \\\"最终需要生成几页海报?\\\"\\n3. **设计与生成**:\\n - **第一步**: 根据提炼的信息,进行整体构思和布局设计。\\n\\\n \\ - **第二步**: 生成第一页(通常是痛点与核心优势)的SVG代码。\\n - **第三步**: 按顺序生成后续页面(如应用场景、联系方式)的SVG代码。\\n\\\n 4. **交付与反馈**: 交付所有页面的SVG代码,并等待用户的反馈。如果用户提出修改意见,我将基于`Skills-5`进行快速迭代。\\n\\\n \\n## Initialization\\n作为一名\u003cRole>,我将严格遵守\u003cRules>,并使用默认的\u003cLanguage>与您交流。现在,请开始吧。\\n\\\n 你好,我是您的专属SVG海报设计专家。请将您的PPT核心内容或关键要点告诉我,我将为您把它转换成专业、精美的SVG宣传海报。您可以指定海报的页数、风格和需要突出的信息,让我们即刻开始创作!\"\n - id: c49795e9-f6f3-4338-957e-a99efd848077\n role: user\n text: 请根据这个{{#1750553534724.text#}}帮我生成一个宣传海报,1-2页A4纸张内容覆盖内容即可,可以使用SVG方式生成\n selected: false\n title: 生成 SVG海报设计专家\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1750402968238'\n position:\n x: 786.7752557184851\n y: 237.77948307524548\n positionAbsolute:\n x: 786.7752557184851\n y: 237.77948307524548\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n desc: ''\n is_team_authorization: true\n output_schema:\n properties:\n full_zip_url:\n description: The zip URL of the complete parsed result\n type: string\n images:\n description: The images extracted from the file\n items:\n type: object\n type: array\n type: object\n paramSchemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: the file to be parsed(support pdf, ppt, pptx, doc, docx, png, jpg,\n jpeg)\n ja_JP: 解析するファイル(pdf、ppt、pptx、doc、docx、png、jpg、jpegをサポート)\n pt_BR: the file to be parsed(support pdf, ppt, pptx, doc, docx, png, jpg,\n jpeg)\n zh_Hans: 用于解析的文件(支持 pdf, ppt, pptx, doc, docx, png, jpg, jpeg)\n label:\n en_US: file\n ja_JP: file\n pt_BR: file\n zh_Hans: file\n llm_description: the file to be parsed (support pdf, ppt, pptx, doc, docx,\n png, jpg, jpeg)\n max: null\n min: null\n name: file\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: file\n - auto_generate: null\n default: auto\n form: form\n human_description:\n en_US: (For local deployment service)Parsing method, can be auto, ocr,\n or txt. Default is auto. If results are not satisfactory, try ocr\n ja_JP: (ローカルデプロイメントサービス用)解析方法は、auto、ocr、またはtxtのいずれかです。デフォルトはautoです。結果が満足できない場合は、ocrを試してください\n pt_BR: (For local deployment service)Parsing method, can be auto, ocr,\n or txt. Default is auto. If results are not satisfactory, try ocr\n zh_Hans: (用于本地部署服务)解析方法,可以是auto, ocr, 或 txt。默认是auto。如果结果不理想,请尝试ocr\n label:\n en_US: parse method\n ja_JP: 解析方法\n pt_BR: parse method\n zh_Hans: 解析方法\n llm_description: Parsing method, can be auto, ocr, or txt. Default is auto.\n If results are not satisfactory, try ocr\n max: null\n min: null\n name: parse_method\n options:\n - label:\n en_US: auto\n ja_JP: auto\n pt_BR: auto\n zh_Hans: auto\n value: auto\n - label:\n en_US: ocr\n ja_JP: ocr\n pt_BR: ocr\n zh_Hans: ocr\n value: ocr\n - label:\n en_US: txt\n ja_JP: txt\n pt_BR: txt\n zh_Hans: txt\n value: txt\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: select\n - auto_generate: null\n default: 1\n form: form\n human_description:\n en_US: (For official API) Whether to enable formula recognition\n ja_JP: (公式API用)数式認識を有効にするかどうか\n pt_BR: (For official API) Whether to enable formula recognition\n zh_Hans: (用于官方API)是否开启公式识别\n label:\n en_US: Enable formula recognition\n ja_JP: 数式認識を有効にする\n pt_BR: Enable formula recognition\n zh_Hans: 开启公式识别\n llm_description: (For official API) Whether to enable formula recognition\n max: null\n min: null\n name: enable_formula\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: boolean\n - auto_generate: null\n default: 1\n form: form\n human_description:\n en_US: (For official API) Whether to enable table recognition\n ja_JP: (公式API用)表認識を有効にするかどうか\n pt_BR: (For official API) Whether to enable table recognition\n zh_Hans: (用于官方API)是否开启表格识别\n label:\n en_US: Enable table recognition\n ja_JP: 表認識を有効にする\n pt_BR: Enable table recognition\n zh_Hans: 开启表格识别\n llm_description: (For official API) Whether to enable table recognition\n max: null\n min: null\n name: enable_table\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: boolean\n - auto_generate: null\n default: doclayout_yolo\n form: form\n human_description:\n en_US: '(For official API) Optional values: doclayout_yolo, layoutlmv3,\n default value is doclayout_yolo. doclayout_yolo is a self-developed\n model with better effect'\n ja_JP: (公式API用)オプション値:doclayout_yolo、layoutlmv3、デフォルト値は doclayout_yolo。doclayout_yolo\n は自己開発モデルで、効果がより良い\n pt_BR: '(For official API) Optional values: doclayout_yolo, layoutlmv3,\n default value is doclayout_yolo. doclayout_yolo is a self-developed\n model with better effect'\n zh_Hans: (用于官方API)可选值:doclayout_yolo、layoutlmv3,默认值为 doclayout_yolo。doclayout_yolo\n 为自研模型,效果更好\n label:\n en_US: Layout model\n ja_JP: レイアウト検出モデル\n pt_BR: Layout model\n zh_Hans: 布局检测模型\n llm_description: '(For official API) Optional values: doclayout_yolo, layoutlmv3,\n default value is doclayout_yolo. doclayout_yolo is a self-developed model\n withbetter effect'\n max: null\n min: null\n name: layout_model\n options:\n - label:\n en_US: doclayout_yolo\n ja_JP: doclayout_yolo\n pt_BR: doclayout_yolo\n zh_Hans: doclayout_yolo\n value: doclayout_yolo\n - label:\n en_US: layoutlmv3\n ja_JP: layoutlmv3\n pt_BR: layoutlmv3\n zh_Hans: layoutlmv3\n value: layoutlmv3\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: select\n - auto_generate: null\n default: auto\n form: form\n human_description:\n en_US: '(For official API) Specify document language, default ch, can\n be set to auto, when auto, the model will automatically identify document\n language, other optional value list see: https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5'\n ja_JP: (公式API用)ドキュメント言語を指定します。デフォルトはchで、autoに設定できます。autoの場合、モデルはドキュメント言語を自動的に識別します。他のオプション値リストについては、次を参照してください:https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5\n pt_BR: '(For official API) Specify document language, default ch, can\n be set to auto, when auto, the model will automatically identify document\n language, other optional value list see: https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5'\n zh_Hans: (用于官方API)指定文档语言,默认 ch,可以设置为auto,当为auto时模型会自动识别文档语言,其他可选值列表详见:https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5\n label:\n en_US: Document language\n ja_JP: ドキュメント言語\n pt_BR: Document language\n zh_Hans: 文档语言\n llm_description: '(For official API) Specify document language, default\n ch, can be set to auto, when auto, the model will automatically identify\n document language, other optional value list see: https://paddlepaddle.github.io/PaddleOCR/latest/ppocr/blog/multi_languages.html#5'\n max: null\n min: null\n name: language\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: 0\n form: form\n human_description:\n en_US: (For official API) Whether to enable OCR recognition\n ja_JP: (公式API用)OCR認識を有効にするかどうか\n pt_BR: (For official API) Whether to enable OCR recognition\n zh_Hans: (用于官方API)是否开启OCR识别\n label:\n en_US: Enable OCR recognition\n ja_JP: OCR認識を有効にする\n pt_BR: Enable OCR recognition\n zh_Hans: 开启OCR识别\n llm_description: (For official API) Whether to enable OCR recognition\n max: null\n min: null\n name: enable_ocr\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: boolean\n - auto_generate: null\n default: '[]'\n form: form\n human_description:\n en_US: '(For official API) Example: [\"docx\",\"html\"], markdown, json are\n the default export formats, no need to set, this parameter only supports\n one or more of docx, html, latex'\n ja_JP: (公式API用)例:[\"docx\",\"html\"]、markdown、jsonはデフォルトのエクスポート形式であり、設定する必要はありません。このパラメータは、docx、html、latexの3つの形式のいずれかまたは複数のみをサポートします\n pt_BR: '(For official API) Example: [\"docx\",\"html\"], markdown, json are\n the default export formats, no need to set, this parameter only supports\n one or more of docx, html, latex'\n zh_Hans: (用于官方API)示例:[\"docx\",\"html\"],markdown、json为默认导出格式,无须设置,该参数仅支持docx、html、latex三种格式中的一个或多个\n label:\n en_US: Extra export formats\n ja_JP: 追加のエクスポート形式\n pt_BR: Extra export formats\n zh_Hans: 额外导出格式\n llm_description: '(For official API) Example: [\"docx\",\"html\"], markdown,\n json are the default export formats, no need to set, this parameter only\n supports one or more of docx, html, latex'\n max: null\n min: null\n name: extra_formats\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n params:\n enable_formula: ''\n enable_ocr: ''\n enable_table: ''\n extra_formats: ''\n file: ''\n language: ''\n layout_model: ''\n parse_method: ''\n provider_id: langgenius/mineru/mineru\n provider_name: langgenius/mineru/mineru\n provider_type: builtin\n selected: false\n title: Parse File\n tool_configurations:\n enable_formula: 1\n enable_ocr: 0\n enable_table: 1\n extra_formats: '[]'\n language: auto\n layout_model: doclayout_yolo\n parse_method: auto\n tool_description: 一个用于解析文本,表格和图片的工具,支持pdf,pptx,docx等多种格式。支持英语,中文等多种语言\n tool_label: Parse File\n tool_name: parse-file\n tool_parameters:\n file:\n type: variable\n value:\n - '1744785564443'\n - file\n type: tool\n height: 245\n id: '1750553534724'\n position:\n x: 453.54161293779265\n y: 237.77948307524548\n positionAbsolute:\n x: 453.54161293779265\n y: 237.77948307524548\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n answer: ' {{#1750402968238.text#}}'\n desc: ''\n selected: true\n title: ' SVG海报'\n type: answer\n variables: []\n height: 104\n id: '1750554197380'\n position:\n x: 1147.9293762343543\n y: 237.77948307524548\n positionAbsolute:\n x: 1147.9293762343543\n y: 237.77948307524548\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n viewport:\n x: -228.00481105291828\n y: 161.92204467179403\n zoom: 1.0717734465954576\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":22019,"content_sha256":"8af2b2170a82b2eb8cf7e2cfe62482810a75fd917fc6760663662358657a2897"},{"filename":"organized_dsl/05_文档处理与OCR/PDF解析/67-dify案例分享-用 Dify 一键生成 长安的荔枝金句 HTML 页面,三步搞定!.yml","content":"app:\n description: ''\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 67-dify案例分享-用 Dify 一键生成 长安的荔枝金句 HTML 页面,三步搞定!\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/volcengine_maas:0.0.20@aff2eaf766b1774519c3ca0e77de0b28c87b71cce6390b22a103518e8a5e4ae7\nkind: app\nversion: 0.3.0\nworkflow:\n conversation_variables: []\n environment_variables:\n - description: ''\n id: 37c0fd7e-ba1f-4417-9cb6-2e719b9238c0\n name: apiurl\n selector:\n - env\n - apiurl\n value: http://14.103.204.132:8080/generate-html/\n value_type: string\n - description: ''\n id: 7149dc92-db46-4db9-bb7a-f46830becdac\n name: apikey\n selector:\n - env\n - apikey\n value: sk-zhouhui1122444\n value_type: string\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 500\n batch_count_limit: 10\n file_size_limit: 100\n image_file_size_limit: 100\n video_file_size_limit: 500\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: start\n targetType: agent\n id: 1750771695281-source-1750772708073-target\n selected: false\n source: '1750771695281'\n sourceHandle: source\n target: '1750772708073'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: agent\n targetType: llm\n id: 1750772708073-source-1750772983167-target\n selected: false\n source: '1750772708073'\n sourceHandle: source\n target: '1750772983167'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: code\n targetType: answer\n id: 1750930181769-source-1750931224218-target\n source: '1750930181769'\n sourceHandle: source\n target: '1750931224218'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: llm\n targetType: code\n id: 1750772983167-source-1750930181769-target\n source: '1750772983167'\n sourceHandle: source\n target: '1750930181769'\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables: []\n height: 53\n id: '1750771695281'\n position:\n x: -25\n y: 291\n positionAbsolute:\n x: -25\n y: 291\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n agent_parameters:\n instruction:\n type: constant\n value: 请根据用户输入{{#sys.query#}}调用web_search实现联网搜索查询\n mcp_server:\n type: constant\n value: https://open.bigmodel.cn/api/mcp/web_search/sse?Authorization=你的智普API\n model:\n type: constant\n value:\n completion_params: {}\n mode: chat\n model: glm-4-flash\n model_type: llm\n provider: langgenius/zhipuai/zhipuai\n type: model-selector\n query:\n type: constant\n value: '{{#sys.query#}}'\n tools:\n type: constant\n value:\n - enabled: true\n extra:\n description: 通过HTTP with SSE传输来列出MCP服务端工具。\n parameters:\n headers:\n auto: 1\n value: null\n server_url:\n auto: 1\n value: null\n sse_read_timeout:\n auto: 1\n value: null\n timeout:\n auto: 1\n value: null\n provider_name: arrenxxxxx/mcp_config_during_use/mcp_config\n schemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: The URL of the MCP Server with SSE endpoint.\n ja_JP: The URL of the MCP Server with SSE endpoint.\n pt_BR: The URL of the MCP Server with SSE endpoint.\n zh_Hans: MCP服务器的SSE端点URL。\n label:\n en_US: Server URL\n ja_JP: Server URL\n pt_BR: Server URL\n zh_Hans: 服务器地址\n llm_description: The URL of the MCP Server with SSE endpoint.\n max: null\n min: null\n name: server_url\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: HTTP headers in JSON format (e.g. {\"Authorization\":\"Bearer\n token\"}).\n ja_JP: HTTP headers in JSON format (e.g. {\"Authorization\":\"Bearer\n token\"}).\n pt_BR: HTTP headers in JSON format (e.g. {\"Authorization\":\"Bearer\n token\"}).\n zh_Hans: HTTP请求头,JSON格式(例如:{\"Authorization\":\"Bearer token\"})。\n label:\n en_US: Headers\n ja_JP: Headers\n pt_BR: Headers\n zh_Hans: 请求头\n llm_description: HTTP headers in JSON format (e.g. {\"Authorization\":\"Bearer\n token\"}).\n max: null\n min: null\n name: headers\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: 60\n form: llm\n human_description:\n en_US: HTTP request timeout in seconds.\n ja_JP: HTTP request timeout in seconds.\n pt_BR: HTTP request timeout in seconds.\n zh_Hans: HTTP请求超时时间(秒)。\n label:\n en_US: Timeout\n ja_JP: Timeout\n pt_BR: Timeout\n zh_Hans: 超时时间\n llm_description: HTTP request timeout in seconds.\n max: null\n min: null\n name: timeout\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: number\n - auto_generate: null\n default: 300\n form: llm\n human_description:\n en_US: SSE read timeout in seconds (time to wait for SSE events).\n ja_JP: SSE read timeout in seconds (time to wait for SSE events).\n pt_BR: SSE read timeout in seconds (time to wait for SSE events).\n zh_Hans: SSE读取超时时间(秒)(等待SSE事件的时间)。\n label:\n en_US: SSE Read Timeout\n ja_JP: SSE Read Timeout\n pt_BR: SSE Read Timeout\n zh_Hans: SSE读取超时\n llm_description: SSE read timeout in seconds (time to wait for SSE\n events).\n max: null\n min: null\n name: sse_read_timeout\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: number\n settings: {}\n tool_description: 通过HTTP with SSE传输来列出MCP服务端工具。\n tool_label: 列出MCP工具\n tool_name: mcp_list_tools\n type: builtin\n - enabled: true\n extra:\n description: 通过HTTP with SSE传输来调用MCP服务端工具。\n parameters:\n arguments:\n auto: 1\n value: null\n headers:\n auto: 1\n value: null\n server_url:\n auto: 1\n value: null\n sse_read_timeout:\n auto: 1\n value: null\n timeout:\n auto: 1\n value: null\n tool_name:\n auto: 1\n value: null\n provider_name: arrenxxxxx/mcp_config_during_use/mcp_config\n schemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: The URL of the MCP Server with SSE endpoint.\n ja_JP: The URL of the MCP Server with SSE endpoint.\n pt_BR: The URL of the MCP Server with SSE endpoint.\n zh_Hans: MCP服务器的SSE端点URL。\n label:\n en_US: Server URL\n ja_JP: Server URL\n pt_BR: Server URL\n zh_Hans: 服务器地址\n llm_description: The URL of the MCP Server with SSE endpoint.\n max: null\n min: null\n name: server_url\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: HTTP headers in JSON format (e.g. {\"Authorization\":\"Bearer\n token\"}).\n ja_JP: HTTP headers in JSON format (e.g. {\"Authorization\":\"Bearer\n token\"}).\n pt_BR: HTTP headers in JSON format (e.g. {\"Authorization\":\"Bearer\n token\"}).\n zh_Hans: HTTP请求头,JSON格式(例如:{\"Authorization\":\"Bearer token\"})。\n label:\n en_US: Headers\n ja_JP: Headers\n pt_BR: Headers\n zh_Hans: 请求头\n llm_description: HTTP headers in JSON format (e.g. {\"Authorization\":\"Bearer\n token\"}).\n max: null\n min: null\n name: headers\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: 60\n form: llm\n human_description:\n en_US: HTTP request timeout in seconds.\n ja_JP: HTTP request timeout in seconds.\n pt_BR: HTTP request timeout in seconds.\n zh_Hans: HTTP请求超时时间(秒)。\n label:\n en_US: Timeout\n ja_JP: Timeout\n pt_BR: Timeout\n zh_Hans: 超时时间\n llm_description: HTTP request timeout in seconds.\n max: null\n min: null\n name: timeout\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: number\n - auto_generate: null\n default: 300\n form: llm\n human_description:\n en_US: SSE read timeout in seconds (time to wait for SSE events).\n ja_JP: SSE read timeout in seconds (time to wait for SSE events).\n pt_BR: SSE read timeout in seconds (time to wait for SSE events).\n zh_Hans: SSE读取超时时间(秒)(等待SSE事件的时间)。\n label:\n en_US: SSE Read Timeout\n ja_JP: SSE Read Timeout\n pt_BR: SSE Read Timeout\n zh_Hans: SSE读取超时\n llm_description: SSE read timeout in seconds (time to wait for SSE\n events).\n max: null\n min: null\n name: sse_read_timeout\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: number\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Name of the tool to execute.\n ja_JP: Name of the tool to execute.\n pt_BR: Name of the tool to execute.\n zh_Hans: 要执行的工具的名称。\n label:\n en_US: Tool Name\n ja_JP: Tool Name\n pt_BR: Tool Name\n zh_Hans: 工具名称\n llm_description: Name of the tool to execute.\n max: null\n min: null\n name: tool_name\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Tool arguments (JSON string in the python dict[str, Any]\n format).\n ja_JP: Tool arguments (JSON string in the python dict[str, Any]\n format).\n pt_BR: Tool arguments (JSON string in the python dict[str, Any]\n format).\n zh_Hans: 工具的参数,JSON格式的字符串(Python dict[str, Any]格式)。\n label:\n en_US: Arguments\n ja_JP: Arguments\n pt_BR: Arguments\n zh_Hans: 参数\n llm_description: Tool arguments (JSON string in the python dict[str,\n Any] format).\n max: null\n min: null\n name: arguments\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n settings: {}\n tool_description: 通过HTTP with SSE传输来调用MCP服务端工具。\n tool_label: 调用MCP工具\n tool_name: mcp_call_tool\n type: builtin\n agent_strategy_label: MCP FunctionCalling\n agent_strategy_name: function_calling\n agent_strategy_provider_name: hjlarry/agent/mcp_agent\n desc: ''\n output_schema: null\n plugin_unique_identifier: hjlarry/agent:0.0.1@f42a5a80b1c77fd0655c755b70ad08da47ceb1acc3638cf13a0eb9ed42b3a128\n selected: false\n title: Agent\n type: agent\n height: 197\n id: '1750772708073'\n position:\n x: 277.81225239232936\n y: 291\n positionAbsolute:\n x: 277.81225239232936\n y: 291\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params: {}\n mode: chat\n name: Doubao-Seed-1.6\n provider: langgenius/volcengine_maas/volcengine_maas\n prompt_template:\n - id: 6cd19724-8b18-43bd-a927-e6364ba97815\n role: system\n text: \"你是一位专业的HTML动态网页提示词专家,能够根据给定的内容和设计要求生成高质量的HTML代码。\\n你需要根据用户提供的内容和设计要求,生成符合规范的HTML代码,确保代码具有良好的结构、性能和可维护性,准确实现用户描述的视觉效果和交互体验。\\n\\\n 以下是你需要展示在网页中的具体内容:\\n\u003ccontent>\\n{{CONTENT}}\\n\u003c/content>\\n这里是额外的设计要求:\\n\\\n \u003cdesign_requirements>\\n{{DESIGN_REQUIREMENTS}}\\n\u003c/design_requirements>\\n\\\n 在生成HTML代码时,请遵循以下步骤和要求:\\n1. 分析上述内容和设计要求。\\n2. 规划网页结构和布局,严格按照Bento Grid风格设计布局。\\n\\\n 3. 编写HTML结构代码。\\n4. 集成TailwindCSS 3.0+样式,使用纯黑色背景和亮橙色作为主要配色。\\n5. 运用大小字体对比突出核心要点,中英文混用,中文使用大字体粗体,英文小字作为点缀。\\n\\\n 6. 使用简洁的勾线图形作为数据可视化或配图元素。\\n7. 应用高亮色自身的透明度渐变制造科技感。\\n8. 实现类似Apple官网的滚动动效。\\n\\\n 9. 集成在线图表组件,确保样式与主题一致。\\n10. 使用Framer Motion实现动画效果。\\n11. 集成专业图标库如Font Awesome或Material\\\n \\ Icons。\\n12. 优化代码结构和性能。\\n最后,请输出完整的HTML代码,不包含其他解释或评论,不使用emoji作为主要图标,确保所有外部资源(如CSS和JavaScript库)通过CDN引入。输出格式如下:\\n\\\n ```html\\n\u003c!DOCTYPE html>\\n\u003chtml lang=\\\"zh-CN\\\">\\n\u003chead>\\n \u003c!-- 元信息和资源引入\\\n \\ -->\\n\u003c/head>\\n\u003cbody>\\n \u003c!-- 页面内容 -->\\n \u003cscript>\\n // JavaScript代码\\n\\\n \\ \u003c/script>\\n\u003c/body>\\n\u003c/html>\\n```\"\n - id: 1d7c7040-80b2-46a2-b6c9-acc6c75ac119\n role: user\n text: 请根据用户输入的信息{{#1750772708073.text#}}生成HTML代码\n selected: false\n title: LLM\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1750772983167'\n position:\n x: 615.0198086136584\n y: 291\n positionAbsolute:\n x: 615.0198086136584\n y: 291\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n code: \"import json\\nimport re\\nimport time\\nimport requests\\n\\ndef main(json_html:\\\n \\ str, apikey: str,apiurl: str) -> dict:\\n try:\\n # 去除输入字符串中的\\\n \\ ```html 和 ``` 标记\\n match = re.search(r'```html\\\\s*([\\\\s\\\\S]*?)```',\\\n \\ json_html, re.DOTALL)\\n \\n if match:\\n # group(1)\\\n \\ 获取第一个捕获组的内容,即纯HTML代码\\n # .strip() 去除可能存在的前后空白\\n \\\n \\ html_content = match.group(1).strip()\\n else:\\n # 如果在输入中找不到HTML代码块,则返回错误\\n\\\n \\ raise ValueError(\\\"未能在输入中找到 ```html ... ``` 代码块。\\\")\\n \\\n \\ \\n # 生成时间戳,确保文件名唯一\\n timestamp = int(time.time())\\n \\\n \\ filename = f\\\"makehtml_{timestamp}.html\\\"\\n \\n # API端点(假设本地运行)\\n\\\n \\ url = f\\\"{apiurl}\\\"\\n \\n # 请求数据\\n payload\\\n \\ = {\\n \\\"html_content\\\": html_content,\\n \\\"filename\\\"\\\n : filename # 使用传入的文件名\\n }\\n \\n # 设置请求头(包含认证token)\\n\\\n \\ headers = {\\n \\\"Authorization\\\": f\\\"Bearer {apikey}\\\"\\\n , # 替换为实际的认证token\\n \\\"Content-Type\\\": \\\"application/json\\\"\\n\\\n \\ }\\n \\n try:\\n # 发送POST请求\\n \\\n \\ response = requests.post(url, json=payload, headers=headers)\\n \\\n \\ \\n # 检查响应状态\\n if response.status_code == 200:\\n\\\n \\ result = response.json()\\n html_url = result.get(\\\"\\\n html_url\\\", \\\"\\\")\\n generated_filename = result.get(\\\"filename\\\"\\\n , \\\"\\\")\\n \\n # 返回结果\\n return\\\n \\ {\\n \\\"html_url\\\": html_url,\\n \\\"\\\n filename\\\": generated_filename,\\n \\\"markdown_result\\\"\\\n : f\\\"[点击查看]({html_url})\\\"\\n }\\n else:\\n \\\n \\ raise Exception(f\\\"HTTP Error: {response.status_code}, Message:\\\n \\ {response.text}\\\")\\n \\n except requests.exceptions.RequestException\\\n \\ as e:\\n raise Exception(f\\\"Request failed: {str(e)}\\\")\\n \\\n \\ \\n except Exception as e:\\n return {\\n \\\"error\\\"\\\n : f\\\"Error: {str(e)}\\\"\\n }\"\n code_language: python3\n desc: ''\n outputs:\n filename:\n children: null\n type: string\n html_url:\n children: null\n type: string\n markdown_result:\n children: null\n type: string\n selected: true\n title: 代码执行\n type: code\n variables:\n - value_selector:\n - '1750772983167'\n - text\n variable: json_html\n - value_selector:\n - env\n - apikey\n variable: apikey\n - value_selector:\n - env\n - apiurl\n variable: apiurl\n height: 53\n id: '1750930181769'\n position:\n x: 936.1758624394756\n y: 291\n positionAbsolute:\n x: 936.1758624394756\n y: 291\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n answer: '{{#1750772708073.text#}}\n\n {{#1750930181769.html_url#}}\n\n {{#1750930181769.markdown_result#}}'\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 142\n id: '1750931224218'\n position:\n x: 1266.144168657622\n y: 291\n positionAbsolute:\n x: 1266.144168657622\n y: 291\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n viewport:\n x: -297.1441686576218\n y: 97.50000000000006\n zoom: 0.9999999999999998\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":24021,"content_sha256":"bb9c5d14f89ec8f502505d187051ff3c0cf4696f44b49ba5156a2ac2b301d144"},{"filename":"organized_dsl/05_文档处理与OCR/多模态OCR/69-dify案例分享-数学公式识别工作流.yml","content":"app:\n description: 69-数学公式识别工作流\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 69-数学公式识别工作流\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/tongyi:0.0.25@2b6f549753c8fe1b8d0bda620eb0611b549d6d809da691baf0692ee75f6c507f\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/openai_api_compatible:0.0.16@d41b09aca46cdd3876f70b4c91d464c4588fc0bdc844ced6ee426283ead6ce8e\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: kalochin/pdf_process:0.0.4@1fe29eabc04f0a11e79671d18adb8daa9b2ecc6dec6fdbc19e6825a15f7a236a\nkind: app\nversion: 0.3.0\nworkflow:\n conversation_variables: []\n environment_variables: []\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 50\n batch_count_limit: 5\n file_size_limit: 15\n image_file_size_limit: 10\n video_file_size_limit: 100\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: '你可以使用以下示例:\n\n http://syng8gt03.hn-bkt.clouddn.com/lQLPJwPs1uWTd0HNC1rNBf-w1wU4CI8ELfwHcziGPmDRAA_1535_2906.png'\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: start\n targetType: template-transform\n id: 1748759390938-source-1748759736345-target\n source: '1748759390938'\n sourceHandle: source\n target: '1748759736345'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: template-transform\n targetType: if-else\n id: 1748759736345-source-1748759775244-target\n source: '1748759736345'\n sourceHandle: source\n target: '1748759775244'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: if-else\n targetType: answer\n id: 1748759775244-false-1748759826270-target\n source: '1748759775244'\n sourceHandle: 'false'\n target: '1748759826270'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: if-else\n targetType: llm\n id: 1748759775244-e0791876-6819-4908-b272-a46d57cdcc98-llm-target\n source: '1748759775244'\n sourceHandle: e0791876-6819-4908-b272-a46d57cdcc98\n target: llm\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: if-else\n targetType: tool\n id: 1748759775244-true-1748759877060-target\n source: '1748759775244'\n sourceHandle: 'true'\n target: '1748759877060'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: tool\n targetType: llm\n id: 1748759877060-source-17487598836230-target\n source: '1748759877060'\n sourceHandle: source\n target: '17487598836230'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: llm\n targetType: variable-aggregator\n id: 17487598836230-source-1748761316621-target\n source: '17487598836230'\n sourceHandle: source\n target: '1748761316621'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: llm\n targetType: variable-aggregator\n id: llm-source-1748761316621-target\n source: llm\n sourceHandle: source\n target: '1748761316621'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: variable-aggregator\n targetType: llm\n id: 1748761316621-source-1748760896775-target\n source: '1748761316621'\n sourceHandle: source\n target: '1748760896775'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: http-request\n targetType: answer\n id: 1752139426629-source-answer-target\n source: '1752139426629'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: llm\n targetType: http-request\n id: 1748760896775-source-1752139426629-target\n source: '1748760896775'\n sourceHandle: source\n target: '1752139426629'\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - image\n - document\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: 上传的PDF文件和图片(pdf 或图片类型(png、jpeg、jpg、bmp、tiff)\n max_length: 48\n options: []\n required: true\n type: file\n variable: file\n height: 90\n id: '1748759390938'\n position:\n x: 84.24264068711932\n y: 411\n positionAbsolute:\n x: 84.24264068711932\n y: 411\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n memory:\n query_prompt_template: '{{#sys.query#}}'\n role_prefix:\n assistant: ''\n user: ''\n window:\n enabled: false\n size: 10\n model:\n completion_params: {}\n mode: chat\n name: qwen-vl-max-latest\n provider: langgenius/tongyi/tongyi\n prompt_template:\n - id: da610f82-6ea4-4ca0-8016-b6af948afd33\n role: system\n text: '# Role: OCR数学公式识别专家\n\n\n ## Profile\n\n - Author: geek\n\n - Version: 1.0\n\n - Language: 中文\n\n - Description: 完整的识别出数学公式,保留题目的完整性\n\n\n ## Rules\n\n 1. 保证识别出题目完整\n\n 2. 公式要保留原样输出\n\n 3. 只对内容还原,不做深度题目解析\n\n\n\n ## Example\n\n 数学领域广泛,公式众多,以下按不同分支为你列举一些常见数学公式:\n\n 算术与代数\n\n ​乘法分配律​:a(b+c)=ab+aca(b + c)=ab + aca(b+c)=ab+ac\n\n ​完全平方公式​:(a±b)2=a2±2ab+b2(a\\pm b)^2=a^2\\pm 2ab + b^2(a±b)2=a2±2ab+b2\n\n ​平方差公式​:a2−b2=(a+b)(a−b)a^2 - b^2=(a + b)(a - b)a2−b2=(a+b)(a−b)\n\n ​一元二次方程求根公式​:对于一元二次方程ax2+bx+c=0(a≠0)ax^{2}+bx + c = 0(a\\neq0)ax2+bx+c=0(a=0),其根为x=−b±b2−4ac2ax=\\frac{-b\\pm\\sqrt{b^{2}-4ac}}{2a}x=2a−b±b2−4ac​​,其中Δ=b2−4ac\\Delta=b^{2}-4acΔ=b2−4ac称为判别式\n\n 几何\n\n 平面几何\n\n ​三角形面积公式​:S=12ahS=\\frac{1}{2}ahS=21​ah(aaa为底边长,hhh为这条底边对应的高)\n\n ​圆的周长公式​:C=2πrC = 2\\pi rC=2πr(rrr为圆的半径)\n\n ​圆的面积公式​:S=πr2S=\\pi r^{2}S=πr2\n\n ​勾股定理​:在直角三角形中,两直角边aaa、bbb和斜边ccc满足a2+b2=c2a^{2}+b^{2}=c^{2}a2+b2=c2\n\n 立体几何\n\n ​长方体体积公式​:V=abcV = abcV=abc(aaa、bbb、ccc分别为长方体的长、宽、高)\n\n ​圆柱体积公式​:V=πr2hV=\\pi r^{2}hV=πr2h(rrr为底面半径,hhh为高)\n\n ​球体体积公式​:V=43πr3V=\\frac{4}{3}\\pi r^{3}V=34​πr3\n\n ​球体表面积公式​:S=4πr2S = 4\\pi r^{2}S=4πr2\n\n 三角函数\n\n ​正弦函数定义​:在直角三角形中,sin⁡α=对边斜边\\sin\\alpha=\\frac{对边}{斜边}sinα=斜边对边​;两角和公式sin⁡(α+β)=sin⁡αcos⁡β+cos⁡αsin⁡β\\sin(\\alpha+\\beta)=\\sin\\alpha\\cos\\beta+\\cos\\alpha\\sin\\betasin(α+β)=sinαcosβ+cosαsinβ\n\n ​余弦函数定义​:在直角三角形中,cos⁡α=邻边斜边\\cos\\alpha=\\frac{邻边}{斜边}cosα=斜边邻边​;两角和公式cos⁡(α+β)=cos⁡αcos⁡β−sin⁡αsin⁡β\\cos(\\alpha\n + \\beta)=\\cos\\alpha\\cos\\beta-\\sin\\alpha\\sin\\betacos(α+β)=cosαcosβ−sinαsinβ\n\n ​正切函数定义​:tan⁡α=sin⁡αcos⁡α\\tan\\alpha=\\frac{\\sin\\alpha}{\\cos\\alpha}tanα=cosαsinα​;两角和公式tan⁡(α+β)=tan⁡α+tan⁡β1−tan⁡αtan⁡β\\tan(\\alpha+\\beta)=\\frac{\\tan\\alpha+\\tan\\beta}{1\n - \\tan\\alpha\\tan\\beta}tan(α+β)=1−tanαtanβtanα+tanβ​\n\n 解析几何\n\n ​直线的斜截式方程​:y=kx+by = kx + by=kx+b(kkk为斜率,bbb为直线在yyy轴上的截距)\n\n ​圆的标准方程​:(x−a)2+(y−b)2=r2(x - a)^{2}+(y - b)^{2}=r^{2}(x−a)2+(y−b)2=r2((a,b)(a,b)(a,b)为圆心坐标,rrr为半径)\n\n ​椭圆的标准方程​:焦点在xxx轴上时x2a2+y2b2=1(a>b>0)\\frac{x^{2}}{a^{2}}+\\frac{y^{2}}{b^{2}}\n = 1(a\\gt b\\gt0)a2x2​+b2y2​=1(a>b>0);焦点在yyy轴上时y2a2+x2b2=1(a>b>0)\\frac{y^{2}}{a^{2}}+\\frac{x^{2}}{b^{2}}\n = 1(a\\gt b\\gt0)a2y2​+b2x2​=1(a>b>0)\n\n 微积分\n\n ​导数的定义​:函数y=f(x)y = f(x)y=f(x)在x=x0x = x_0x=x0​处的导数f′(x0)=lim⁡Δx→0f(x0+Δx)−f(x0)Δxf^\\prime(x_0)=\\lim\\limits_{\\Delta\n x\\to0}\\frac{f(x_0+\\Delta x)-f(x_0)}{\\Delta x}f′(x0​)=Δx→0lim​Δxf(x0​+Δx)−f(x0​)​\n\n ​基本求导公式​:(xn)′=nxn−1(x^n)^\\prime=nx^{n - 1}(xn)′=nxn−1,(sin⁡x)′=cos⁡x(\\sin\n x)^\\prime=\\cos x(sinx)′=cosx,(cos⁡x)′=−sin⁡x(\\cos x)^\\prime=-\\sin x(cosx)′=−sinx\n\n ​不定积分公式​:∫xndx=1n+1xn+1+C(n≠−1)\\int x^n dx=\\frac{1}{n + 1}x^{n+1}+C(n\\neq\n - 1)∫xndx=n+11​xn+1+C(n=−1),∫sin⁡xdx=−cos⁡x+C\\int\\sin xdx=-\\cos x + C∫sinxdx=−cosx+C,∫cos⁡xdx=sin⁡x+C\\int\\cos\n xdx=\\sin x + C∫cosxdx=sinx+C\n\n ​定积分定义​:∫abf(x)dx=lim⁡λ→0∑i=1nf(ξi)Δxi\\int_{a}^{b}f(x)dx=\\lim\\limits_{\\lambda\\to0}\\sum_{i\n = 1}^{n}f(\\xi_i)\\Delta x_i∫ab​f(x)dx=λ→0lim​∑i=1n​f(ξi​)Δxi​,牛顿 - 莱布尼茨公式∫abf(x)dx=F(b)−F(a)\\int_{a}^{b}f(x)dx=F(b)-F(a)∫ab​f(x)dx=F(b)−F(a),其中F(x)F(x)F(x)是f(x)f(x)f(x)的一个原函数\n\n 概率论与数理统计\n\n ​古典概型概率公式​:P(A)=mnP(A)=\\frac{m}{n}P(A)=nm​,其中nnn是基本事件总数,mmm是事件AAA所包含的基本事件数\n\n ​期望公式​:离散型随机变量XXX的期望E(X)=∑ixipiE(X)=\\sum_{i}x_ip_iE(X)=∑i​xi​pi​,连续型随机变量XXX的期望E(X)=∫−∞+∞xf(x)dxE(X)=\\int_{-\\infty}^{+\\infty}xf(x)dxE(X)=∫−∞+∞​xf(x)dx\n\n ​方差公式​:D(X)=E[(X−E(X))2]=E(X2)−[E(X)]2D(X)=E[(X - E(X))^2]=E(X^2)-[E(X)]^2D(X)=E[(X−E(X))2]=E(X2)−[E(X)]2'\n - id: 42116f32-71a3-44d1-89a6-d90c133af012\n role: user\n text: ''\n selected: false\n title: (图片OCR)\n type: llm\n variables: []\n vision:\n configs:\n detail: high\n variable_selector:\n - '1748759390938'\n - file\n enabled: true\n height: 96\n id: llm\n position:\n x: 1014.0448207626857\n y: 487.0224103813431\n positionAbsolute:\n x: 1014.0448207626857\n y: 487.0224103813431\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '\n\n {{#1748760896775.text#}}\n\n {{#1752139426629.body#}}\n\n\n '\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 124\n id: answer\n position:\n x: 2875.2492602336783\n y: 218.09243016955423\n positionAbsolute:\n x: 2875.2492602336783\n y: 218.09243016955423\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n desc: ''\n selected: false\n template: '{{ filetype }}'\n title: 模板转换\n type: template-transform\n variables:\n - value_selector:\n - '1748759390938'\n - file\n - mime_type\n variable: filetype\n height: 54\n id: '1748759736345'\n position:\n x: 380\n y: 411\n positionAbsolute:\n x: 380\n y: 411\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n cases:\n - case_id: 'true'\n conditions:\n - comparison_operator: contains\n id: 7f3a3f53-1909-4a47-906b-333716373025\n value: application/pdf\n varType: string\n variable_selector:\n - '1748759736345'\n - output\n id: 'true'\n logical_operator: and\n - case_id: e0791876-6819-4908-b272-a46d57cdcc98\n conditions:\n - comparison_operator: contains\n id: db17272a-2de5-4f80-938c-ecc6cf2d41b3\n value: image\n varType: string\n variable_selector:\n - '1748759736345'\n - output\n id: e0791876-6819-4908-b272-a46d57cdcc98\n logical_operator: and\n desc: ''\n selected: false\n title: 条件分支\n type: if-else\n height: 174\n id: '1748759775244'\n position:\n x: 684\n y: 411\n positionAbsolute:\n x: 684\n y: 411\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: 您输入的文件类型不是pdf和图片,请重新上传\n desc: ''\n selected: false\n title: 直接回复 2\n type: answer\n variables: []\n height: 118\n id: '1748759826270'\n position:\n x: 1014.0448207626857\n y: 721.9759164321474\n positionAbsolute:\n x: 1014.0448207626857\n y: 721.9759164321474\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n desc: ''\n is_team_authorization: true\n output_schema: null\n paramSchemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: PDF file to convert to PNG images\n ja_JP: PDF file to convert to PNG images\n pt_BR: PDF file to convert to PNG images\n zh_Hans: 要转换为PNG图片的PDF文件\n label:\n en_US: PDF Content\n ja_JP: PDF Content\n pt_BR: PDF Content\n zh_Hans: PDF 内容\n llm_description: PDF file content to be converted to PNG images\n max: null\n min: null\n name: pdf_content\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: file\n - auto_generate: null\n default: 2\n form: llm\n human_description:\n en_US: Zoom factor for image quality (default is 2)\n ja_JP: Zoom factor for image quality (default is 2)\n pt_BR: Zoom factor for image quality (default is 2)\n zh_Hans: 图像质量的缩放因子(默认为2)\n label:\n en_US: Zoom Factor\n ja_JP: Zoom Factor\n pt_BR: Zoom Factor\n zh_Hans: 缩放因子\n llm_description: Zoom factor to control the quality of output PNG images\n max: null\n min: null\n name: zoom\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: number\n params:\n pdf_content: ''\n zoom: ''\n provider_id: kalochin/pdf_process/pdf_process\n provider_name: kalochin/pdf_process/pdf_process\n provider_type: builtin\n selected: false\n title: PDF转PNG转换器\n tool_configurations: {}\n tool_description: 一个将PDF文件转换为PNG图片的工具\n tool_label: PDF转PNG转换器\n tool_name: pdf_to_png\n tool_parameters:\n pdf_content:\n type: variable\n value:\n - '1748759390938'\n - file\n type: tool\n height: 54\n id: '1748759877060'\n position:\n x: 1014.0448207626857\n y: 254.47786848307544\n positionAbsolute:\n x: 1014.0448207626857\n y: 254.47786848307544\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n memory:\n query_prompt_template: '{{#sys.query#}}'\n role_prefix:\n assistant: ''\n user: ''\n window:\n enabled: false\n size: 10\n model:\n completion_params: {}\n mode: chat\n name: gemini-2.5-pro-preview-05-06\n provider: langgenius/openai_api_compatible/openai_api_compatible\n prompt_template:\n - id: da610f82-6ea4-4ca0-8016-b6af948afd33\n role: system\n text: \"# Role: 衡水体英语作文评分专家\\n\\n## Profile\\n- Author: geek\\n- Version: 1.0\\n\\\n - Language: 中文\\n- Description: 专业评估英语作文的书写规范性和内容质量,提供详细的评分依据和建议\\n\\n##\\\n \\ Background\\n你是一位专门评估衡水体英语作文的专家,精通衡水体书写规范和英语写作要求。你的主要职责是对学生的英语作文进行全方位评估,包括书写规范和内容质量两个维度。\\n\\\n \\n## Constraints\\n- 严格遵循衡水体书写规范进行评分\\n- 保持评分标准的一致性和客观性\\n- 提供具体、可操作的改进建议\\n\\\n - 评分范围:0-100分\\n- 必须同时评估书写规范(50分)和内容质量(50分)\\n\\n## Skills\\n- 精准识别字母书写的规范性\\n\\\n - 评估作文结构和内容的完整性\\n- 分析语言运用的准确性和流畅度\\n- 提供有针对性的改进建议\\n\\n## Goals\\n- 对英语作文进行全面评估\\n\\\n - 给出详细的评分依据\\n- 提供具体的改进建议\\n\\n## Workflows\\n1. 书写规范评估(50分)\\n - 字母大小一致性(15分)\\n\\\n \\ - 间距均匀度(10分)\\n - 笔画连接规范性(10分)\\n - 字形圆润度(10分)\\n - 整体美观度(5分)\\n\\\n \\n2. 内容质量评估(50分)\\n - 主题明确性(10分)\\n - 结构完整性(10分)\\n - 语言流畅度(10分)\\n\\\n \\ - 词汇运用(10分)\\n - 句型多样性(10分)\\n\\n3. 评分等级划分\\n - 优秀:90-100分\\n - 良好:80-89分\\n\\\n \\ - 中等:70-79分\\n - 及格:60-69分\\n - 不及格:60分以下\\n\\n## OutputFormat\\n{\\n\\\n \\ \\\"总分\\\": \\\"数字\\\",\\n \\\"书写规范得分\\\": {\\n \\\"得分\\\": \\\"数字\\\",\\n \\\n \\ \\\"字母大小一致性\\\": \\\"得分 + 评价\\\",\\n \\\"间距均匀度\\\": \\\"得分 + 评价\\\",\\n \\\n \\ \\\"笔画连接规范性\\\": \\\"得分 + 评价\\\",\\n \\\"字形圆润度\\\": \\\"得分 + 评价\\\",\\n \\\n \\ \\\"整体美观度\\\": \\\"得分 + 评价\\\"\\n },\\n \\\"内容质量得分\\\": {\\n \\\"得分\\\"\\\n : \\\"数字\\\",\\n \\\"主题明确性\\\": \\\"得分 + 评价\\\",\\n \\\"结构完整性\\\": \\\"得分 +\\\n \\ 评价\\\",\\n \\\"语言流畅度\\\": \\\"得分 + 评价\\\",\\n \\\"词汇运用\\\": \\\"得分 + 评价\\\"\\\n ,\\n \\\"句型多样性\\\": \\\"得分 + 评价\\\"\\n },\\n \\\"等级\\\": \\\"优秀/良好/中等/及格/不及格\\\"\\\n ,\\n \\\"总体评价\\\": \\\"综合评价和建议\\\"\\n}\\n\\n## Rules\\n1. 评分必须客观公正,有理有据\\n2. 每个评分项目都需要给出具体的评分依据\\n\\\n 3. 建议必须具体且可操作\\n4. 评分需要考虑到电子阅卷的要求\\n5. 对于不同等级的作文,给出针对性的提升建议\\n\\n## Example\\n\\\n Human: 请评价这篇英语作文的书写规范和内容质量。\"\n - id: 42116f32-71a3-44d1-89a6-d90c133af012\n role: user\n text: ''\n selected: false\n title: (pdf转图片OCR)\n type: llm\n variables: []\n vision:\n configs:\n detail: high\n variable_selector:\n - '1748759877060'\n - files\n enabled: true\n height: 96\n id: '17487598836230'\n position:\n x: 1403.4974902202355\n y: 270.454900372896\n positionAbsolute:\n x: 1403.4974902202355\n y: 270.454900372896\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params: {}\n mode: chat\n name: qwen2.5-14b-instruct\n provider: langgenius/tongyi/tongyi\n prompt_template:\n - id: a88c8a60-81ba-4428-a175-2ff72be55e35\n role: system\n text: '数学公式识别专家\n\n 核心指令:\n\n 你是一位数学公式识别专家,专注数学公式的识别。请根据用户提交的内容,从两方面1.识别出内容的数学公式,2.并保证内容的完整性输出,不能只输出数学公式,要连题目描述一并输出。\n\n\n 书写规范:\n\n Markdown格式返回即可\n\n 示例输出:\n\n 数学领域广泛,公式众多,以下按不同分支为你列举一些常见数学公式:\n\n 算术与代数\n\n ​乘法分配律​:a(b+c)=ab+aca(b + c)=ab + aca(b+c)=ab+ac\n\n ​完全平方公式​:(a±b)2=a2±2ab+b2(a\\pm b)^2=a^2\\pm 2ab + b^2(a±b)2=a2±2ab+b2\n\n ​平方差公式​:a2−b2=(a+b)(a−b)a^2 - b^2=(a + b)(a - b)a2−b2=(a+b)(a−b)\n\n ​一元二次方程求根公式​:对于一元二次方程ax2+bx+c=0(a≠0)ax^{2}+bx + c = 0(a\\neq0)ax2+bx+c=0(a=0),其根为x=−b±b2−4ac2ax=\\frac{-b\\pm\\sqrt{b^{2}-4ac}}{2a}x=2a−b±b2−4ac​​,其中Δ=b2−4ac\\Delta=b^{2}-4acΔ=b2−4ac称为判别式\n\n 几何\n\n 平面几何\n\n ​三角形面积公式​:S=12ahS=\\frac{1}{2}ahS=21​ah(aaa为底边长,hhh为这条底边对应的高)\n\n ​圆的周长公式​:C=2πrC = 2\\pi rC=2πr(rrr为圆的半径)\n\n ​圆的面积公式​:S=πr2S=\\pi r^{2}S=πr2\n\n ​勾股定理​:在直角三角形中,两直角边aaa、bbb和斜边ccc满足a2+b2=c2a^{2}+b^{2}=c^{2}a2+b2=c2\n\n 立体几何\n\n ​长方体体积公式​:V=abcV = abcV=abc(aaa、bbb、ccc分别为长方体的长、宽、高)\n\n ​圆柱体积公式​:V=πr2hV=\\pi r^{2}hV=πr2h(rrr为底面半径,hhh为高)\n\n ​球体体积公式​:V=43πr3V=\\frac{4}{3}\\pi r^{3}V=34​πr3\n\n ​球体表面积公式​:S=4πr2S = 4\\pi r^{2}S=4πr2\n\n 三角函数\n\n ​正弦函数定义​:在直角三角形中,sin⁡α=对边斜边\\sin\\alpha=\\frac{对边}{斜边}sinα=斜边对边​;两角和公式sin⁡(α+β)=sin⁡αcos⁡β+cos⁡αsin⁡β\\sin(\\alpha+\\beta)=\\sin\\alpha\\cos\\beta+\\cos\\alpha\\sin\\betasin(α+β)=sinαcosβ+cosαsinβ\n\n ​余弦函数定义​:在直角三角形中,cos⁡α=邻边斜边\\cos\\alpha=\\frac{邻边}{斜边}cosα=斜边邻边​;两角和公式cos⁡(α+β)=cos⁡αcos⁡β−sin⁡αsin⁡β\\cos(\\alpha\n + \\beta)=\\cos\\alpha\\cos\\beta-\\sin\\alpha\\sin\\betacos(α+β)=cosαcosβ−sinαsinβ\n\n ​正切函数定义​:tan⁡α=sin⁡αcos⁡α\\tan\\alpha=\\frac{\\sin\\alpha}{\\cos\\alpha}tanα=cosαsinα​;两角和公式tan⁡(α+β)=tan⁡α+tan⁡β1−tan⁡αtan⁡β\\tan(\\alpha+\\beta)=\\frac{\\tan\\alpha+\\tan\\beta}{1\n - \\tan\\alpha\\tan\\beta}tan(α+β)=1−tanαtanβtanα+tanβ​\n\n 解析几何\n\n ​直线的斜截式方程​:y=kx+by = kx + by=kx+b(kkk为斜率,bbb为直线在yyy轴上的截距)\n\n ​圆的标准方程​:(x−a)2+(y−b)2=r2(x - a)^{2}+(y - b)^{2}=r^{2}(x−a)2+(y−b)2=r2((a,b)(a,b)(a,b)为圆心坐标,rrr为半径)\n\n ​椭圆的标准方程​:焦点在xxx轴上时x2a2+y2b2=1(a>b>0)\\frac{x^{2}}{a^{2}}+\\frac{y^{2}}{b^{2}}\n = 1(a\\gt b\\gt0)a2x2​+b2y2​=1(a>b>0);焦点在yyy轴上时y2a2+x2b2=1(a>b>0)\\frac{y^{2}}{a^{2}}+\\frac{x^{2}}{b^{2}}\n = 1(a\\gt b\\gt0)a2y2​+b2x2​=1(a>b>0)\n\n 微积分\n\n ​导数的定义​:函数y=f(x)y = f(x)y=f(x)在x=x0x = x_0x=x0​处的导数f′(x0)=lim⁡Δx→0f(x0+Δx)−f(x0)Δxf^\\prime(x_0)=\\lim\\limits_{\\Delta\n x\\to0}\\frac{f(x_0+\\Delta x)-f(x_0)}{\\Delta x}f′(x0​)=Δx→0lim​Δxf(x0​+Δx)−f(x0​)​\n\n ​基本求导公式​:(xn)′=nxn−1(x^n)^\\prime=nx^{n - 1}(xn)′=nxn−1,(sin⁡x)′=cos⁡x(\\sin\n x)^\\prime=\\cos x(sinx)′=cosx,(cos⁡x)′=−sin⁡x(\\cos x)^\\prime=-\\sin x(cosx)′=−sinx\n\n ​不定积分公式​:∫xndx=1n+1xn+1+C(n≠−1)\\int x^n dx=\\frac{1}{n + 1}x^{n+1}+C(n\\neq\n - 1)∫xndx=n+11​xn+1+C(n=−1),∫sin⁡xdx=−cos⁡x+C\\int\\sin xdx=-\\cos x + C∫sinxdx=−cosx+C,∫cos⁡xdx=sin⁡x+C\\int\\cos\n xdx=\\sin x + C∫cosxdx=sinx+C\n\n ​定积分定义​:∫abf(x)dx=lim⁡λ→0∑i=1nf(ξi)Δxi\\int_{a}^{b}f(x)dx=\\lim\\limits_{\\lambda\\to0}\\sum_{i\n = 1}^{n}f(\\xi_i)\\Delta x_i∫ab​f(x)dx=λ→0lim​∑i=1n​f(ξi​)Δxi​,牛顿 - 莱布尼茨公式∫abf(x)dx=F(b)−F(a)\\int_{a}^{b}f(x)dx=F(b)-F(a)∫ab​f(x)dx=F(b)−F(a),其中F(x)F(x)F(x)是f(x)f(x)f(x)的一个原函数\n\n 概率论与数理统计\n\n ​古典概型概率公式​:P(A)=mnP(A)=\\frac{m}{n}P(A)=nm​,其中nnn是基本事件总数,mmm是事件AAA所包含的基本事件数\n\n ​期望公式​:离散型随机变量XXX的期望E(X)=∑ixipiE(X)=\\sum_{i}x_ip_iE(X)=∑i​xi​pi​,连续型随机变量XXX的期望E(X)=∫−∞+∞xf(x)dxE(X)=\\int_{-\\infty}^{+\\infty}xf(x)dxE(X)=∫−∞+∞​xf(x)dx\n\n ​方差公式​:D(X)=E[(X−E(X))2]=E(X2)−[E(X)]2D(X)=E[(X - E(X))^2]=E(X^2)-[E(X)]^2D(X)=E[(X−E(X))2]=E(X2)−[E(X)]2\n\n\n 输出约束:\n\n 1.不光输出数学公式,要连题目一起输出,保证题目的完整性\n\n 2.数学公式可在word或者pdf中编辑。'\n - id: 10963b83-504d-45d3-b497-a049792ada66\n role: user\n text: 请根据{{#1748761316621.output#}}对这个数据内容进行完整的输出\n selected: false\n title: (基于json)\n type: llm\n variables: []\n vision:\n enabled: false\n height: 96\n id: '1748760896775'\n position:\n x: 1845.4197389538967\n y: 254.47786848307544\n positionAbsolute:\n x: 1845.4197389538967\n y: 254.47786848307544\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n desc: ''\n output_type: string\n selected: false\n title: 变量聚合器\n type: variable-aggregator\n variables:\n - - '17487598836230'\n - text\n - - llm\n - text\n height: 130\n id: '1748761316621'\n position:\n x: 1723.7019722965042\n y: 469.363585661015\n positionAbsolute:\n x: 1723.7019722965042\n y: 469.363585661015\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n authorization:\n config: null\n type: no-auth\n body:\n data:\n - id: key-value-5873\n key: ''\n type: text\n value: '{{#1748760896775.text#}}'\n type: raw-text\n desc: ''\n headers: ''\n method: post\n params: ''\n retry_config:\n max_retries: 3\n retry_enabled: true\n retry_interval: 100\n selected: false\n ssl_verify: true\n timeout:\n max_connect_timeout: 0\n max_read_timeout: 0\n max_write_timeout: 0\n title: HTTP 请求\n type: http-request\n url: http://192.168.31.115:15001/api/latextword\n variables: []\n height: 140\n id: '1752139426629'\n position:\n x: 2392.7702762929302\n y: 411\n positionAbsolute:\n x: 2392.7702762929302\n y: 411\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: -410.3654234024284\n y: -187.8858689214502\n zoom: 1.0352649238413776\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":30664,"content_sha256":"efc8006f632697b7b067f30439e02481723c3998ed7773b917f6d41157a59618"},{"filename":"organized_dsl/05_文档处理与OCR/多模态OCR/86-dify案例分享-Qwen3-VL+Dify:从作业 OCR 到视频字幕,多模态识别工作流一步教,附体验链接.yml","content":"app:\n description: ''\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 86-dify案例分享-Qwen3-VL+Dify:从作业 OCR 到视频字幕,多模态识别工作流一步教,附体验链接\n use_icon_as_answer_icon: false\ndependencies: []\nkind: app\nversion: 0.4.0\nworkflow:\n conversation_variables: []\n environment_variables:\n - description: ''\n id: f0a01507-2ccc-4d18-8a7f-51576ac1c27c\n name: apikey\n selector:\n - env\n - apikey\n value: sk-zhouhui1122444\n value_type: string\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 500\n batch_count_limit: 50\n file_size_limit: 100\n image_file_size_limit: 100\n video_file_size_limit: 500\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: http-request\n targetType: code\n id: 1759550367488-source-1759579779803-target\n source: '1759550367488'\n sourceHandle: source\n target: '1759579779803'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: answer\n id: 1759579779803-source-answer-target\n source: '1759579779803'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: start\n targetType: if-else\n id: 1759550301577-source-1759580723856-target\n source: '1759550301577'\n sourceHandle: source\n target: '1759580723856'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: if-else\n targetType: http-request\n id: 1759580723856-true-1759550367488-target\n source: '1759580723856'\n sourceHandle: 'true'\n target: '1759550367488'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: if-else\n targetType: http-request\n id: 1759580723856-false-1759580771575-target\n source: '1759580723856'\n sourceHandle: 'false'\n target: '1759580771575'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: http-request\n targetType: code\n id: 1759580771575-source-1759581319855-target\n source: '1759580771575'\n sourceHandle: source\n target: '1759581319855'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: answer\n id: 1759581319855-source-1759581134675-target\n source: '1759581319855'\n sourceHandle: source\n target: '1759581134675'\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - image\n - audio\n - video\n - document\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: 文件\n max_length: 48\n options: []\n required: true\n type: file\n variable: file\n - default: ''\n hint: ''\n label: 类型\n max_length: 48\n options:\n - 文件、图片\n - 视频\n placeholder: ''\n required: true\n type: select\n variable: type\n height: 115\n id: '1759550301577'\n position:\n x: -256\n y: 282\n positionAbsolute:\n x: -256\n y: 282\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n answer: '{{#1759579779803.result#}}'\n desc: ''\n selected: true\n title: 直接回复\n type: answer\n variables: []\n height: 104\n id: answer\n position:\n x: 1059\n y: 259\n positionAbsolute:\n x: 1059\n y: 259\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n authorization:\n config: null\n type: no-auth\n body:\n data:\n - file:\n - '1759550301577'\n - file\n id: key-value-149\n key: video\n type: file\n value: ''\n - id: key-value-166\n key: model\n type: text\n value: qwen3-vl-plus\n - id: key-value-185\n key: prompt\n type: text\n value: '{{#sys.query#}}'\n - id: key-value-204\n key: stream\n type: text\n value: 'false'\n - id: key-value-231\n key: enable_thinking\n type: text\n value: 'false'\n - id: key-value-9\n key: ''\n type: text\n value: ''\n type: form-data\n desc: ''\n headers: Authorization:Bearer {{#env.apikey#}}\n method: POST\n params: ''\n retry_config:\n max_retries: '1'\n retry_enabled: false\n retry_interval: 100\n selected: false\n ssl_verify: true\n timeout:\n connect: 300\n max_connect_timeout: 0\n max_read_timeout: 0\n max_write_timeout: 0\n read: 300\n write: 300\n title: HTTP 请求\n type: http-request\n url: http://14.103.204.132:8005/v1/video/upload_and_chat\n variables: []\n height: 109\n id: '1759550367488'\n position:\n x: 413\n y: 259\n positionAbsolute:\n x: 413\n y: 259\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n code: \"def main(arg1: str) -> str:\\n import json\\n data = json.loads(arg1)\\n\\\n \\ content = data['choices'][0]['message']['content']\\n return {\\\"\\\n result\\\": content}\"\n code_language: python3\n outputs:\n result:\n children: null\n type: string\n selected: false\n title: 代码执行\n type: code\n variables:\n - value_selector:\n - '1759550367488'\n - body\n value_type: string\n variable: arg1\n height: 53\n id: '1759579779803'\n position:\n x: 744\n y: 259\n positionAbsolute:\n x: 744\n y: 259\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n cases:\n - case_id: 'true'\n conditions:\n - comparison_operator: is\n id: 82ba9a40-674d-42fa-ae70-81b78e226abe\n value: 视频\n varType: string\n variable_selector:\n - '1759550301577'\n - type\n id: 'true'\n logical_operator: and\n selected: false\n title: 条件分支\n type: if-else\n height: 125\n id: '1759580723856'\n position:\n x: 73\n y: 277\n positionAbsolute:\n x: 73\n y: 277\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n authorization:\n config: null\n type: no-auth\n body:\n data:\n - file:\n - '1759550301577'\n - file\n id: key-value-562\n key: image\n type: file\n value: ''\n - id: key-value-593\n key: model\n type: text\n value: qwen3-vl-plus\n - id: key-value-628\n key: prompt\n type: text\n value: '{{#sys.query#}}'\n - id: key-value-679\n key: stream\n type: text\n value: 'false'\n - id: key-value-777\n key: enable_thinking\n type: text\n value: 'false'\n - id: key-value-149\n key: ''\n type: text\n value: ''\n type: form-data\n headers: Authorization:Bearer {{#env.apikey#}}\n method: POST\n params: ''\n retry_config:\n max_retries: 3\n retry_enabled: false\n retry_interval: 100\n selected: false\n ssl_verify: true\n timeout:\n max_connect_timeout: 0\n max_read_timeout: 0\n max_write_timeout: 0\n title: HTTP 请求 2\n type: http-request\n url: http://14.103.204.132:8005/v1/image/upload_and_chat\n variables: []\n height: 109\n id: '1759580771575'\n position:\n x: 413\n y: 406\n positionAbsolute:\n x: 413\n y: 406\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n answer: '{{#1759581319855.result#}}'\n selected: false\n title: 直接回复 2\n type: answer\n variables: []\n height: 104\n id: '1759581134675'\n position:\n x: 1059\n y: 406\n positionAbsolute:\n x: 1059\n y: 406\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n - data:\n code: \"def main(arg1: str) -> str:\\n import json\\n data = json.loads(arg1)\\n\\\n \\ content = data['choices'][0]['message']['content']\\n return {\\\"\\\n result\\\": content}\"\n code_language: python3\n outputs:\n result:\n children: null\n type: string\n selected: false\n title: 代码执行2\n type: code\n variables:\n - value_selector:\n - '1759580771575'\n - body\n value_type: string\n variable: arg1\n height: 53\n id: '1759581319855'\n position:\n x: 744\n y: 406\n positionAbsolute:\n x: 744\n y: 406\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 242\n viewport:\n x: -218\n y: 30.5\n zoom: 1\n rag_pipeline_variables: []\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":11174,"content_sha256":"701477048dc3144bd52ef8f7f7e9847563d5ebc7b4aca58428584becf40038d2"},{"filename":"organized_dsl/05_文档处理与OCR/票据识别/61-dify案例分享-批量识别PDF图片电子发票信息生成excle表格2.yml","content":"app:\n description: 本工作流主要是为财务工作人员提供一种批量识别PDF电子发票信息生成 excel表格的台账的工作流。\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 61-dify案例分享-批量识别PDF电子发票信息生成excle表格2\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/openai_api_compatible:0.0.16@d41b09aca46cdd3876f70b4c91d464c4588fc0bdc844ced6ee426283ead6ce8e\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/feishu_spreadsheet:0.0.1@4ebeeab495e1f764bc668e7131c721b7f086769f822088212eb78bae8bee7216\nkind: app\nversion: 0.3.0\nworkflow:\n conversation_variables:\n - description: ''\n id: 140708a7-b19b-48c8-8ffc-fd5da9ef5857\n name: zhongjianzhi\n selector:\n - conversation\n - zhongjianzhi\n value: ''\n value_type: string\n environment_variables:\n - description: ''\n id: 63306689-c9ef-4ae7-881e-db346ed6cb9b\n name: fenshuurl\n selector:\n - env\n - fenshuurl\n value: https://dnazimeelr.feishu.cn/wiki/GIQUwbJfsimVjMkvLUIcMhLPnSb?fromScene=spaceOverview\n value_type: string\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 50\n batch_count_limit: 5\n file_size_limit: 15\n image_file_size_limit: 10\n video_file_size_limit: 100\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInLoop: false\n sourceType: start\n targetType: llm\n id: 1749095874754-source-1749105824146-target\n source: '1749095874754'\n sourceHandle: source\n target: '1749105824146'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: llm\n targetType: if-else\n id: 1749105824146-source-1751447829988-target\n source: '1749105824146'\n sourceHandle: source\n target: '1751447829988'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: if-else\n targetType: code\n id: 1751447829988-true-17514479903070-target\n source: '1751447829988'\n sourceHandle: 'true'\n target: '17514479903070'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: tool\n id: 17514479903070-source-1749116054395-target\n source: '17514479903070'\n sourceHandle: source\n target: '1749116054395'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: tool\n targetType: answer\n id: 1749116054395-source-answer-target\n source: '1749116054395'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: if-else\n targetType: code\n id: 1751447829988-false-1749115381294-target\n source: '1751447829988'\n sourceHandle: 'false'\n target: '1749115381294'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: tool\n id: 1749115381294-source-17514490270830-target\n source: '1749115381294'\n sourceHandle: source\n target: '17514490270830'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: tool\n targetType: answer\n id: 17514490270830-source-answer-target\n source: '17514490270830'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: true\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - document\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: file\n max_length: 10\n options: []\n required: true\n type: file-list\n variable: file\n height: 90\n id: '1749095874754'\n position:\n x: 462.877039773614\n y: 282\n positionAbsolute:\n x: 462.877039773614\n y: 282\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#env.fenshuurl#}}\n\n {{#1749105824146.text#}}'\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 105\n id: answer\n position:\n x: 1928.425968744486\n y: 401.44989683693024\n positionAbsolute:\n x: 1928.425968744486\n y: 401.44989683693024\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params: {}\n mode: chat\n name: gemini-2.5-flash-preview-05-20\n provider: langgenius/openai_api_compatible/openai_api_compatible\n prompt_template:\n - id: 5dc7034f-b1bb-4939-b644-f7eefa0c0c29\n role: system\n text: \"# Role: 财务发票整理专家\\n\\n## Profile\\n\\n- 专业领域: 财务管理、发票处理\\n- 专长: 电子发票信息提取、数据整理、JSON格式输出、特殊发票处理\\n\\\n - 工作经验: 10年以上财务发票处理经验,包括各类特殊发票\\n\\n## Background\\n\\n你是一位经验丰富的财务发票整理专家,擅长处理各类电子发票,并能够准确提取关键信息。你的工作涉及大量发票数据的处理和整理,需要高度的准确性和一致性。你了解最新的发票格式变化,包括某些发票将发票代码和发票号码合并的情况,以及航空电子客运发票的特殊格式,以及新版火车票的税额计算方法。\\n\\\n \\n## Goals\\n\\n1. 准确提取电子发票中的关键信息\\n2. 将提取的信息整理成统一的数据格式\\n3. 以JSON格式输出处理后的发票数据\\n\\\n 4. 确保所有必要字段都被正确识别和填充\\n5. 正确处理发票代码和发票号码合并的情况\\n6. 适当处理航空电子客运发票的特殊格式\\n7.\\\n \\ 对于新版火车票,在无法直接提取税额时进行准确计算\\n\\n## Skills\\n\\n- 精通各类电子发票结构和内容,包括最新的格式变化和特殊发票类型\\n\\\n - 熟练使用图像识别技术提取发票信息\\n- 擅长数据整理和格式化\\n- 熟悉JSON数据格式\\n- 注重细节,保证数据的准确性和完整性\\n\\\n - 能够灵活处理不同格式的发票信息,包括航空电子客运发票\\n- 熟悉特殊发票的税额计算方法\\n\\n## Workflows\\n\\n1. 接收电子发票图像链接\\n\\\n 2. 使用图像识别工具提取发票信息\\n3. 识别发票类型和格式\\n4. 根据发票类型采取相应的信息提取策略:\\n - 普通发票:正常提取所有字段\\n\\\n \\ - 合并格式发票:将完整号码放入\\\"发票号码\\\"字段\\n - 航空电子客运发票:将电子客票号码放入\\\"发票号码\\\"字段\\n \\\n \\ - 新版火车票:尝试提取税额,如果无法提取则根据金额计算\\n5. 整理提取的信息,确保包含所有必要字段\\n6. 对于新版火车票,如果税额未提取到,进行税额计算\\n\\\n 7. 将整理后的信息转换为JSON格式\\n8. 检查输出数据的完整性和准确性\\n9. 返回最终的JSON格式数据\\n\\n## Rules\\n\\\n \\n1. 必须提取的字段包括: \\\"发票代码\\\"、\\\"发票号码\\\"、\\\"开票日期\\\"、\\\"开票类目\\\"、\\\"金额\\\"、\\\"税额\\\"、\\\"发票类型\\\"\\\n \\n2. 所有提取的信息必须准确无误\\n3. 输出必须使用JSON格式\\n4. 如果某个字段在发票中不存在,应在JSON中将该字段值设为\\\"\\\n \\\"\\n5. 对于发票代码和发票号码合并的新格式发票:\\n - 将完整的合并号码填入\\\"发票号码\\\"字段\\n - \\\"发票代码\\\"\\\n 字段应设置为\\\"\\\"\\n6. 对于航空电子客运发票:\\n - 将电子客票号码填入\\\"发票号码\\\"字段\\n - \\\"发票代码\\\"字段应设置为\\\"\\\n \\\"\\n7. 对于新版火车票:\\n - 如果无法直接提取税额,使用以下公式计算:\\n 税额 = 票面金额 ÷ (1 + 9%)\\\n \\ × 9%\\n - 计算结果保留两位小数\\n8. \\\"发票类型\\\"字段应准确反映发票的类型,如\\\"增值税电子普通发票\\\"、\\\"航空电子客运发票\\\"\\\n 、\\\"铁路电子客票\\\"等\\n9. 保持数据格式的一致性,即使处理多张不同类型的发票\\n\\n## Output Format\\n\\n{\\n \\\n \\ \\\"发票代码\\\": \\\"string or \\\",\\n \\\"发票号码\\\": \\\"string\\\",\\n \\\"开票日期\\\": \\\"\\\n string\\\",\\n \\\"开票类目\\\": \\\"string\\\",\\n \\\"金额\\\": \\\"number\\\",\\n \\\"税额\\\": \\\"\\\n number\\\",\\n \\\"发票类型\\\": \\\"string\\\"\\n}\\n\\n## Initialization\\n\\n作为财务发票整理专家,我已准备好协助您处理各种类型的电子发票信息。我了解不同发票格式的特点,包括新格式发票将发票代码和发票号码合并的情况,以及航空电子客运发票只有电子客票号码的特殊情况。我会根据实际情况灵活处理这些信息,确保输出的JSON数据格式统一且准确。请提供需要处理的电子发票图像链接,我将为您提取关键信息并以JSON格式输出。如果您有任何特殊要求或额外的处理需求,请告诉我。让我们开始工作吧!\"\n selected: false\n title: LLM\n type: llm\n variables: []\n vision:\n configs:\n detail: high\n variable_selector:\n - '1749095874754'\n - file\n enabled: true\n height: 90\n id: '1749105824146'\n position:\n x: 462.877039773614\n y: 449.9009969499045\n positionAbsolute:\n x: 462.877039773614\n y: 449.9009969499045\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"import json\\n\\ndef main(arg1: str) -> dict:\\n # 按 ```json 分割,取后半部分\\n\\\n \\ part = arg1.split('```json', 1)[-1]\\n # 再按 ``` 分割,取第一部分并去除首尾空白\\n\\\n \\ json_content = part.split('```', 1)[0].strip()\\n \\n try:\\n \\\n \\ # 解析JSON内容\\n data = json.loads(json_content)\\n # 转换为表格格式\\n\\\n \\ table = []\\n for item in data:\\n # 为每个发票创建记录,包含所有字段\\n\\\n \\ invoice_data = [\\n item.get('发票代码', ''),\\n \\\n \\ item.get('发票号码', ''),\\n item.get('开票日期',\\\n \\ ''),\\n item.get('开票类目', ''),\\n str(item.get('金额',\\\n \\ '')),\\n str(item.get('税额', '')),\\n item.get('发票类型',\\\n \\ '')\\n ]\\n table.append(invoice_data)\\n\\n \\\n \\ return {\\n \\\"result\\\": str(table).replace(\\\"'\\\", '\\\"')\\n \\\n \\ }\\n except json.JSONDecodeError:\\n # 若JSON解析失败,返回原始内容\\n\\\n \\ return {\\n \\\"result\\\": [[\\\"错误\\\", \\\"JSON解析失败\\\"]]\\n \\\n \\ }\"\n code_language: python3\n default_value:\n - key: result\n type: string\n value: ''\n desc: ''\n error_strategy: default-value\n outputs:\n result:\n children: null\n type: string\n selected: false\n title: 代码执行(2)\n type: code\n variables:\n - value_selector:\n - '1749105824146'\n - text\n variable: arg1\n height: 90\n id: '1749115381294'\n position:\n x: 1147.1842149073916\n y: 489.9147859426387\n positionAbsolute:\n x: 1147.1842149073916\n y: 489.9147859426387\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n default_value:\n - key: text\n type: string\n value: ''\n - key: json\n type: array[object]\n value: '[]'\n desc: ''\n error_strategy: default-value\n is_team_authorization: true\n output_schema: null\n paramSchemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Spreadsheet token, supports input of spreadsheet URL.\n ja_JP: Spreadsheet token, supports input of spreadsheet URL.\n pt_BR: Spreadsheet token, supports input of spreadsheet URL.\n zh_Hans: 电子表格 token,支持输入电子表格 url。\n label:\n en_US: spreadsheet_token\n ja_JP: spreadsheet_token\n pt_BR: spreadsheet_token\n zh_Hans: 电子表格 token\n llm_description: 电子表格 token,支持输入电子表格 url。\n max: null\n min: null\n name: spreadsheet_token\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Sheet ID, either sheet_id or sheet_name must be filled.\n ja_JP: Sheet ID, either sheet_id or sheet_name must be filled.\n pt_BR: Sheet ID, either sheet_id or sheet_name must be filled.\n zh_Hans: 工作表 ID,与 sheet_name 二者其一必填。\n label:\n en_US: sheet_id\n ja_JP: sheet_id\n pt_BR: sheet_id\n zh_Hans: 工作表 ID\n llm_description: 工作表 ID,与 sheet_name 二者其一必填。\n max: null\n min: null\n name: sheet_id\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Sheet name, either sheet_id or sheet_name must be filled.\n ja_JP: Sheet name, either sheet_id or sheet_name must be filled.\n pt_BR: Sheet name, either sheet_id or sheet_name must be filled.\n zh_Hans: 工作表名称,与 sheet_id 二者其一必填。\n label:\n en_US: sheet_name\n ja_JP: sheet_name\n pt_BR: sheet_name\n zh_Hans: 工作表名称\n llm_description: 工作表名称,与 sheet_id 二者其一必填。\n max: null\n min: null\n name: sheet_name\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: form\n human_description:\n en_US: Number of rows to add, range (0-5000].\n ja_JP: Number of rows to add, range (0-5000].\n pt_BR: Number of rows to add, range (0-5000].\n zh_Hans: 要增加行数,范围(0-5000]。\n label:\n en_US: length\n ja_JP: length\n pt_BR: length\n zh_Hans: 要增加行数\n llm_description: 要增加行数,范围(0-5000]。\n max: null\n min: null\n name: length\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: number\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: 'Content of the new rows, array of objects in string format, each\n array represents a row of table data, format like: [ [ \"ID\",\"Name\",\"Age\"\n ],[ 1,\"Zhang San\",10 ],[ 2,\"Li Si\",11 ] ].\n\n '\n ja_JP: 'Content of the new rows, array of objects in string format, each\n array represents a row of table data, format like: [ [ \"ID\",\"Name\",\"Age\"\n ],[ 1,\"Zhang San\",10 ],[ 2,\"Li Si\",11 ] ].\n\n '\n pt_BR: 'Content of the new rows, array of objects in string format, each\n array represents a row of table data, format like: [ [ \"ID\",\"Name\",\"Age\"\n ],[ 1,\"Zhang San\",10 ],[ 2,\"Li Si\",11 ] ].\n\n '\n zh_Hans: 新增行的表格内容,数组对象字符串,每个数组一行表格数据,格式,如:[[\"编号\",\"姓名\",\"年龄\"],[1,\"张三\",10],[2,\"李四\",11]]。\n label:\n en_US: values\n ja_JP: values\n pt_BR: values\n zh_Hans: 新增行的表格内容\n llm_description: 新增行的表格内容,数组对象字符串,每个数组一行表格数据,格式,如:[[\"编号\",\"姓名\",\"年龄\"],[1,\"张三\",10],[2,\"李四\",11]]。\n max: null\n min: null\n name: values\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n params:\n length: ''\n sheet_id: ''\n sheet_name: ''\n spreadsheet_token: ''\n values: ''\n provider_id: langgenius/feishu_spreadsheet/feishu_spreadsheet\n provider_name: langgenius/feishu_spreadsheet/feishu_spreadsheet\n provider_type: builtin\n selected: false\n title: 新增多行至工作表最后(1)\n tool_configurations:\n length: 1\n tool_description: 新增多行至工作表最后\n tool_label: 新增多行至工作表最后\n tool_name: add_rows\n tool_parameters:\n spreadsheet_token:\n type: mixed\n value: '{{#env.fenshuurl#}}'\n values:\n type: mixed\n value: '{{#17514479903070.result#}}'\n type: tool\n height: 126\n id: '1749116054395'\n position:\n x: 1524.0734565012733\n y: 291.3964186062484\n positionAbsolute:\n x: 1524.0734565012733\n y: 291.3964186062484\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n cases:\n - case_id: 'true'\n conditions:\n - comparison_operator: is\n id: e794c339-d74f-49ae-b7de-bf3d6d230130\n sub_variable_condition:\n case_id: 4ec3659a-36d8-4026-a461-a9e2ce3062e8\n conditions:\n - comparison_operator: ≤\n id: 650091d7-1ed1-47e3-8b0e-6a9eb2f39f94\n key: size\n value: '1'\n varType: string\n logical_operator: and\n value: '1'\n varType: string\n variable_selector:\n - sys\n - query\n id: 'true'\n logical_operator: and\n desc: ''\n selected: false\n title: 条件分支\n type: if-else\n height: 150\n id: '1751447829988'\n position:\n x: 764.307175133778\n y: 307.8912752305927\n positionAbsolute:\n x: 764.307175133778\n y: 307.8912752305927\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"import json\\n\\ndef main(arg1: str) -> dict:\\n # 按 ```json 分割,取后半部分\\n\\\n \\ part = arg1.split('```json', 1)[-1]\\n # 再按 ``` 分割,取第一部分并去除首尾空白\\n\\\n \\ json_content = part.split('```', 1)[0].strip()\\n\\n try:\\n \\\n \\ # 解析JSON内容\\n data = json.loads(json_content)\\n # 直接访问字典的字段,不需要遍历\\n\\\n \\ invoice_data = [\\n data.get('发票代码', ''),\\n \\\n \\ data.get('发票号码', ''),\\n data.get('开票日期', ''),\\n \\\n \\ data.get('开票类目', ''),\\n str(data.get('金额', '')),\\n \\\n \\ str(data.get('税额', '')),\\n data.get('发票类型', '')\\n \\\n \\ ]\\n table = [invoice_data] # 注意:这里用 [] 包裹,因为只有一条记录\\n\\n \\\n \\ return {\\n \\\"result\\\": str(table).replace(\\\"'\\\", '\\\"')\\n\\\n \\ }\\n except json.JSONDecodeError:\\n # 若JSON解析失败,返回原始内容\\n\\\n \\ return {\\n \\\"result\\\": [[\\\"错误\\\", \\\"JSON解析失败\\\"]]\\n \\\n \\ }\"\n code_language: python3\n default_value:\n - key: result\n type: string\n value: ''\n desc: ''\n error_strategy: default-value\n outputs:\n result:\n children: null\n type: string\n selected: false\n title: 代码执行 (1)\n type: code\n variables:\n - value_selector:\n - '1749105824146'\n - text\n variable: arg1\n height: 90\n id: '17514479903070'\n position:\n x: 1147.1842149073916\n y: 291.3964186062484\n positionAbsolute:\n x: 1147.1842149073916\n y: 291.3964186062484\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n default_value:\n - key: text\n type: string\n value: ''\n - key: json\n type: array[object]\n value: '[]'\n desc: ''\n error_strategy: default-value\n is_team_authorization: true\n output_schema: null\n paramSchemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Spreadsheet token, supports input of spreadsheet URL.\n ja_JP: Spreadsheet token, supports input of spreadsheet URL.\n pt_BR: Spreadsheet token, supports input of spreadsheet URL.\n zh_Hans: 电子表格 token,支持输入电子表格 url。\n label:\n en_US: spreadsheet_token\n ja_JP: spreadsheet_token\n pt_BR: spreadsheet_token\n zh_Hans: 电子表格 token\n llm_description: 电子表格 token,支持输入电子表格 url。\n max: null\n min: null\n name: spreadsheet_token\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Sheet ID, either sheet_id or sheet_name must be filled.\n ja_JP: Sheet ID, either sheet_id or sheet_name must be filled.\n pt_BR: Sheet ID, either sheet_id or sheet_name must be filled.\n zh_Hans: 工作表 ID,与 sheet_name 二者其一必填。\n label:\n en_US: sheet_id\n ja_JP: sheet_id\n pt_BR: sheet_id\n zh_Hans: 工作表 ID\n llm_description: 工作表 ID,与 sheet_name 二者其一必填。\n max: null\n min: null\n name: sheet_id\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Sheet name, either sheet_id or sheet_name must be filled.\n ja_JP: Sheet name, either sheet_id or sheet_name must be filled.\n pt_BR: Sheet name, either sheet_id or sheet_name must be filled.\n zh_Hans: 工作表名称,与 sheet_id 二者其一必填。\n label:\n en_US: sheet_name\n ja_JP: sheet_name\n pt_BR: sheet_name\n zh_Hans: 工作表名称\n llm_description: 工作表名称,与 sheet_id 二者其一必填。\n max: null\n min: null\n name: sheet_name\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: form\n human_description:\n en_US: Number of rows to add, range (0-5000].\n ja_JP: Number of rows to add, range (0-5000].\n pt_BR: Number of rows to add, range (0-5000].\n zh_Hans: 要增加行数,范围(0-5000]。\n label:\n en_US: length\n ja_JP: length\n pt_BR: length\n zh_Hans: 要增加行数\n llm_description: 要增加行数,范围(0-5000]。\n max: null\n min: null\n name: length\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: number\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: 'Content of the new rows, array of objects in string format, each\n array represents a row of table data, format like: [ [ \"ID\",\"Name\",\"Age\"\n ],[ 1,\"Zhang San\",10 ],[ 2,\"Li Si\",11 ] ].\n\n '\n ja_JP: 'Content of the new rows, array of objects in string format, each\n array represents a row of table data, format like: [ [ \"ID\",\"Name\",\"Age\"\n ],[ 1,\"Zhang San\",10 ],[ 2,\"Li Si\",11 ] ].\n\n '\n pt_BR: 'Content of the new rows, array of objects in string format, each\n array represents a row of table data, format like: [ [ \"ID\",\"Name\",\"Age\"\n ],[ 1,\"Zhang San\",10 ],[ 2,\"Li Si\",11 ] ].\n\n '\n zh_Hans: 新增行的表格内容,数组对象字符串,每个数组一行表格数据,格式,如:[[\"编号\",\"姓名\",\"年龄\"],[1,\"张三\",10],[2,\"李四\",11]]。\n label:\n en_US: values\n ja_JP: values\n pt_BR: values\n zh_Hans: 新增行的表格内容\n llm_description: 新增行的表格内容,数组对象字符串,每个数组一行表格数据,格式,如:[[\"编号\",\"姓名\",\"年龄\"],[1,\"张三\",10],[2,\"李四\",11]]。\n max: null\n min: null\n name: values\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n params:\n length: ''\n sheet_id: ''\n sheet_name: ''\n spreadsheet_token: ''\n values: ''\n provider_id: langgenius/feishu_spreadsheet/feishu_spreadsheet\n provider_name: langgenius/feishu_spreadsheet/feishu_spreadsheet\n provider_type: builtin\n selected: false\n title: 新增多行至工作表最后 (2)\n tool_configurations:\n length: 1\n tool_description: 新增多行至工作表最后\n tool_label: 新增多行至工作表最后\n tool_name: add_rows\n tool_parameters:\n spreadsheet_token:\n type: mixed\n value: '{{#env.fenshuurl#}}'\n values:\n type: mixed\n value: '{{#1749115381294.result#}}'\n type: tool\n height: 126\n id: '17514490270830'\n position:\n x: 1514.6584473265123\n y: 471.9953310885552\n positionAbsolute:\n x: 1514.6584473265123\n y: 471.9953310885552\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: -287.89220899468035\n y: -222.58666528399294\n zoom: 1.2745606273192633\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":29282,"content_sha256":"29c8c0ad9ac129108fd12ad4680a1406685793f35a51fffe5c81446dbc8fb406"},{"filename":"organized_dsl/05_文档处理与OCR/票据识别/61-dify案例分享-批量识别PDF电子发票信息生成excle表格.yml","content":"app:\n description: 本工作流主要是为财务工作人员提供一种批量识别PDF电子发票信息生成 excel表格的台账的工作流。\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 61-dify案例分享-批量识别PDF电子发票信息生成excle表格\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/openai_api_compatible:0.0.16@77274df8fe2632cac66bfd153fcc75aa5e96abbe92b5c611b8984ad9f4cd4457\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/feishu_spreadsheet:0.0.1@6b4da2c3bcab1aace954e92a8120bf09692951bc68c993debbd64cfb398fd30d\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: kalochin/pdf_process:0.0.4@29c7b0927a11333044049de20657119779a06e0eb003b6c5cffaec07e5204332\nkind: app\nversion: 0.3.0\nworkflow:\n conversation_variables: []\n environment_variables:\n - description: ''\n id: 63306689-c9ef-4ae7-881e-db346ed6cb9b\n name: fenshuurl\n selector:\n - env\n - fenshuurl\n value: https://aqma351r01f.feishu.cn/wiki/K1X3wxHldihn8vkwt5xcsdSVn5c\n value_type: string\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 500\n batch_count_limit: 5\n file_size_limit: 15\n image_file_size_limit: 100\n video_file_size_limit: 500\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: start\n targetType: iteration\n id: 1749095874754-source-1749100792674-target\n source: '1749095874754'\n sourceHandle: source\n target: '1749100792674'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: true\n isInLoop: false\n iteration_id: '1749100792674'\n sourceType: iteration-start\n targetType: tool\n id: 1749100792674start-source-1749100819958-target\n source: 1749100792674start\n sourceHandle: source\n target: '1749100819958'\n targetHandle: target\n type: custom\n zIndex: 1002\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: iteration\n targetType: llm\n id: 1749100792674-source-1749105824146-target\n source: '1749100792674'\n sourceHandle: source\n target: '1749105824146'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: llm\n targetType: code\n id: 1749105824146-source-1749115381294-target\n source: '1749105824146'\n sourceHandle: source\n target: '1749115381294'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: code\n targetType: tool\n id: 1749115381294-source-1749116054395-target\n source: '1749115381294'\n sourceHandle: source\n target: '1749116054395'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: answer\n id: 1749115381294-source-answer-target\n source: '1749115381294'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - document\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: pdf发票文件\n max_length: 5\n options: []\n required: true\n type: file-list\n variable: file\n height: 90\n id: '1749095874754'\n position:\n x: 80\n y: 282\n positionAbsolute:\n x: 80\n y: 282\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#1749100792674.output#}}\n\n {{#1749105824146.text#}}'\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 124\n id: answer\n position:\n x: 1461.0206812890367\n y: 172.2067702850245\n positionAbsolute:\n x: 1461.0206812890367\n y: 172.2067702850245\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n desc: ''\n error_handle_mode: terminated\n height: 206\n is_parallel: false\n iterator_selector:\n - '1749095874754'\n - file\n output_selector:\n - '1749100819958'\n - files\n output_type: array[file]\n parallel_nums: 10\n selected: false\n start_node_id: 1749100792674start\n title: 迭代\n type: iteration\n width: 398\n height: 206\n id: '1749100792674'\n position:\n x: 399.81079288499745\n y: 282\n positionAbsolute:\n x: 399.81079288499745\n y: 282\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 398\n zIndex: 1\n - data:\n desc: ''\n isInIteration: true\n selected: false\n title: ''\n type: iteration-start\n draggable: false\n height: 48\n id: 1749100792674start\n parentId: '1749100792674'\n position:\n x: 24\n y: 68\n positionAbsolute:\n x: 423.81079288499745\n y: 350\n selectable: false\n sourcePosition: right\n targetPosition: left\n type: custom-iteration-start\n width: 44\n zIndex: 1002\n - data:\n desc: ''\n isInIteration: true\n isInLoop: false\n is_team_authorization: true\n iteration_id: '1749100792674'\n output_schema: null\n paramSchemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: PDF file to convert to PNG images\n ja_JP: PDF file to convert to PNG images\n pt_BR: PDF file to convert to PNG images\n zh_Hans: 要转换为PNG图片的PDF文件\n label:\n en_US: PDF Content\n ja_JP: PDF Content\n pt_BR: PDF Content\n zh_Hans: PDF 内容\n llm_description: PDF file content to be converted to PNG images\n max: null\n min: null\n name: pdf_content\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: file\n - auto_generate: null\n default: 2\n form: llm\n human_description:\n en_US: Zoom factor for image quality (default is 2)\n ja_JP: Zoom factor for image quality (default is 2)\n pt_BR: Zoom factor for image quality (default is 2)\n zh_Hans: 图像质量的缩放因子(默认为2)\n label:\n en_US: Zoom Factor\n ja_JP: Zoom Factor\n pt_BR: Zoom Factor\n zh_Hans: 缩放因子\n llm_description: Zoom factor to control the quality of output PNG images\n max: null\n min: null\n name: zoom\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: number\n params:\n pdf_content: ''\n zoom: ''\n provider_id: kalochin/pdf_process/pdf_process\n provider_name: kalochin/pdf_process/pdf_process\n provider_type: builtin\n selected: false\n title: PDF转PNG转换器\n tool_configurations: {}\n tool_description: 一个将PDF文件转换为PNG图片的工具\n tool_label: PDF转PNG转换器\n tool_name: pdf_to_png\n tool_parameters:\n pdf_content:\n type: variable\n value:\n - '1749100792674'\n - item\n type: tool\n height: 54\n id: '1749100819958'\n parentId: '1749100792674'\n position:\n x: 128\n y: 68\n positionAbsolute:\n x: 527.8107928849975\n y: 350\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n zIndex: 1002\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params: {}\n mode: chat\n name: gemini-2.5-flash-preview-05-20\n provider: langgenius/openai_api_compatible/openai_api_compatible\n prompt_template:\n - id: 5dc7034f-b1bb-4939-b644-f7eefa0c0c29\n role: system\n text: \"# Role: 财务发票整理专家\\n\\n## Profile\\n\\n- 专业领域: 财务管理、发票处理\\n- 专长: 电子发票信息提取、数据整理、JSON格式输出、特殊发票处理\\n\\\n - 工作经验: 10年以上财务发票处理经验,包括各类特殊发票\\n\\n## Background\\n\\n你是一位经验丰富的财务发票整理专家,擅长处理各类电子发票,并能够准确提取关键信息。你的工作涉及大量发票数据的处理和整理,需要高度的准确性和一致性。你了解最新的发票格式变化,包括某些发票将发票代码和发票号码合并的情况,以及航空电子客运发票的特殊格式,以及新版火车票的税额计算方法。\\n\\\n \\n## Goals\\n\\n1. 准确提取电子发票中的关键信息\\n2. 将提取的信息整理成统一的数据格式\\n3. 以JSON格式输出处理后的发票数据\\n\\\n 4. 确保所有必要字段都被正确识别和填充\\n5. 正确处理发票代码和发票号码合并的情况\\n6. 适当处理航空电子客运发票的特殊格式\\n7.\\\n \\ 对于新版火车票,在无法直接提取税额时进行准确计算\\n\\n## Skills\\n\\n- 精通各类电子发票结构和内容,包括最新的格式变化和特殊发票类型\\n\\\n - 熟练使用图像识别技术提取发票信息\\n- 擅长数据整理和格式化\\n- 熟悉JSON数据格式\\n- 注重细节,保证数据的准确性和完整性\\n\\\n - 能够灵活处理不同格式的发票信息,包括航空电子客运发票\\n- 熟悉特殊发票的税额计算方法\\n\\n## Workflows\\n\\n1. 接收电子发票图像链接\\n\\\n 2. 使用图像识别工具提取发票信息\\n3. 识别发票类型和格式\\n4. 根据发票类型采取相应的信息提取策略:\\n - 普通发票:正常提取所有字段\\n\\\n \\ - 合并格式发票:将完整号码放入\\\"发票号码\\\"字段\\n - 航空电子客运发票:将电子客票号码放入\\\"发票号码\\\"字段\\n \\\n \\ - 新版火车票:尝试提取税额,如果无法提取则根据金额计算\\n5. 整理提取的信息,确保包含所有必要字段\\n6. 对于新版火车票,如果税额未提取到,进行税额计算\\n\\\n 7. 将整理后的信息转换为JSON格式\\n8. 检查输出数据的完整性和准确性\\n9. 返回最终的JSON格式数据\\n\\n## Rules\\n\\\n \\n1. 必须提取的字段包括: \\\"发票代码\\\"、\\\"发票号码\\\"、\\\"开票日期\\\"、\\\"开票类目\\\"、\\\"金额\\\"、\\\"税额\\\"、\\\"发票类型\\\"\\\n \\n2. 所有提取的信息必须准确无误\\n3. 输出必须使用JSON格式\\n4. 如果某个字段在发票中不存在,应在JSON中将该字段值设为\\\"\\\n \\\"\\n5. 对于发票代码和发票号码合并的新格式发票:\\n - 将完整的合并号码填入\\\"发票号码\\\"字段\\n - \\\"发票代码\\\"\\\n 字段应设置为\\\"\\\"\\n6. 对于航空电子客运发票:\\n - 将电子客票号码填入\\\"发票号码\\\"字段\\n - \\\"发票代码\\\"字段应设置为\\\"\\\n \\\"\\n7. 对于新版火车票:\\n - 如果无法直接提取税额,使用以下公式计算:\\n 税额 = 票面金额 ÷ (1 + 9%)\\\n \\ × 9%\\n - 计算结果保留两位小数\\n8. \\\"发票类型\\\"字段应准确反映发票的类型,如\\\"增值税电子普通发票\\\"、\\\"航空电子客运发票\\\"\\\n 、\\\"铁路电子客票\\\"等\\n9. 保持数据格式的一致性,即使处理多张不同类型的发票\\n\\n## Output Format\\n\\n{\\n \\\n \\ \\\"发票代码\\\": \\\"string or \\\",\\n \\\"发票号码\\\": \\\"string\\\",\\n \\\"开票日期\\\": \\\"\\\n string\\\",\\n \\\"开票类目\\\": \\\"string\\\",\\n \\\"金额\\\": \\\"number\\\",\\n \\\"税额\\\": \\\"\\\n number\\\",\\n \\\"发票类型\\\": \\\"string\\\"\\n}\\n\\n## Initialization\\n\\n作为财务发票整理专家,我已准备好协助您处理各种类型的电子发票信息。我了解不同发票格式的特点,包括新格式发票将发票代码和发票号码合并的情况,以及航空电子客运发票只有电子客票号码的特殊情况。我会根据实际情况灵活处理这些信息,确保输出的JSON数据格式统一且准确。请提供需要处理的电子发票图像链接,我将为您提取关键信息并以JSON格式输出。如果您有任何特殊要求或额外的处理需求,请告诉我。让我们开始工作吧!\"\n selected: false\n title: LLM\n type: llm\n variables: []\n vision:\n configs:\n detail: high\n variable_selector:\n - '1749100792674'\n - output\n enabled: true\n height: 90\n id: '1749105824146'\n position:\n x: 837.4810370391729\n y: 282\n positionAbsolute:\n x: 837.4810370391729\n y: 282\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"import json\\n\\ndef main(arg1: str) -> dict:\\n # 按 ```json 分割,取后半部分\\n\\\n \\ part = arg1.split('```json', 1)[-1]\\n # 再按 ``` 分割,取第一部分并去除首尾空白\\n\\\n \\ json_content = part.split('```', 1)[0].strip()\\n \\n try:\\n \\\n \\ # 解析JSON内容\\n data = json.loads(json_content)\\n # 转换为表格格式\\n\\\n \\ table = []\\n for item in data:\\n # 为每个发票创建记录,包含所有字段\\n\\\n \\ invoice_data = [\\n item.get('发票代码', ''),\\n \\\n \\ item.get('发票号码', ''),\\n item.get('开票日期',\\\n \\ ''),\\n item.get('开票类目', ''),\\n str(item.get('金额',\\\n \\ '')),\\n str(item.get('税额', '')),\\n item.get('发票类型',\\\n \\ '')\\n ]\\n table.append(invoice_data)\\n\\n \\\n \\ return {\\n \\\"result\\\": str(table).replace(\\\"'\\\", '\\\"')\\n \\\n \\ }\\n except json.JSONDecodeError:\\n # 若JSON解析失败,返回原始内容\\n\\\n \\ return {\\n \\\"result\\\": [[\\\"错误\\\", \\\"JSON解析失败\\\"]]\\n \\\n \\ }\"\n code_language: python3\n default_value:\n - key: result\n type: string\n value: ''\n desc: ''\n error_strategy: default-value\n outputs:\n result:\n children: null\n type: string\n selected: false\n title: 代码执行\n type: code\n variables:\n - value_selector:\n - '1749105824146'\n - text\n variable: arg1\n height: 90\n id: '1749115381294'\n position:\n x: 1127.1871440690966\n y: 282\n positionAbsolute:\n x: 1127.1871440690966\n y: 282\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n default_value:\n - key: text\n type: string\n value: ''\n - key: json\n type: array[object]\n value: '[]'\n desc: ''\n error_strategy: default-value\n is_team_authorization: true\n output_schema: null\n paramSchemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Spreadsheet token, supports input of spreadsheet URL.\n ja_JP: Spreadsheet token, supports input of spreadsheet URL.\n pt_BR: Spreadsheet token, supports input of spreadsheet URL.\n zh_Hans: 电子表格 token,支持输入电子表格 url。\n label:\n en_US: spreadsheet_token\n ja_JP: spreadsheet_token\n pt_BR: spreadsheet_token\n zh_Hans: 电子表格 token\n llm_description: 电子表格 token,支持输入电子表格 url。\n max: null\n min: null\n name: spreadsheet_token\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Sheet ID, either sheet_id or sheet_name must be filled.\n ja_JP: Sheet ID, either sheet_id or sheet_name must be filled.\n pt_BR: Sheet ID, either sheet_id or sheet_name must be filled.\n zh_Hans: 工作表 ID,与 sheet_name 二者其一必填。\n label:\n en_US: sheet_id\n ja_JP: sheet_id\n pt_BR: sheet_id\n zh_Hans: 工作表 ID\n llm_description: 工作表 ID,与 sheet_name 二者其一必填。\n max: null\n min: null\n name: sheet_id\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Sheet name, either sheet_id or sheet_name must be filled.\n ja_JP: Sheet name, either sheet_id or sheet_name must be filled.\n pt_BR: Sheet name, either sheet_id or sheet_name must be filled.\n zh_Hans: 工作表名称,与 sheet_id 二者其一必填。\n label:\n en_US: sheet_name\n ja_JP: sheet_name\n pt_BR: sheet_name\n zh_Hans: 工作表名称\n llm_description: 工作表名称,与 sheet_id 二者其一必填。\n max: null\n min: null\n name: sheet_name\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n - auto_generate: null\n default: null\n form: form\n human_description:\n en_US: Number of rows to add, range (0-5000].\n ja_JP: Number of rows to add, range (0-5000].\n pt_BR: Number of rows to add, range (0-5000].\n zh_Hans: 要增加行数,范围(0-5000]。\n label:\n en_US: length\n ja_JP: length\n pt_BR: length\n zh_Hans: 要增加行数\n llm_description: 要增加行数,范围(0-5000]。\n max: null\n min: null\n name: length\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: number\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: 'Content of the new rows, array of objects in string format, each\n array represents a row of table data, format like: [ [ \"ID\",\"Name\",\"Age\"\n ],[ 1,\"Zhang San\",10 ],[ 2,\"Li Si\",11 ] ].\n\n '\n ja_JP: 'Content of the new rows, array of objects in string format, each\n array represents a row of table data, format like: [ [ \"ID\",\"Name\",\"Age\"\n ],[ 1,\"Zhang San\",10 ],[ 2,\"Li Si\",11 ] ].\n\n '\n pt_BR: 'Content of the new rows, array of objects in string format, each\n array represents a row of table data, format like: [ [ \"ID\",\"Name\",\"Age\"\n ],[ 1,\"Zhang San\",10 ],[ 2,\"Li Si\",11 ] ].\n\n '\n zh_Hans: 新增行的表格内容,数组对象字符串,每个数组一行表格数据,格式,如:[[\"编号\",\"姓名\",\"年龄\"],[1,\"张三\",10],[2,\"李四\",11]]。\n label:\n en_US: values\n ja_JP: values\n pt_BR: values\n zh_Hans: 新增行的表格内容\n llm_description: 新增行的表格内容,数组对象字符串,每个数组一行表格数据,格式,如:[[\"编号\",\"姓名\",\"年龄\"],[1,\"张三\",10],[2,\"李四\",11]]。\n max: null\n min: null\n name: values\n options: []\n placeholder: null\n precision: null\n required: false\n scope: null\n template: null\n type: string\n params:\n length: ''\n sheet_id: ''\n sheet_name: ''\n spreadsheet_token: ''\n values: ''\n provider_id: langgenius/feishu_spreadsheet/feishu_spreadsheet\n provider_name: langgenius/feishu_spreadsheet/feishu_spreadsheet\n provider_type: builtin\n selected: false\n title: 新增多行至工作表最后\n tool_configurations:\n length: 1\n tool_description: 新增多行至工作表最后\n tool_label: 新增多行至工作表最后\n tool_name: add_rows\n tool_parameters:\n spreadsheet_token:\n type: mixed\n value: '{{#env.fenshuurl#}}'\n values:\n type: mixed\n value: '{{#1749115381294.result#}}'\n type: tool\n height: 126\n id: '1749116054395'\n position:\n x: 1455.1286101390099\n y: 348.09817817995105\n positionAbsolute:\n x: 1455.1286101390099\n y: 348.09817817995105\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: -709.1564161684444\n y: 224.55636643917265\n zoom: 0.8408964152537148\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":23244,"content_sha256":"a8093a7d783fec53989cf8c121793279ab028886d4dd1931e9806985d9639d29"},{"filename":"organized_dsl/05_文档处理与OCR/票据识别/73-dify案例分享-告别手工录入!Dify 工作流一键生成发票申请预览,对接开票系统超简单.yml","content":"app:\n description: ''\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 73-dify案例分享-告别手工录入!Dify 工作流一键生成发票申请预览,对接开票系统超简单\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/openai_api_compatible:0.0.16@77274df8fe2632cac66bfd153fcc75aa5e96abbe92b5c611b8984ad9f4cd4457\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/modelscope:0.0.4@5a3245e52b864fa8a20686baf5add2f5517eae5f11f94419bf46edbe170731e8\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: qiangxinglin/excel_tools:0.0.1@e6019557a12b0d8436ed924532d043c691504a872e18120a12d79e1b2225628e\nkind: app\nversion: 0.3.0\nworkflow:\n conversation_variables: []\n environment_variables:\n - description: ''\n id: 8242c2c4-14e0-4535-a983-029cdd354880\n name: apikey\n selector:\n - env\n - apikey\n value: sk-zhouhui1122444\n value_type: string\n - description: ''\n id: 1dcac405-bb64-402f-9d2e-80e8192fc3ae\n name: apiurl\n selector:\n - env\n - apiurl\n value: http://14.103.204.132:8080/generate-html/\n value_type: string\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 500\n batch_count_limit: 10\n file_size_limit: 100\n image_file_size_limit: 100\n video_file_size_limit: 500\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: start\n targetType: tool\n id: 1754359998615-source-1754379634717-target\n source: '1754359998615'\n sourceHandle: source\n target: '1754379634717'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: tool\n targetType: llm\n id: 1754379634717-source-1754379696135-target\n source: '1754379634717'\n sourceHandle: source\n target: '1754379696135'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: llm\n targetType: llm\n id: 1754379696135-source-1754383424904-target\n source: '1754379696135'\n sourceHandle: source\n target: '1754383424904'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: llm\n targetType: code\n id: 1754383424904-source-1754384870547-target\n source: '1754383424904'\n sourceHandle: source\n target: '1754384870547'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: answer\n id: 1754384870547-source-answer-target\n source: '1754384870547'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - document\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: 文档\n max_length: 48\n options: []\n required: true\n type: file\n variable: file\n height: 89\n id: '1754359998615'\n position:\n x: -25\n y: 308\n positionAbsolute:\n x: -25\n y: 308\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '---- 发票申请单JSON数据\n\n {{#1754379696135.text#}}\n\n --- 发票开具预览展示HTML代码\n\n {{#1754383424904.text#}}\n\n --- 生成HTML展示\n\n {{#1754384870547.html_url#}}\n\n {{#1754384870547.markdown_result#}}'\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 193\n id: answer\n position:\n x: 1715\n y: 308\n positionAbsolute:\n x: 1715\n y: 308\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n desc: ''\n is_team_authorization: true\n output_schema: null\n paramSchemas:\n - auto_generate: null\n default: null\n form: llm\n human_description:\n en_US: Upload file.\n ja_JP: Upload file.\n pt_BR: Upload file.\n zh_Hans: 上传的文件.\n label:\n en_US: File\n ja_JP: File\n pt_BR: File\n zh_Hans: 文件\n llm_description: Upload file.\n max: null\n min: null\n name: file\n options: []\n placeholder: null\n precision: null\n required: true\n scope: null\n template: null\n type: file\n params:\n file: ''\n provider_id: qiangxinglin/excel_tools/excel_tools\n provider_name: qiangxinglin/excel_tools/excel_tools\n provider_type: builtin\n selected: false\n title: Excel转Json\n tool_configurations: {}\n tool_description: 将Excel转换为Json。\n tool_label: Excel转Json\n tool_name: excel2json\n tool_parameters:\n file:\n type: variable\n value:\n - '1754359998615'\n - file\n type: tool\n version: '2'\n height: 85\n id: '1754379634717'\n position:\n x: 279\n y: 308\n positionAbsolute:\n x: 279\n y: 308\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: Qwen/Qwen3-Coder-30B-A3B-Instruct\n provider: langgenius/openai_api_compatible/openai_api_compatible\n prompt_template:\n - id: 7caf47a0-9c06-4ef5-a213-98161b8d4258\n role: system\n text: \"# Role: 发票申请单信息提取专家\\n\\n## Profile\\n\\n- Author: 财务数据处理专家\\n- Version:\\\n \\ 1.0\\n- Language: 中文\\n- Description: 专门从发票申请单数据中提取关键信息,用于后续开具发票的AI助手\\n\\\n \\n## Skills\\n\\n1. 精确识别和提取发票申请单中的基础信息\\n2. 准确解析商品明细和税务计算数据\\n3. 标准化输出格式,确保数据完整性\\n\\\n 4. 验证数据逻辑一致性和合规性\\n\\n## Rules\\n\\n1. 必须严格按照发票申请单的标准格式进行信息提取\\n2. 确保所有金额计算准确无误\\n\\\n 3. 保持原始数据的完整性,不得随意修改\\n4. 对于缺失或异常数据,必须明确标注\\n5. 输出格式必须标准化,便于后续发票开具系统使用\\n\\\n \\n## Workflow\\n\\n1. **基础信息识别**:提取申请单头部的基本信息\\n2. **开票方信息提取**:获取开票公司相关信息\\n\\\n 3. **付款方信息提取**:获取付款单位的完整信息\\n4. **商品明细解析**:逐行提取商品信息和税务数据\\n5. **合计信息验证**:核算总金额和税额\\n\\\n 6. **数据补全处理**:对于多张申请单,如有缺失的付款单位信息,从第一张完整申请单中补全\\n7. **格式化输出**:按标准格式整理所有提取信息\\n\\\n \\n## OutputFormat\\n\\n```json\\n{\\n \\\"发票申请单信息\\\": {\\n \\\"申请日期\\\": \\\"YYYY-MM-DD\\\"\\\n ,\\n \\\"申请人\\\": \\\"姓名\\\",\\n \\\"发票类别\\\": \\\"专用发票/普通发票\\\",\\n \\\"开票公司信息\\\"\\\n : {\\n \\\"公司名称\\\": \\\"开票公司名称\\\",\\n \\\"税务登记号\\\": \\\"统一社会信用代码\\\",\\n \\\n \\ \\\"地址及电话\\\": \\\"详细地址和联系电话\\\",\\n \\\"开户行及账号\\\": \\\"银行全称和账号\\\"\\n },\\n\\\n \\ \\\"付款单位信息\\\": {\\n \\\"公司名称\\\": \\\"付款单位全称\\\",\\n \\\"税务登记号\\\": \\\"统一社会信用代码\\\"\\\n ,\\n \\\"地址及电话\\\": \\\"详细地址和联系电话\\\",\\n \\\"开户行及账号\\\": \\\"银行全称和账号\\\"\\n \\\n \\ },\\n \\\"商品明细\\\": [\\n {\\n \\\"序号\\\": 1,\\n \\\"应税劳务名称\\\"\\\n : \\\"商品/服务名称\\\",\\n \\\"规格型号\\\": \\\"具体规格\\\",\\n \\\"单位\\\": \\\"计量单位\\\"\\\n ,\\n \\\"数量\\\": \\\"数值\\\",\\n \\\"单价不含税\\\": \\\"数值\\\",\\n \\\"金额不含税\\\"\\\n : \\\"数值\\\",\\n \\\"税率\\\": \\\"税率数值\\\",\\n \\\"税额\\\": \\\"税额数值\\\"\\n \\\n \\ }\\n ],\\n \\\"合计信息\\\": {\\n \\\"不含税金额合计\\\": \\\"数值\\\",\\n \\\"税额合计\\\"\\\n : \\\"数值\\\",\\n \\\"价税合计\\\": \\\"数值\\\",\\n \\\"大写金额\\\": \\\"中文大写金额\\\"\\n },\\n\\\n \\ \\\"其他信息\\\": {\\n \\\"财务负责人\\\": \\\"姓名\\\",\\n \\\"领票人\\\": \\\"姓名\\\",\\n \\\n \\ \\\"开票人\\\": \\\"姓名\\\",\\n \\\"开票日期\\\": \\\"YYYY-MM-DD\\\",\\n \\\"发票号码\\\"\\\n : \\\"发票号码\\\",\\n \\\"备注\\\": \\\"备注信息\\\"\\n }\\n }\\n}\\n```\\n\\n## Initialization\\n\\\n \\n作为发票申请单信息提取专家,我将帮助您从发票申请单数据中准确提取所有必要信息,确保后续发票开具的准确性和合规性。\\n\\n请提供需要处理的发票申请单数据,我将按照标准格式为您提取并整理所有关键信息。\\n\\\n \\n## 提取规则说明\\n\\n### 1. 数据识别规则\\n- **应税劳务名称**:以\\\"*\\\"开头和结尾的分类标识,如\\\"*文具*\\\"\\\n 、\\\"*计算机外部设备*\\\"\\n- **金额计算**:确保\\\"金额(不含税) = 数量 × 单价(不含税)\\\"\\n- **税额计算**:确保\\\"\\\n 税额 = 金额(不含税) × 税率\\\"\\n- **合计验证**:验证各项合计数据的准确性\\n\\n### 2. 格式标准化\\n- **日期格式**:统一为YYYY-MM-DD格式\\n\\\n - **金额格式**:保留小数点后2位\\n- **税率格式**:以小数形式表示(如0.13表示13%)\\n\\n### 3. 数据完整性检查\\n\\\n - 确保所有必填字段都有数据\\n- 对于空值或异常值进行标注\\n- 验证税务登记号格式的正确性\\n- 检查银行账号信息的完整性\\n- 当同一批次中有多张发票申请单时,如果后续申请单缺少付款单位信息,自动从第一张完整的申请单中补全相关信息\\n\\\n \\n### 4. 多申请单处理\\n- 当一个文件包含多张申请单时,分别提取每张申请单的信息\\n- 为每张申请单分配唯一标识\\n- 保持各申请单数据的独立性\"\n - id: 69c0b89f-de94-4f5c-8abd-0af3e76ac635\n role: user\n text: 请根据用户上传的发票申请单{{#1754379634717.text#}} 返回发票填开的必要发票信息JSON格式数据\n selected: false\n title: 发票申请单信息提取专家\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1754379696135'\n position:\n x: 632\n y: 308\n positionAbsolute:\n x: 632\n y: 308\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-ai/DeepSeek-V3\n provider: langgenius/modelscope/modelscope\n prompt_template:\n - id: 274afeef-eba3-4b0e-85d2-7cf653bdf392\n role: system\n text: \"# Role: 发票预览HTML生成专家\\n\\n## Profile\\n\\n- Author: 智能发票系统专家\\n- Version:\\\n \\ 3.0\\n- Language: 中文\\n- Description: 专门基于发票申请单JSON数据生成专业、美观的发票预览HTML页面的AI专家,完美支持多发票展示、响应式设计和中国增值税发票标准格式\\n\\\n \\n## Skills\\n\\n1. 精确解析发票申请单JSON数据结构,支持多发票数据处理\\n2. 生成符合中国增值税发票标准的HTML页面布局\\n\\\n 3. 创建响应式、美观的发票预览界面,支持标签页切换\\n4. 优化打印样式和用户体验,确保专业外观\\n5. 实现CSS纯净切换功能,无需JavaScript依赖\\n\\\n 6. 智能格式化金额、税率、日期等财务数据\\n\\n## Rules\\n\\n1. 必须严格按照中国增值税发票的标准格式生成HTML\\n2. 确保所有金额、税率、税额的显示格式正确(保留两位小数,添加千位分隔符)\\n\\\n 3. 支持多张发票的标签页切换预览功能,使用CSS radio按钮实现\\n4. 保持界面美观、专业,符合财务系统标准\\n5. 生成的HTML必须包含完整的内联CSS样式\\n\\\n 6. 确保打印友好的样式设计\\n7. 应税劳务名称中的分类标识(如*公共安全设备*)需要高亮显示\\n8. 自动补全缺失信息,如日期默认为当前日期\\n\\\n \\n## Workflow\\n\\n1. **JSON数据解析**:\\n - 解析\\\"发票申请单信息\\\"数组,识别发票数量\\n - 提取每张发票的完整信息结构\\n\\\n \\ - 验证数据完整性和格式正确性\\n\\n2. **多发票结构设计**:\\n - 如果有多张发票,生成标签页切换结构\\n - 使用CSS\\\n \\ radio按钮实现无JavaScript切换\\n - 为每张发票分配唯一ID和标签\\n\\n3. **HTML结构生成**:\\n \\\n \\ - 创建完整的HTML5文档结构\\n - 生成发票预览容器和卡片布局\\n - 构建标准的增值税发票格式\\n\\n4. **数据填充与格式化**:\\n\\\n \\ - 将JSON数据准确填充到HTML模板\\n - 格式化金额(添加¥符号和千位分隔符)\\n - 转换税率为百分比显示\\n \\\n \\ - 处理应税劳务名称的分类高亮\\n\\n5. **样式优化**:\\n - 应用专业的CSS样式\\n - 确保响应式设计\\n \\\n \\ - 优化打印样式\\n\\n## JSON数据结构规范\\n\\n期望的输入JSON格式:\\n```json\\n{\\n \\\"发票申请单信息\\\"\\\n : [\\n {\\n \\\"申请日期\\\": \\\"2024-02-05\\\",\\n \\\"申请人\\\": \\\"赵孟鑫\\\",\\n\\\n \\ \\\"发票类别\\\": \\\"专用发票\\\",\\n \\\"开票公司信息\\\": {\\n \\\"公司名称\\\": \\\"\\\n 新疆文旅资本控股有限公司\\\",\\n \\\"税务登记号\\\": \\\"统一社会信用代码\\\",\\n \\\"地址及电话\\\":\\\n \\ \\\"详细地址和联系电话\\\",\\n \\\"开户行及账号\\\": \\\"银行全称和账号\\\"\\n },\\n \\\"\\\n 付款单位信息\\\": {\\n \\\"公司名称\\\": \\\"新旅昌吉文化旅游开发有限公司\\\",\\n \\\"税务登记号\\\"\\\n : \\\"91652300MADG6Y4P0B\\\",\\n \\\"地址及电话\\\": \\\"地址信息\\\",\\n \\\"开户行及账号\\\"\\\n : \\\"银行账号信息\\\"\\n },\\n \\\"商品明细\\\": [\\n {\\n \\\"序号\\\"\\\n : 1,\\n \\\"应税劳务名称\\\": \\\"*公共安全设备*援邦 干粉灭火器...\\\",\\n \\\"规格型号\\\"\\\n : \\\"YB-35KG\\\",\\n \\\"单位\\\": \\\"个\\\",\\n \\\"数量\\\": \\\"10\\\",\\n\\\n \\ \\\"单价不含税\\\": \\\"460.18\\\",\\n \\\"金额不含税\\\": \\\"4601.77\\\",\\n\\\n \\ \\\"税率\\\": \\\"0.13\\\",\\n \\\"税额\\\": \\\"598.23\\\"\\n }\\n\\\n \\ ],\\n \\\"合计信息\\\": {\\n \\\"不含税金额合计\\\": \\\"52389.38\\\",\\n \\\n \\ \\\"税额合计\\\": \\\"6810.62\\\",\\n \\\"价税合计\\\": \\\"59200.00\\\",\\n \\\n \\ \\\"大写金额\\\": \\\"伍万玖仟贰佰元整\\\"\\n },\\n \\\"其他信息\\\": {\\n \\\"财务负责人\\\"\\\n : null,\\n \\\"领票人\\\": \\\"赵孟鑫\\\",\\n \\\"开票人\\\": null,\\n \\\"\\\n 开票日期\\\": \\\"2024-02-05\\\",\\n \\\"发票号码\\\": null,\\n \\\"备注\\\": null\\n\\\n \\ }\\n }\\n ]\\n}\\n```\\n\\n## OutputFormat\\n\\n生成完整的HTML页面,包含以下结构:\\n\\\n \\n```html\\n\u003c!DOCTYPE html>\\n\u003chtml lang=\\\"zh-CN\\\">\\n\u003chead>\\n \u003cmeta charset=\\\"\\\n UTF-8\\\">\\n \u003cmeta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\"\\\n >\\n \u003ctitle>发票预览 - 智能发票系统\u003c/title>\\n \u003cstyle>\\n /* 完整的内联CSS样式\\\n \\ */\\n \u003c/style>\\n\u003c/head>\\n\u003cbody>\\n \u003cdiv class=\\\"invoice-preview-container\\\"\\\n >\\n \u003c!-- 多发票标签页(如果有多张发票) -->\\n \u003c!-- 发票预览内容 -->\\n \u003c/div>\\n\\\n \u003c/body>\\n\u003c/html>\\n```\\n\\n## CSS样式规范\\n\\n### 1. 核心样式变量\\n```css\\n:root {\\n\\\n \\ --primary-color: #3498db;\\n --primary-dark: #2980b9;\\n --text-color:\\\n \\ #2c3e50;\\n --border-color: #bdc3c7;\\n --background-color: #f5f5f5;\\n\\\n \\ --card-background: #ffffff;\\n --success-color: #27ae60;\\n --warning-color:\\\n \\ #f39c12;\\n}\\n```\\n\\n### 2. 发票卡片样式\\n- 白色背景,深色边框\\n- 圆角设计,阴影效果\\n- 清晰的信息分组布局\\n\\\n \\n### 3. 标签页切换样式\\n- 使用CSS radio按钮实现\\n- 蓝色主题,选中状态高亮\\n- 平滑的切换效果\\n\\n### 4.\\\n \\ 表格样式\\n- 标准的发票表格布局\\n- 交替行颜色\\n- 清晰的边框和对齐\\n\\n### 5. 响应式设计\\n- 移动端适配\\n- 打印样式优化\\n\\\n - 字体大小自适应\\n\\n## 数据处理规则\\n\\n### 1. 金额格式化\\n```javascript\\n// 示例:52389.38\\\n \\ → ¥52,389.38\\nfunction formatAmount(amount) {\\n return `¥${parseFloat(amount).toLocaleString('zh-CN',\\\n \\ {\\n minimumFractionDigits: 2,\\n maximumFractionDigits:\\\n \\ 2\\n })}`;\\n}\\n```\\n\\n### 2. 税率处理\\n```javascript\\n// 示例:0.13 → 13%\\n\\\n function formatTaxRate(rate) {\\n return `${(parseFloat(rate) * 100).toFixed(0)}%`;\\n\\\n }\\n```\\n\\n### 3. 应税劳务名称处理\\n```javascript\\n// 示例:*公共安全设备*援邦 干粉灭火器\\n// 输出:\u003cspan\\\n \\ class=\\\"item-category\\\">*公共安全设备*\u003c/span>援邦 干粉灭火器\\nfunction formatItemName(name)\\\n \\ {\\n return name.replace(/\\\\*([^*]+)\\\\*/g, '\u003cspan class=\\\"item-category\\\"\\\n >*$1*\u003c/span>');\\n}\\n```\\n\\n### 4. 日期处理\\n- 空值或null显示为当前日期\\n- 统一格式:YYYY-MM-DD\\n\\\n - 中文日期格式支持\\n\\n## 多发票支持特性\\n\\n### 1. 标签页结构\\n```html\\n\u003c!-- 隐藏的radio按钮控制切换\\\n \\ -->\\n\u003cinput type=\\\"radio\\\" id=\\\"invoice-radio-0\\\" name=\\\"invoice-tabs\\\"\\\n \\ checked style=\\\"display: none;\\\">\\n\u003cinput type=\\\"radio\\\" id=\\\"invoice-radio-1\\\"\\\n \\ name=\\\"invoice-tabs\\\" style=\\\"display: none;\\\">\\n\\n\u003c!-- 标签页按钮 -->\\n\\\n \u003cdiv class=\\\"invoice-tabs\\\">\\n \u003clabel for=\\\"invoice-radio-0\\\" class=\\\"\\\n tab-button\\\">发票 1 - 专用发票\u003c/label>\\n \u003clabel for=\\\"invoice-radio-1\\\" class=\\\"\\\n tab-button\\\">发票 2 - 专用发票\u003c/label>\\n\u003c/div>\\n\\n\u003c!-- 发票内容 -->\\n\u003cdiv class=\\\"\\\n invoice-cards\\\">\\n \u003cdiv class=\\\"invoice-card\\\" id=\\\"invoice-0\\\">...\u003c/div>\\n\\\n \\ \u003cdiv class=\\\"invoice-card\\\" id=\\\"invoice-1\\\">...\u003c/div>\\n\u003c/div>\\n\\\n ```\\n\\n### 2. CSS切换逻辑\\n```css\\n/* 默认隐藏所有发票 */\\n.invoice-card { display:\\\n \\ none; }\\n\\n/* 显示选中的发票 */\\n#invoice-radio-0:checked ~ .invoice-cards\\\n \\ #invoice-0 { display: block !important; }\\n#invoice-radio-1:checked\\\n \\ ~ .invoice-cards #invoice-1 { display: block !important; }\\n\\n/* 标签页选中状态\\\n \\ */\\n#invoice-radio-0:checked ~ .invoice-tabs label[for=\\\"invoice-radio-0\\\"\\\n ] {\\n background: var(--primary-color) !important;\\n color: white\\\n \\ !important;\\n}\\n```\\n\\n## 发票布局结构\\n\\n### 1. 发票头部\\n- 发票类型标题(增值税专用发票/普通发票)\\n\\\n - 发票编号(自动生成)\\n- 渐变背景设计\\n\\n### 2. 公司信息区域\\n- 购买方信息卡片(左侧)\\n- 销售方信息卡片(右侧)\\n\\\n - 图标标识和清晰布局\\n\\n### 3. 商品明细表格\\n- 标准8列布局\\n- 应税劳务名称分类高亮\\n- 金额和税率格式化显示\\n\\n\\\n ### 4. 合计信息区域\\n- 不含税金额、税额、价税合计\\n- 大写金额显示\\n- 突出的总计样式\\n\\n### 5. 发票底部\\n-\\\n \\ 开票人、复核人、收款人信息\\n- 图标标识\\n- 专业的底部布局\\n\\n## 打印优化\\n\\n### 1. 打印媒体查询\\n```css\\n\\\n @media print {\\n .invoice-tabs { display: none !important; }\\n .invoice-card\\\n \\ { \\n display: block !important; \\n page-break-after: always;\\n\\\n \\ box-shadow: none;\\n border: 2px solid #000;\\n }\\n \\\n \\ body { background: white !important; }\\n}\\n```\\n\\n### 2. 打印友好特性\\n\\\n - 移除不必要的装饰元素\\n- 确保黑白打印效果\\n- 每张发票独立分页\\n- 优化字体大小和间距\\n\\n## 错误处理\\n\\n### 1.\\\n \\ 数据验证\\n- 检查JSON格式正确性\\n- 验证必要字段存在\\n- 处理空值和异常数据\\n\\n### 2. 容错机制\\n- 缺失数据的默认值处理\\n\\\n - 格式错误的自动修正\\n- 友好的错误提示\\n\\n### 3. 兼容性处理\\n- 支持不同版本的JSON结构\\n- 向后兼容性保证\\n-\\\n \\ 浏览器兼容性优化\\n\\n## Initialization\\n\\n作为发票预览HTML生成专家,我将根据您提供的发票申请单JSON数据,生成专业、美观、符合中国增值税发票标准的HTML预览页面。\\n\\\n \\n我的核心能力包括:\\n1. \\U0001F3AF **精确解析**:准确解析复杂的JSON数据结构\\n2. \\U0001F4C4 **标准格式**:严格按照中国增值税发票格式生成\\n\\\n 3. \\U0001F504 **多发票支持**:完美支持多张发票的标签页切换\\n4. \\U0001F4B0 **智能格式化**:自动格式化金额、税率、日期等数据\\n\\\n 5. \\U0001F3A8 **专业样式**:美观的界面设计和响应式布局\\n6. \\U0001F5A8️ **打印优化**:专门优化的打印样式\\n\\\n \\n请提供需要处理的JSON数据,我将生成完整的HTML发票预览页面!\\n\\n## Example Usage\\n\\n**输入示例**:\\n\\\n ```json\\n{\\n \\\"发票申请单信息\\\": [\\n {\\n \\\"申请人\\\": \\\"赵孟鑫\\\",\\n \\\"\\\n 发票类别\\\": \\\"专用发票\\\",\\n \\\"开票公司信息\\\": {\\n \\\"公司名称\\\": \\\"新疆文旅资本控股有限公司\\\"\\\n \\n },\\n \\\"付款单位信息\\\": {\\n \\\"公司名称\\\": \\\"新旅昌吉文化旅游开发有限公司\\\"\\\n ,\\n \\\"税务登记号\\\": \\\"91652300MADG6Y4P0B\\\"\\n },\\n \\\"商品明细\\\"\\\n : [...],\\n \\\"合计信息\\\": {...}\\n }\\n ]\\n}\\n```\\n\\n**输出**:完整的HTML发票预览页面,包含:\\n\\\n - 完整的HTML5文档结构\\n- 内联CSS样式\\n- 多发票标签页切换功能\\n- 专业的发票布局\\n- 格式化的数据显示\\n- 打印优化样式\\n\\\n \\n## Advanced Features\\n\\n1. **智能数据补全**:自动补全缺失的日期、编号等信息\\n2. **动态样式适配**:根据发票数量自动调整布局\\n\\\n 3. **数据验证提示**:检测并提示数据异常\\n4. **可访问性支持**:支持键盘导航和屏幕阅读器\\n5. **性能优化**:高效的CSS渲染和最小化的DOM结构\\n\\\n 6. **国际化准备**:预留多语言支持接口\\n\\n现在请提供您的JSON数据,我将为您生成专业的发票预览HTML页面!\"\n - id: 50bb945a-0b2b-4be5-8499-b4050219efa9\n role: user\n text: 请基于大模型输出{{#1754379696135.text#}}格式的数据生成HTML代码\n selected: true\n title: 发票预览HTML生成专家\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1754383424904'\n position:\n x: 1000\n y: 308\n positionAbsolute:\n x: 1000\n y: 308\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"import json\\nimport re\\nimport time\\nimport requests\\n\\ndef main(json_html:\\\n \\ str, apikey: str,apiurl: str) -> dict:\\n try:\\n # 去除输入字符串中的\\\n \\ ```html 和 ``` 标记\\n match = re.search(r'```html\\\\s*([\\\\s\\\\S]*?)```',\\\n \\ json_html, re.DOTALL)\\n \\n if match:\\n # group(1)\\\n \\ 获取第一个捕获组的内容,即纯HTML代码\\n # .strip() 去除可能存在的前后空白\\n \\\n \\ html_content = match.group(1).strip()\\n else:\\n # 如果在输入中找不到HTML代码块,则返回错误\\n\\\n \\ raise ValueError(\\\"未能在输入中找到 ```html ... ``` 代码块。\\\")\\n \\\n \\ \\n # 生成时间戳,确保文件名唯一\\n timestamp = int(time.time())\\n \\\n \\ filename = f\\\"makehtml_{timestamp}.html\\\"\\n \\n # API端点(假设本地运行)\\n\\\n \\ url = f\\\"{apiurl}\\\"\\n \\n # 请求数据\\n payload\\\n \\ = {\\n \\\"html_content\\\": html_content,\\n \\\"filename\\\"\\\n : filename # 使用传入的文件名\\n }\\n \\n # 设置请求头(包含认证token)\\n\\\n \\ headers = {\\n \\\"Authorization\\\": f\\\"Bearer {apikey}\\\"\\\n , # 替换为实际的认证token\\n \\\"Content-Type\\\": \\\"application/json\\\"\\n\\\n \\ }\\n \\n try:\\n # 发送POST请求\\n \\\n \\ response = requests.post(url, json=payload, headers=headers)\\n \\\n \\ \\n # 检查响应状态\\n if response.status_code == 200:\\n\\\n \\ result = response.json()\\n html_url = result.get(\\\"\\\n html_url\\\", \\\"\\\")\\n generated_filename = result.get(\\\"filename\\\"\\\n , \\\"\\\")\\n \\n # 返回结果\\n return\\\n \\ {\\n \\\"html_url\\\": html_url,\\n \\\"\\\n filename\\\": generated_filename,\\n \\\"markdown_result\\\"\\\n : f\\\"[点击查看]({html_url})\\\"\\n }\\n else:\\n \\\n \\ raise Exception(f\\\"HTTP Error: {response.status_code}, Message:\\\n \\ {response.text}\\\")\\n \\n except requests.exceptions.RequestException\\\n \\ as e:\\n raise Exception(f\\\"Request failed: {str(e)}\\\")\\n \\\n \\ \\n except Exception as e:\\n return {\\n \\\"error\\\"\\\n : f\\\"Error: {str(e)}\\\"\\n }\"\n code_language: python3\n desc: ''\n outputs:\n filename:\n children: null\n type: string\n html_url:\n children: null\n type: string\n markdown_result:\n children: null\n type: string\n selected: false\n title: 代码执行\n type: code\n variables:\n - value_selector:\n - '1754383424904'\n - text\n value_type: string\n variable: json_html\n - value_selector:\n - env\n - apikey\n value_type: string\n variable: apikey\n - value_selector:\n - env\n - apiurl\n value_type: string\n variable: apiurl\n height: 53\n id: '1754384870547'\n position:\n x: 1304\n y: 308\n positionAbsolute:\n x: 1304\n y: 308\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: -38.99605673852193\n y: -104.562255612635\n zoom: 1\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":29475,"content_sha256":"242bfc0f336aa6f4a00300431790739f9dff05e9da1c79b848ee19d8ad96f170"},{"filename":"organized_dsl/05_文档处理与OCR/票据识别/76-dify案例分享-100% 识别率!发票、汇票、信用证全搞定的通用票据识别工作流.yml","content":"app:\n description: ''\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 76-dify案例分享-100% 识别率!发票、汇票、信用证全搞定的通用票据识别工作流\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/siliconflow:0.0.22@588c9f60178d37985626f1118347eb92bedcd8cb27d25bafc4ac929027ec51dc\nkind: app\nversion: 0.3.0\nworkflow:\n conversation_variables: []\n environment_variables:\n - description: ''\n id: 0813f226-61ad-4259-8e45-78a426ac25ca\n name: apikey\n selector:\n - env\n - apikey\n value: sk-zhouhui1122444\n value_type: string\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 500\n batch_count_limit: 10\n file_size_limit: 100\n image_file_size_limit: 100\n video_file_size_limit: 500\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: http-request\n targetType: code\n id: 1754984205380-source-1754985243952-target\n source: '1754984205380'\n sourceHandle: source\n target: '1754985243952'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: llm\n targetType: answer\n id: 1754990293888-source-answer-target\n source: '1754990293888'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: llm\n targetType: answer\n id: 1755015662910-source-1755015718694-target\n source: '1755015662910'\n sourceHandle: source\n target: '1755015718694'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: llm\n targetType: answer\n id: 17550156921690-source-1755015721479-target\n source: '17550156921690'\n sourceHandle: source\n target: '1755015721479'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: start\n targetType: if-else\n id: 1754982121363-source-1755015549373-target\n source: '1754982121363'\n sourceHandle: source\n target: '1755015549373'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: if-else\n targetType: http-request\n id: 1755015549373-true-1754984205380-target\n source: '1755015549373'\n sourceHandle: 'true'\n target: '1754984205380'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: if-else\n targetType: answer\n id: 1755015549373-c252cda7-9889-4c06-95ed-f0546a9ed798-1755015753275-target\n selected: false\n source: '1755015549373'\n sourceHandle: c252cda7-9889-4c06-95ed-f0546a9ed798\n target: '1755015753275'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: llm\n id: 1754985243952-source-1754990293888-target\n source: '1754985243952'\n sourceHandle: source\n target: '1754990293888'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: http-request\n targetType: code\n id: 17550642968960-source-17550643012930-target\n source: '17550642968960'\n sourceHandle: source\n target: '17550643012930'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: if-else\n targetType: http-request\n id: 1755015549373-1aeb57d6-1521-4bd8-aee1-1ae22af5df21-17550642968960-target\n source: '1755015549373'\n sourceHandle: 1aeb57d6-1521-4bd8-aee1-1ae22af5df21\n target: '17550642968960'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: if-else\n targetType: http-request\n id: 1755015549373-6e72ca1a-2355-4aad-a03a-0e8aa46af9d3-17550643393220-target\n source: '1755015549373'\n sourceHandle: 6e72ca1a-2355-4aad-a03a-0e8aa46af9d3\n target: '17550643393220'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: llm\n id: 17550643012930-source-1755015662910-target\n source: '17550643012930'\n sourceHandle: source\n target: '1755015662910'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: http-request\n targetType: code\n id: 17550643393220-source-17550643558470-target\n source: '17550643393220'\n sourceHandle: source\n target: '17550643558470'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInLoop: false\n sourceType: code\n targetType: llm\n id: 17550643558470-source-17550156921690-target\n source: '17550643558470'\n sourceHandle: source\n target: '17550156921690'\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - image\n - document\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: 文件\n max_length: 48\n options: []\n required: true\n type: file\n variable: file\n - label: 票据种类\n max_length: 48\n options:\n - 发票\n - 银行凭证单据\n - 银行信用证\n - 增值税申报表等\n required: true\n type: select\n variable: typebill\n height: 115\n id: '1754982121363'\n position:\n x: -62\n y: 312\n positionAbsolute:\n x: -62\n y: 312\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#1754990293888.text#}}'\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 104\n id: answer\n position:\n x: 1727.0151251804105\n y: 307\n positionAbsolute:\n x: 1727.0151251804105\n y: 307\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n authorization:\n config: null\n type: no-auth\n body:\n data:\n - type: text\n value: \"{\\n \\\"file_url\\\": \\\"{{#1754982121363.file.url#}}\\\",\\n \\\"\\\n mode\\\": \\\"gpu\\\",\\n \\\"preserve_layout\\\": true,\\n \\\"ocr_enabled\\\"\\\n : true\\n }\"\n type: raw-text\n desc: ''\n headers: 'Authorization:Bearer {{#env.apikey#}}\n\n Content-Type:application/json'\n method: POST\n params: ''\n retry_config:\n max_retries: 3\n retry_enabled: true\n retry_interval: 100\n selected: false\n ssl_verify: true\n timeout:\n max_connect_timeout: 0\n max_read_timeout: 0\n max_write_timeout: 0\n title: HTTP 请求\n type: http-request\n url: https://pizhapi.duckcloud.fun/ocr-extract/\n variables: []\n height: 139\n id: '1754984205380'\n position:\n x: 719\n y: 307\n positionAbsolute:\n x: 719\n y: 307\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"import json\\n\\ndef main(body: str) -> dict:\\n try:\\n # 解析\\\n \\ body 中的 JSON 数据\\n data = json.loads(body)\\n except json.JSONDecodeError\\\n \\ as e:\\n return {\\\"error\\\": f\\\"body 内容不是有效的 JSON 格式。错误信息: {str(e)}\\\"\\\n }\\n\\n # 检查解析后的数据格式\\n if not isinstance(data, dict):\\n return\\\n \\ {\\\"error\\\": \\\"解析后的 body 内容不是 JSON 对象\\\"}\\n\\n # 检查是否包含 markdown_content\\\n \\ 字段\\n if \\\"markdown_content\\\" not in data:\\n return {\\\"error\\\"\\\n : \\\"数据中缺少 markdown_content 字段\\\"}\\n\\n # 提取并处理 markdown_content\\n markdown_content\\\n \\ = data[\\\"markdown_content\\\"]\\n markdown_content = markdown_content.replace(\\\"\\\n \\\\\\\\n\\\", \\\"\\\\n\\\") # 处理转义换行符\\n\\n # 去掉开头的 GPU 处理信息\\n lines = markdown_content.split(\\\"\\\n \\\\n\\\")\\n start_index = 0 # 默认从第0行开始\\n # 找到 \\\"## Page 1\\\" 所在行,从这一行开始保留内容\\n\\\n \\ for i, line in enumerate(lines):\\n if line.strip() == \\\"## Page\\\n \\ 1\\\":\\n start_index = i\\n break\\n\\n # 清理内容(去掉空行)\\n\\\n \\ cleaned_content = \\\"\\\\n\\\".join(lines[start_index:]).strip()\\n\\n \\\n \\ # 返回字典类型的结果,包含处理后的内容\\n return {\\\"result\\\": cleaned_content}\"\n code_language: python3\n default_value:\n - key: result\n type: string\n value: ''\n desc: ''\n error_strategy: default-value\n outputs:\n result:\n children: null\n type: string\n retry_config:\n max_retries: 3\n retry_enabled: true\n retry_interval: 1000\n selected: false\n title: 代码执行\n type: code\n variables:\n - value_selector:\n - '1754984205380'\n - body\n value_type: string\n variable: body\n height: 119\n id: '1754985243952'\n position:\n x: 1031\n y: 312\n positionAbsolute:\n x: 1031\n y: 312\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-ai/DeepSeek-V3\n provider: langgenius/siliconflow/siliconflow\n prompt_template:\n - id: 233f735d-c3cb-48ea-bf3b-ccb34028913c\n role: system\n text: \"# Role: 发票信息提取专家\\n\\n## Profile\\n\\n- Author: 周辉\\n- Version: 1.0\\n\\\n - Language: 中文\\n- Description: 专业的发票信息提取专家,能够准确识别并提取各种类型发票的关键信息,并以标准JSON格式返回结构化数据。\\n\\\n \\n## Skills\\n\\n1. 精准识别发票类型(增值税专用发票、普通发票、电子发票、出租车发票、火车票、通行费电子发票等)\\n2. 准确提取发票中的所有关键字段信息\\n\\\n 3. 按照预定义的JSON格式规范输出结构化数据\\n4. 处理各种发票格式和布局变化\\n5. 确保数据提取的完整性和准确性\\n\\n## Rules\\n\\\n \\n1. 必须严格按照发票类型对应的字段格式进行信息提取\\n2. 所有返回结果必须为有效的JSON格式\\n3. 对于无法识别或缺失的字段,使用null值或空字符串\\\"\\\n \\\"\\n4. 保持数字格式的准确性(金额、数量等)\\n5. 日期格式统一为YYYY-MM-DD\\n6. 时间格式统一为HH:MM\\n\\n##\\\n \\ Workflow\\n\\n1. 首先识别发票类型\\n2. 根据发票类型选择对应的字段提取模板\\n3. 逐一提取所有必需字段\\n4. 验证提取数据的完整性和格式正确性\\n\\\n 5. 输出标准JSON格式结果\\n\\n## JSON格式模板\\n\\n### 1. 增值税专用发票/普通发票\\n```json\\n{\\n \\\"\\\n invoice_type\\\": \\\"增值税专用发票\\\" | \\\"增值税普通发票\\\",\\n \\\"machine_number\\\": \\\"机器编号\\\"\\\n ,\\n \\\"invoice_code\\\": \\\"发票代码\\\",\\n \\\"invoice_number\\\": \\\"发票号码\\\",\\n \\\"\\\n issue_date\\\": \\\"开票日期\\\",\\n \\\"verification_code\\\": \\\"校验码\\\",\\n \\\"buyer_name\\\"\\\n : \\\"购买方名称\\\",\\n \\\"buyer_tax_id\\\": \\\"购买方纳税人识别号\\\",\\n \\\"buyer_address_phone\\\"\\\n : \\\"购买方地址、电话\\\",\\n \\\"buyer_bank_account\\\": \\\"开户行及账号\\\",\\n \\\"goods_service_name\\\"\\\n : \\\"货物或应税劳务、服务名称\\\",\\n \\\"specification\\\": \\\"规格型号\\\",\\n \\\"unit\\\": \\\"单位\\\"\\\n ,\\n \\\"quantity\\\": \\\"数量\\\",\\n \\\"unit_price\\\": \\\"单价\\\",\\n \\\"amount\\\": \\\"\\\n 金额\\\",\\n \\\"tax_rate\\\": \\\"税率\\\",\\n \\\"tax_amount\\\": \\\"税额\\\",\\n \\\"total_amount_chinese\\\"\\\n : \\\"价税合计(大写)\\\",\\n \\\"total_amount_numeric\\\": \\\"价税合计(小写)\\\",\\n \\\"seller_name\\\"\\\n : \\\"销售方名称\\\",\\n \\\"seller_tax_id\\\": \\\"销售方纳税人识别号\\\",\\n \\\"seller_address_phone\\\"\\\n : \\\"销售方地址、电话\\\",\\n \\\"seller_bank_account\\\": \\\"开户行及账号\\\",\\n \\\"remarks\\\"\\\n : \\\"备注\\\",\\n \\\"payee\\\": \\\"收款人\\\",\\n \\\"reviewer\\\": \\\"复核\\\",\\n \\\"issuer\\\"\\\n : \\\"开票人\\\"\\n}\\n```\\n\\n### 2. 电子发票(全电发票)\\n```json\\n{\\n \\\"invoice_type\\\"\\\n : \\\"电子发票\\\",\\n \\\"invoice_number\\\": \\\"发票号码\\\",\\n \\\"issue_date\\\": \\\"开票日期\\\"\\\n ,\\n \\\"buyer_name\\\": \\\"购买方信息名称\\\",\\n \\\"buyer_credit_code\\\": \\\"购买方统一社会信用代码/纳税人识别号\\\"\\\n ,\\n \\\"seller_name\\\": \\\"销售方信息名称\\\",\\n \\\"seller_credit_code\\\": \\\"销售方统一社会信用代码/纳税人识别号\\\"\\\n ,\\n \\\"item_name\\\": \\\"项目名称\\\",\\n \\\"specification\\\": \\\"规格型号\\\",\\n \\\"unit\\\"\\\n : \\\"单位\\\",\\n \\\"quantity\\\": \\\"数量\\\",\\n \\\"unit_price\\\": \\\"单价\\\",\\n \\\"amount\\\"\\\n : \\\"金额\\\",\\n \\\"tax_rate\\\": \\\"税率/征收率\\\",\\n \\\"tax_amount\\\": \\\"税额\\\",\\n \\\"\\\n subtotal\\\": \\\"合计\\\",\\n \\\"total_amount_chinese\\\": \\\"价税合计(大写)\\\",\\n \\\"total_amount_numeric\\\"\\\n : \\\"价税合计(小写)\\\",\\n \\\"remarks\\\": \\\"备注\\\"\\n}\\n```\\n\\n### 3. 出租车发票\\n```json\\n\\\n {\\n \\\"invoice_type\\\": \\\"出租车发票\\\",\\n \\\"invoice_code\\\": \\\"发票代码\\\",\\n \\\"\\\n invoice_number\\\": \\\"发票号码\\\",\\n \\\"company\\\": \\\"单位\\\",\\n \\\"vehicle_number\\\"\\\n : \\\"车号\\\",\\n \\\"driver_id\\\": \\\"工号\\\",\\n \\\"date\\\": \\\"日期\\\",\\n \\\"time\\\":\\\n \\ \\\"时间\\\",\\n \\\"unit_price\\\": \\\"单价\\\",\\n \\\"distance\\\": \\\"里程\\\",\\n \\\"waiting_time\\\"\\\n : \\\"等候\\\",\\n \\\"amount\\\": \\\"金额\\\"\\n}\\n```\\n\\n### 4. 火车票\\n```json\\n{\\n \\\"\\\n invoice_type\\\": \\\"火车票\\\",\\n \\\"departure_station\\\": \\\"始发站\\\",\\n \\\"arrival_station\\\"\\\n : \\\"终点站\\\",\\n \\\"train_number\\\": \\\"车次\\\",\\n \\\"departure_time\\\": \\\"出发时间\\\"\\\n ,\\n \\\"ticket_price\\\": \\\"票价\\\",\\n \\\"id_number\\\": \\\"身份证号\\\",\\n \\\"passenger_name\\\"\\\n : \\\"姓名\\\"\\n}\\n```\\n\\n### 5. 新版火车票-铁路电子客票\\n```json\\n{\\n \\\"invoice_type\\\"\\\n : \\\"铁路电子客票\\\",\\n \\\"invoice_number\\\": \\\"发票号码\\\",\\n \\\"issue_date\\\": \\\"开票日期\\\"\\\n ,\\n \\\"departure_time\\\": \\\"出发时间\\\",\\n \\\"departure_station\\\": \\\"始发站\\\",\\n\\\n \\ \\\"arrival_station\\\": \\\"终点站\\\",\\n \\\"train_number\\\": \\\"车次\\\",\\n \\\"ticket_price\\\"\\\n : \\\"票价\\\",\\n \\\"id_number\\\": \\\"身份证号\\\",\\n \\\"passenger_name\\\": \\\"姓名\\\",\\n\\\n \\ \\\"e_ticket_number\\\": \\\"电子客票号\\\",\\n \\\"buyer_name\\\": \\\"购买方名称\\\",\\n \\\"\\\n credit_code\\\": \\\"统一社会信用代码\\\"\\n}\\n```\\n\\n### 6. 通行费电子发票\\n```json\\n{\\n \\\"\\\n invoice_type\\\": \\\"通行费电子发票\\\",\\n \\\"invoice_code\\\": \\\"发票代码\\\",\\n \\\"invoice_number\\\"\\\n : \\\"发票号码\\\",\\n \\\"issue_date\\\": \\\"开票日期\\\",\\n \\\"buyer_name\\\": \\\"购买方名称\\\"\\\n ,\\n \\\"buyer_tax_id\\\": \\\"购买方纳税人识别号\\\",\\n \\\"buyer_address_phone\\\": \\\"购买方地址、电话\\\"\\\n ,\\n \\\"buyer_bank_account\\\": \\\"开户行及账号\\\",\\n \\\"goods_service_name\\\": \\\"\\\n 货物或应税劳务、服务名称\\\",\\n \\\"quantity\\\": \\\"数量\\\",\\n \\\"unit_price\\\": \\\"单价\\\",\\n\\\n \\ \\\"amount\\\": \\\"金额\\\",\\n \\\"total_amount_chinese\\\": \\\"价税合计(大写)\\\",\\n \\\"\\\n total_amount_numeric\\\": \\\"价税合计(小写)\\\",\\n \\\"seller_name\\\": \\\"销售方名称\\\",\\n\\\n \\ \\\"seller_tax_id\\\": \\\"销售方纳税人识别号\\\",\\n \\\"seller_address_phone\\\": \\\"销售方地址、电话\\\"\\\n ,\\n \\\"seller_bank_account\\\": \\\"开户行及账号\\\",\\n \\\"remarks\\\": \\\"备注\\\",\\n \\\"\\\n payee\\\": \\\"收款人\\\",\\n \\\"reviewer\\\": \\\"复核\\\",\\n \\\"issuer\\\": \\\"开票人\\\"\\n}\\n\\\n ```\\n\\n## Initialization\\n\\n作为发票信息提取专家,我将严格按照上述规范为您提取发票信息。请提供发票图片或文本内容,我将:\\n\\\n \\n1. 自动识别发票类型\\n2. 提取所有相关字段信息\\n3. 返回标准JSON格式的结构化数据\\n\\n请注意:\\n- 所有金额保留原始格式和精度\\n\\\n - 日期统一格式为YYYY-MM-DD\\n- 缺失字段将标记为null或空字符串\\n- 确保JSON格式的有效性和可解析性\\n\\n现在请提供您需要处理的发票信息。\"\n - id: e1b195e3-e7d8-4e79-b6ee-2da3b512085a\n role: user\n text: 请基于{{#1754985243952.result#}} 返回对应的发票json数据\n selected: false\n title: 基于发票的大模型生成票面信息\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1754990293888'\n position:\n x: 1376.8121001443285\n y: 312\n positionAbsolute:\n x: 1376.8121001443285\n y: 312\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n cases:\n - case_id: 'true'\n conditions:\n - comparison_operator: contains\n id: 6edff569-2254-4388-a9e9-d3a2d6b0fee8\n value: 发票\n varType: string\n variable_selector:\n - '1754982121363'\n - typebill\n id: 'true'\n logical_operator: and\n - case_id: 1aeb57d6-1521-4bd8-aee1-1ae22af5df21\n conditions:\n - comparison_operator: contains\n id: 42e499ab-13e6-44d9-9126-78194f59fdf3\n value: 银行凭证单据\n varType: string\n variable_selector:\n - '1754982121363'\n - typebill\n id: 1aeb57d6-1521-4bd8-aee1-1ae22af5df21\n logical_operator: and\n - case_id: 6e72ca1a-2355-4aad-a03a-0e8aa46af9d3\n conditions:\n - comparison_operator: contains\n id: f91b80ba-eacf-475c-8526-0362c8d11d03\n value: 银行信用证\n varType: string\n variable_selector:\n - '1754982121363'\n - typebill\n id: 6e72ca1a-2355-4aad-a03a-0e8aa46af9d3\n logical_operator: and\n - case_id: c252cda7-9889-4c06-95ed-f0546a9ed798\n conditions:\n - comparison_operator: contains\n id: 8c091615-8212-43d0-b8f5-f9b52f27fb5b\n value: 增值税申报表等\n varType: string\n variable_selector:\n - '1754982121363'\n - typebill\n id: c252cda7-9889-4c06-95ed-f0546a9ed798\n logical_operator: and\n desc: ''\n selected: false\n title: 条件分支\n type: if-else\n height: 269\n id: '1755015549373'\n position:\n x: 242\n y: 317\n positionAbsolute:\n x: 242\n y: 317\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-ai/DeepSeek-V3\n provider: langgenius/siliconflow/siliconflow\n prompt_template:\n - id: dd682774-7401-4b48-a800-3224eac91b52\n role: system\n text: \"# Role: 银行凭证票据数据提取专家\\n\\n## Profile\\n\\n- Author: 周辉\\n- Version: 1.0\\n\\\n - Language: 中文\\n- Description: 专门从银行承兑汇票、商业汇票等银行凭证票据中提取结构化数据,转换为标准JSON格式的专业助手\\n\\\n \\n## Skills\\n\\n1. 银行票据格式识别与解析\\n2. 金融票据要素提取\\n3. 数据标准化处理\\n4. JSON格式输出\\n\\\n 5. 票据真伪性基础判断\\n\\n## Rules\\n\\n1. 严格按照标准JSON格式输出\\n2. 确保所有提取的数据准确无误\\n3. 对于缺失或不清晰的信息,标记为null或\\\"\\\n 未知\\\"\\n4. 保持数据的完整性和一致性\\n5. 遵循银行票据的标准字段命名规范\\n\\n## Workflow\\n\\n1. 识别票据类型(电子银行承兑汇票、商业承兑汇票等)\\n\\\n 2. 提取基础票据信息\\n3. 提取当事人信息\\n4. 提取金额和期限信息\\n5. 提取承兑和保证信息\\n6. 提取流转记录信息\\n7. 验证数据完整性\\n\\\n 8. 输出标准JSON格式\\n\\n## OutputFormat\\n\\n```json\\n{\\n \\\"票据基础信息\\\": {\\n \\\"\\\n 票据类型\\\": \\\"电子银行承兑汇票\\\",\\n \\\"票据号码\\\": \\\"\\\",\\n \\\"出票日期\\\": \\\"YYYY-MM-DD\\\"\\\n ,\\n \\\"汇票到期日\\\": \\\"YYYY-MM-DD\\\",\\n \\\"票据状态\\\": \\\"\\\",\\n \\\"显示日期\\\":\\\n \\ \\\"YYYY-MM-DD\\\"\\n },\\n \\\"当事人信息\\\": {\\n \\\"出票人\\\": {\\n \\\"全称\\\":\\\n \\ \\\"\\\",\\n \\\"账号\\\": \\\"\\\",\\n \\\"开户银行\\\": \\\"\\\",\\n \\\"开户行行号\\\":\\\n \\ \\\"\\\"\\n },\\n \\\"收款人\\\": {\\n \\\"全称\\\": \\\"\\\",\\n \\\"账号\\\": \\\"\\\"\\\n ,\\n \\\"开户银行\\\": \\\"\\\",\\n \\\"开户行行号\\\": \\\"\\\"\\n },\\n \\\"承兑人\\\":\\\n \\ {\\n \\\"全称\\\": \\\"\\\",\\n \\\"账号\\\": \\\"\\\",\\n \\\"开户银行\\\": \\\"\\\",\\n\\\n \\ \\\"开户行行号\\\": \\\"\\\"\\n }\\n },\\n \\\"金额信息\\\": {\\n \\\"票据金额_大写\\\": \\\"\\\n \\\",\\n \\\"票据金额_小写\\\": \\\"\\\",\\n \\\"币种\\\": \\\"人民币\\\"\\n },\\n \\\"承兑信息\\\": {\\n\\\n \\ \\\"交易合同号\\\": \\\"\\\",\\n \\\"出票人承诺\\\": \\\"\\\",\\n \\\"承兑人承兑\\\": \\\"\\\",\\n \\\n \\ \\\"承兑日期\\\": \\\"YYYY-MM-DD\\\",\\n \\\"能否转让\\\": \\\"\\\"\\n },\\n \\\"保证信息\\\": {\\n\\\n \\ \\\"出票保证信息\\\": {\\n \\\"保证人名称\\\": \\\"\\\",\\n \\\"保证人地址\\\": \\\"\\\",\\n \\\n \\ \\\"保证日期\\\": \\\"\\\"\\n },\\n \\\"承兑保证信息\\\": {\\n \\\"保证人名称\\\": \\\"\\\"\\\n ,\\n \\\"保证人地址\\\": \\\"\\\",\\n \\\"保证日期\\\": \\\"\\\"\\n }\\n },\\n \\\"评级信息\\\"\\\n : {\\n \\\"出票人\\\": {\\n \\\"评级主体\\\": \\\"\\\",\\n \\\"信用等级\\\": \\\"\\\",\\n \\\n \\ \\\"评级到期日\\\": \\\"\\\"\\n },\\n \\\"承兑人\\\": {\\n \\\"评级主体\\\": \\\"\\\",\\n\\\n \\ \\\"信用等级\\\": \\\"\\\",\\n \\\"评级到期日\\\": \\\"\\\"\\n }\\n }\\n}\\n```\\n\\n\\\n ## Constraints\\n\\n1. 必须严格按照上述JSON格式输出\\n2. 日期格式统一为YYYY-MM-DD\\n3. 金额信息必须同时包含大写和小写\\n\\\n 4. 对于空值使用null,对于未知信息使用\\\"未知\\\"\\n\\n## Examples\\n\\n### 输入示例\\n\\n```\\n电子银行承兑汇票\\n\\\n 出票日期:2023-06-05\\n汇票到期日:2023-12-05\\n票据号码:130665300006220230605566535600\\n\\\n 出票人:重庆安信达供应链管理有限公司\\n账号:9550880235474500161\\n开户银行:广发银行股份有限公司重庆渝北支行\\n收款人:河南济源钢铁(集团)有限公司\\n\\\n 票据金额:壹佰万元整 ¥1,000,000\\n承兑人:广发银行股份有限公司重庆渝北支行\\n```\\n\\n### 输出示例\\n\\n```json\\n\\\n {\\n \\\"票据基础信息\\\": {\\n \\\"票据类型\\\": \\\"电子银行承兑汇票\\\",\\n \\\"票据号码\\\": \\\"130665300006220230605566535600\\\"\\\n ,\\n \\\"出票日期\\\": \\\"2023-06-05\\\",\\n \\\"汇票到期日\\\": \\\"2023-12-05\\\",\\n \\\n \\ \\\"票据状态\\\": \\\"未知\\\",\\n \\\"显示日期\\\": null\\n },\\n \\\"当事人信息\\\": {\\n \\\"\\\n 出票人\\\": {\\n \\\"全称\\\": \\\"重庆安信达供应链管理有限公司\\\",\\n \\\"账号\\\": \\\"9550880235474500161\\\"\\\n ,\\n \\\"开户银行\\\": \\\"广发银行股份有限公司重庆渝北支行\\\",\\n \\\"开户行行号\\\": null\\n },\\n\\\n \\ \\\"收款人\\\": {\\n \\\"全称\\\": \\\"河南济源钢铁(集团)有限公司\\\",\\n \\\"账号\\\": null,\\n\\\n \\ \\\"开户银行\\\": null,\\n \\\"开户行行号\\\": null\\n },\\n \\\"承兑人\\\": {\\n\\\n \\ \\\"全称\\\": \\\"广发银行股份有限公司重庆渝北支行\\\",\\n \\\"账号\\\": null,\\n \\\"开户银行\\\"\\\n : \\\"广发银行股份有限公司重庆渝北支行\\\",\\n \\\"开户行行号\\\": null\\n }\\n },\\n \\\"金额信息\\\"\\\n : {\\n \\\"票据金额_大写\\\": \\\"壹佰万元整\\\",\\n \\\"票据金额_小写\\\": \\\"1000000.00\\\",\\n \\\n \\ \\\"币种\\\": \\\"人民币\\\"\\n },\\n \\\"承兑信息\\\": {\\n \\\"交易合同号\\\": null,\\n \\\"\\\n 出票人承诺\\\": \\\"本汇票请予以承兑,到期无条件付款\\\",\\n \\\"承兑人承兑\\\": \\\"本汇票已经承兑,到期无条件付款\\\",\\n\\\n \\ \\\"承兑日期\\\": null,\\n \\\"能否转让\\\": \\\"可再转让\\\"\\n },\\n \\\"保证信息\\\": {\\n \\\n \\ \\\"出票保证信息\\\": {\\n \\\"保证人名称\\\": null,\\n \\\"保证人地址\\\": null,\\n \\\n \\ \\\"保证日期\\\": null\\n },\\n \\\"承兑保证信息\\\": {\\n \\\"保证人名称\\\": null,\\n\\\n \\ \\\"保证人地址\\\": null,\\n \\\"保证日期\\\": null\\n }\\n },\\n \\\"评级信息\\\"\\\n : {\\n \\\"出票人\\\": {\\n \\\"评级主体\\\": null,\\n \\\"信用等级\\\": null,\\n \\\n \\ \\\"评级到期日\\\": null\\n },\\n \\\"承兑人\\\": {\\n \\\"评级主体\\\": null,\\n\\\n \\ \\\"信用等级\\\": null,\\n \\\"评级到期日\\\": null\\n }\\n }\\n}\\n```\\n\\n\\\n ## Initialization\\n\\n作为银行凭证票据数据提取专家,我将帮助您从各种银行票据中提取结构化数据。请提供需要分析的银行票据内容,我将按照标准JSON格式为您输出完整的数据结构。我会确保数据的准确性和完整性,并对任何异常情况进行标记说明。\"\n - id: 35f359cd-63fb-406b-9e0c-0e7513c7a1ff\n role: user\n text: 请基于{{#17550643012930.result#}} 返回对应的银行json银行凭证票据\n selected: false\n title: 基于发票的大模型生成银行凭证票据\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '1755015662910'\n position:\n x: 1376.8121001443285\n y: 467.2951739978987\n positionAbsolute:\n x: 1376.8121001443285\n y: 467.2951739978987\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-ai/DeepSeek-V3\n provider: langgenius/siliconflow/siliconflow\n prompt_template:\n - id: dd682774-7401-4b48-a800-3224eac91b52\n role: system\n text: \"# Role: 银行信用证数据提取专家\\n\\n## Profile\\n- Author: 周辉\\n- Version: 3.0\\n\\\n - Language: 中文/英文\\n- Description: 专业的银行信用证数据提取专家,精通兴业银行、浙商银行、中国银行等各大银行信用证格式,能够准确识别和提取国内外信用证的完整结构化数据,支持跟单信用证、备用信用证、循环信用证等各类信用证格式\\n\\\n \\n## Skills\\n1. **多银行格式识别**: 精通兴业银行、浙商银行、中国银行等各大银行的信用证格式和模板\\n2. **国内信用证专长**:\\\n \\ 深度理解中国银行业信用证开证通知书的标准格式和要素\\n3. **精准数据提取**: 准确识别信用证编号、开证日期、有效期、申请人、受益人等核心信息\\n\\\n 4. **金额处理专家**: 精确提取人民币大写、小写金额及各种外币金额表示\\n5. **银行信息解析**: 准确识别开证行、通知行、议付行等银行机构信息和SWIFT代码\\n\\\n 6. **条款深度分析**: 理解付款条件、转让条款、保兑条款、交单期限等专业术语\\n7. **货物贸易条款**: 提取货物描述、装运条件、运输方式、服务提供等贸易信息\\n\\\n 8. **单据要求识别**: 准确分析所需提交的各类单据及其具体要求\\n9. **UCP600国际惯例**: 严格遵循《跟单信用证统一惯例》标准进行合规性检查\\n\\\n 10. **SWIFT标准应用**: 熟悉SWIFT MT700等国际报文格式\\n11. **风险识别评估**: 识别软条款、陷阱条款等潜在风险点\\n\\\n 12. **多语言处理**: 支持中英文混合信用证内容的准确解析\\n\\n## Rules\\n1. 严格按照UCP600国际惯例标准提取信用证要素\\n\\\n 2. 确保所有提取的数据准确无误\\n3. 对于缺失或不清晰的信息,标记为null或\\\"未指定\\\"\\n4. 保持数据的完整性和一致性\\n5.\\\n \\ 遵循SWIFT MT700格式标准\\n6. 识别并标记信用证的关键风险点\\n\\n## Workflow\\n1. **文档识别与分析**\\n\\\n \\ - 识别银行类型(兴业银行、浙商银行、中国银行等)\\n - 确定信用证格式(国内信用证、国际信用证)\\n - 识别信用证类型(跟单信用证、备用信用证、循环信用证等)\\n\\\n \\n2. **基础信息提取**\\n - 提取信用证编号(如:49101DCC20000089)\\n - 提取开证日期和有效期\\n \\\n \\ - 识别有效地点和到期地点\\n\\n3. **当事人信息解析**\\n - 开证行:银行名称、地址、联系方式、SWIFT代码\\n \\\n \\ - 申请人:公司名称、详细地址、联系电话\\n - 受益人:公司名称、详细地址、联系方式\\n - 通知行、议付行、保兑行等相关银行信息\\n\\\n \\n4. **金额条款分析**\\n - 提取币种(人民币、美元等)\\n - 提取大写金额和数字金额\\n - 分析金额容差和数量容差\\n\\\n \\ - 识别付款条件和方式\\n\\n5. **贸易条款提取**\\n - 货物描述(如:壹佰随拾万陆仟伍佰拾元整)\\n - 装运条件和运输方式\\n\\\n \\ - 装运期限和地点\\n - 分批装运和转运条款\\n\\n6. **银行条款解析**\\n - 是否可议付、可转让、可保兑\\n \\\n \\ - 交单期限和交单地点\\n - 费用承担条款\\n\\n7. **单据要求整理**\\n - 识别所需提交的全部单据\\n - 分析单据的具体要求和份数\\n\\\n \\ - 提取特殊单据条款\\n\\n8. **风险评估与合规检查**\\n - 识别软条款和陷阱条款\\n - 进行UCP600合规性检查\\n\\\n \\ - 标记潜在操作风险\\n\\n9. **数据验证与输出**\\n - 验证数据完整性和准确性\\n - 生成标准化JSON格式输出\\n\\\n \\ - 提供置信度评估和风险提示\\n\\n## OutputFormat\\n```json\\n{\\n \\\"信用证基本信息\\\": {\\n\\\n \\ \\\"信用证号码\\\": \\\"\\\",\\n \\\"信用证类型\\\": \\\"跟单信用证/备用信用证/循环信用证/可转让信用证\\\",\\n\\\n \\ \\\"开证日期\\\": \\\"YYYY-MM-DD\\\",\\n \\\"有效期\\\": \\\"YYYY-MM-DD\\\",\\n \\\"到期地点\\\"\\\n : \\\"\\\",\\n \\\"适用规则\\\": \\\"UCP600/UCP500/ISP98\\\",\\n \\\"信用证状态\\\": \\\"有效/已使用/已过期/已撤销\\\"\\\n \\n },\\n \\\"当事人信息\\\": {\\n \\\"开证行\\\": {\\n \\\"银行名称\\\": \\\"\\\",\\n \\\"\\\n 银行地址\\\": \\\"\\\",\\n \\\"SWIFT代码\\\": \\\"\\\",\\n \\\"联系信息\\\": \\\"\\\"\\n },\\n\\\n \\ \\\"通知行\\\": {\\n \\\"银行名称\\\": \\\"\\\",\\n \\\"银行地址\\\": \\\"\\\",\\n \\\"\\\n SWIFT代码\\\": \\\"\\\",\\n \\\"联系信息\\\": \\\"\\\"\\n },\\n \\\"受益人\\\": {\\n \\\n \\ \\\"公司名称\\\": \\\"\\\",\\n \\\"地址\\\": \\\"\\\",\\n \\\"国家\\\": \\\"\\\",\\n \\\"\\\n 联系信息\\\": \\\"\\\"\\n },\\n \\\"申请人\\\": {\\n \\\"公司名称\\\": \\\"\\\",\\n \\\"\\\n 地址\\\": \\\"\\\",\\n \\\"国家\\\": \\\"\\\",\\n \\\"联系信息\\\": \\\"\\\"\\n },\\n \\\"\\\n 议付行\\\": {\\n \\\"银行名称\\\": \\\"\\\",\\n \\\"银行地址\\\": \\\"\\\",\\n \\\"SWIFT代码\\\"\\\n : \\\"\\\",\\n \\\"限制条件\\\": \\\"\\\"\\n }\\n },\\n \\\"金额信息\\\": {\\n \\\"信用证金额\\\"\\\n : \\\"\\\",\\n \\\"币种\\\": \\\"\\\",\\n \\\"金额容差\\\": \\\"\\\",\\n \\\"数量容差\\\": \\\"\\\",\\n\\\n \\ \\\"部分装运\\\": \\\"允许/不允许\\\",\\n \\\"分批装运\\\": \\\"允许/不允许\\\"\\n },\\n \\\"货物信息\\\"\\\n : {\\n \\\"货物描述\\\": \\\"\\\",\\n \\\"商品编码\\\": \\\"\\\",\\n \\\"数量\\\": \\\"\\\",\\n \\\n \\ \\\"单位\\\": \\\"\\\",\\n \\\"单价\\\": \\\"\\\",\\n \\\"总价\\\": \\\"\\\",\\n \\\"包装要求\\\": \\\"\\\n \\\",\\n \\\"标记和编号\\\": \\\"\\\"\\n },\\n \\\"贸易条款\\\": {\\n \\\"贸易术语\\\": \\\"FOB/CIF/CFR/EXW/FCA等\\\"\\\n ,\\n \\\"装运港\\\": \\\"\\\",\\n \\\"目的港\\\": \\\"\\\",\\n \\\"装运期\\\": \\\"\\\",\\n \\\"\\\n 最迟装运日\\\": \\\"YYYY-MM-DD\\\",\\n \\\"运输方式\\\": \\\"海运/空运/陆运/多式联运\\\",\\n \\\"转运\\\"\\\n : \\\"允许/禁止\\\"\\n },\\n \\\"单据要求\\\": {\\n \\\"商业发票\\\": {\\n \\\"要求\\\": \\\"必须/可选\\\"\\\n ,\\n \\\"份数\\\": \\\"\\\",\\n \\\"特殊要求\\\": \\\"\\\"\\n },\\n \\\"运输单据\\\": {\\n\\\n \\ \\\"类型\\\": \\\"海运提单/空运单/铁路运单/公路运单\\\",\\n \\\"要求\\\": \\\"\\\",\\n \\\"\\\n 份数\\\": \\\"\\\",\\n \\\"特殊条款\\\": \\\"\\\"\\n },\\n \\\"保险单据\\\": {\\n \\\"要求\\\"\\\n : \\\"必须/可选\\\",\\n \\\"保险类型\\\": \\\"\\\",\\n \\\"保险金额\\\": \\\"\\\",\\n \\\"特殊要求\\\"\\\n : \\\"\\\"\\n },\\n \\\"原产地证\\\": {\\n \\\"要求\\\": \\\"必须/可选\\\",\\n \\\"类型\\\"\\\n : \\\"一般原产地证/优惠原产地证\\\",\\n \\\"签发机构\\\": \\\"\\\"\\n },\\n \\\"检验证书\\\": {\\n\\\n \\ \\\"要求\\\": \\\"必须/可选\\\",\\n \\\"检验类型\\\": \\\"\\\",\\n \\\"检验机构\\\": \\\"\\\"\\\n \\n },\\n \\\"其他单据\\\": [\\n {\\n \\\"单据名称\\\": \\\"\\\",\\n \\\"\\\n 要求\\\": \\\"\\\",\\n \\\"份数\\\": \\\"\\\",\\n \\\"特殊条件\\\": \\\"\\\"\\n }\\n\\\n \\ ]\\n },\\n \\\"交单条件\\\": {\\n \\\"交单期限\\\": \\\"\\\",\\n \\\"交单地点\\\": \\\"\\\",\\n\\\n \\ \\\"交单方式\\\": \\\"信使/邮寄/电子交单\\\",\\n \\\"单据不符处理\\\": \\\"\\\",\\n \\\"费用承担\\\": \\\"\\\n \\\"\\n },\\n \\\"特殊条款\\\": {\\n \\\"限制性条款\\\": [],\\n \\\"附加条件\\\": [],\\n \\\"\\\n 禁止事项\\\": [],\\n \\\"特别指示\\\": []\\n },\\n \\\"费用信息\\\": {\\n \\\"开证费\\\": \\\"\\\"\\\n ,\\n \\\"通知费\\\": \\\"\\\",\\n \\\"议付费\\\": \\\"\\\",\\n \\\"修改费\\\": \\\"\\\",\\n \\\"\\\n 费用承担方\\\": \\\"申请人/受益人/各自承担\\\"\\n },\\n \\\"修改记录\\\": [\\n {\\n \\\"修改序号\\\"\\\n : \\\"\\\",\\n \\\"修改日期\\\": \\\"YYYY-MM-DD\\\",\\n \\\"修改内容\\\": \\\"\\\",\\n \\\n \\ \\\"修改原因\\\": \\\"\\\"\\n }\\n ],\\n \\\"风险提示\\\": {\\n \\\"软条款\\\": [],\\n \\\"\\\n 陷阱条款\\\": [],\\n \\\"合规风险\\\": [],\\n \\\"操作风险\\\": []\\n },\\n \\\"提取元数据\\\": {\\n\\\n \\ \\\"提取时间\\\": \\\"YYYY-MM-DD HH:MM:SS\\\",\\n \\\"数据完整性\\\": \\\"完整/部分缺失/严重缺失\\\"\\\n ,\\n \\\"置信度\\\": \\\"高/中/低\\\",\\n \\\"语言\\\": \\\"中文/英文/其他\\\",\\n \\\"格式类型\\\": \\\"\\\n SWIFT MT700/纸质信用证/电子信用证\\\",\\n \\\"异常标记\\\": []\\n }\\n}\\n```\\n\\n## Constraints\\n\\\n 1. 必须严格按照上述JSON格式输出\\n2. 日期格式统一为YYYY-MM-DD\\n3. 金额信息必须包含币种\\n4. 对于空值使用null,对于未指定信息使用\\\"\\\n 未指定\\\"\\n5. 单据要求按重要性排序\\n6. 风险提示必须基于实际条款内容\\n7. 支持中英文双语信用证\\n\\n## Examples\\n\\\n \\n### 输入示例1(兴业银行国内信用证)\\n```\\n兴业银行股份有限公司国内信用证(开证通知)\\n第四联(申请人留存) \\\n \\ 信用证编号:49101DCC20000089\\n开证日期:2022年11月18日\\n\\n开证:\\n全称:阳光xxx开发股份有限公司\\\n \\ 全称:仁草智能科技有限公司\\n地址:安徽省合肥市天湖路2号 地址:安徽省合肥市蜀山区中国(安徽)\\n\\\n \\ 230000 自由贸易试验区合肥片区蜀山\\n \\\n \\ 经济开发区井岗路68号自主创\\n \\\n \\ 新产业基地 230000\\n邮编: \\\n \\ 邮编:\\n电话:17700000000 电话:1500000000\\n\\n信用证金额:人民币(大写)贰拾肆万壹仟陆佰陆拾元壹角整\\n\\\n \\ (小写)CNY24,168,660.10\\n\\n通知行名称、行号、地址及邮编:兴业银行股份有限公司合肥分行 309361001010\\n\\\n \\ 安徽省合肥市滨湖高速时代广场C2幢 230001\\n\\n有效日期及有效地点:2022年12月31日\\\n \\ 安徽合肥\\n\\n是否可议付:■以下银行可议付 □任意银行可议付 □不可议付\\n议付行名称及行号:兴业银行股份有限公司合肥分行 309361001010\\n\\\n 是否可转让:□可转让 ■不可转让\\n是否可保兑:□可保兑 ■不可保兑\\n\\n交单期限:单据必须自运输单据签发日/货物收据日/服务提供日起\\\n \\ 180 天内提交\\n付款期限:□即期 ■远期\\n转运:■允许 □不允许\\n货物运输或交货方式/服务方式:陆运\\n分批装运货物/分次提供服务:■允许\\\n \\ □不允许\\n货物装运地(港):安徽省合肥市 货物目的地、交货地(港):河南河北安徽等\\n服务提供地点:\\n最迟装运货物/服务提供日期:2001年12月15日\\n\\\n 分期装运/提供服务:\\n\\n货物/服务描述:支架(包括不锈钢U型钢等)\\n\\n受益人应提交的单据:\\n1.(√)税务部门统一印制/监制的正本■增值税专用发票(包括发票联和抵扣联)。\\n\\\n 2.(√)正本货物收据,显示申请人为收货人,应由申请人出具。\\n\\n其他条款:\\n1.(√)单据必须自运输单据签发日/货物收据日/服务提供日起\\\n \\ 180 天内提交(不能晚于信用证有效期)。\\n2.(√)开证行以外的所有银行费用由受益人承担。\\n```\\n\\n### 输入示例2(浙商银行国内信用证)\\n\\\n ```\\n国内信用证(正本)\\n信用证编号:DC28240220607005\\n通知交易号:TZ37000220607021\\n开证日期:2022-06-07\\n\\\n \\n申请人:阳光XXXXX开发股份有限公司 受益人:江苏城立新能源装备有限公司\\n账号:361000001012010021842B\\\n \\ 账号:302000011012010005982\\n地址:合肥市蜀山区天湖路2号230000 地址:江阴市镇澄路260B号214400\\n\\\n 开户行:浙商银行股份有限公司合肥分行 开户行:浙商银行股份有限公司江阴支行\\n\\n开证金额:人民币(大写)贰仟陆佰贰拾陆万贰仟贰佰贰拾元玖角捌分\\\n \\ CNY26,263,220.98\\n有效日期:2023年06月07日 通知行号:31636100019\\n\\\n 有效地点:合肥 行名:浙商银行股份有限公司合肥分行\\n\\n是否可议付:任意银行可议付\\n\\\n 是否可转让:不可转让\\n是否可保兑:不可保兑\\n交单期:365天\\n付款方式:远期\\n\\n货物运输或交货方式/服务方式:公路运输\\n转运:不允许\\n\\\n 分批装运货物/分次提供服务:允许\\n货物装运起止地:自江阴市至合肥\\n最迟装运货物/服务提供日期:2023年06月07日\\n服务提供地:\\n\\\n 存款期限:见单后远期付款天数:365天\\n\\n货物/服务描述:家庭光伏支架\\n\\n贸易合同号:DZGCWZ202105281S,DZGCWZ202107090S溢差比例:0.000000%\\n\\\n \\n受益人应提交的单据:\\n1.税务部门统一印制-监制的正本增值税发票。\\n2.货物收据,收货人应光新能源开发股份有限公司。\\n\\n其他条款:\\n\\\n 1.发票需注明信用证号和合同号。\\n2.可接受发票金额大于开证金额。\\n```\\n\\n### 输出示例\\n```json\\n{\\n \\\"\\\n 信用证基本信息\\\": {\\n \\\"信用证号码\\\": \\\"LC2023001234\\\",\\n \\\"信用证类型\\\": \\\"跟单信用证\\\"\\\n ,\\n \\\"开证日期\\\": \\\"2023-06-15\\\",\\n \\\"有效期\\\": \\\"2023-12-15\\\",\\n \\\"\\\n 到期地点\\\": \\\"中国\\\",\\n \\\"适用规则\\\": \\\"UCP600\\\",\\n \\\"信用证状态\\\": \\\"有效\\\"\\n },\\n\\\n \\ \\\"当事人信息\\\": {\\n \\\"开证行\\\": {\\n \\\"银行名称\\\": null,\\n \\\"银行地址\\\"\\\n : null,\\n \\\"SWIFT代码\\\": null,\\n \\\"联系信息\\\": null\\n },\\n \\\"\\\n 通知行\\\": {\\n \\\"银行名称\\\": null,\\n \\\"银行地址\\\": null,\\n \\\"SWIFT代码\\\"\\\n : null,\\n \\\"联系信息\\\": null\\n },\\n \\\"受益人\\\": {\\n \\\"公司名称\\\"\\\n : \\\"XYZ Export Company\\\",\\n \\\"地址\\\": \\\"456 Export Road, New York,\\\n \\ USA\\\",\\n \\\"国家\\\": \\\"美国\\\",\\n \\\"联系信息\\\": null\\n },\\n \\\"\\\n 申请人\\\": {\\n \\\"公司名称\\\": \\\"ABC Trading Co., Ltd.\\\",\\n \\\"地址\\\": \\\"\\\n 123 Business Street, Shanghai, China\\\",\\n \\\"国家\\\": \\\"中国\\\",\\n \\\n \\ \\\"联系信息\\\": null\\n },\\n \\\"议付行\\\": {\\n \\\"银行名称\\\": null,\\n \\\n \\ \\\"银行地址\\\": null,\\n \\\"SWIFT代码\\\": null,\\n \\\"限制条件\\\": null\\n \\\n \\ }\\n },\\n \\\"金额信息\\\": {\\n \\\"信用证金额\\\": \\\"500000.00\\\",\\n \\\"币种\\\"\\\n : \\\"USD\\\",\\n \\\"金额容差\\\": null,\\n \\\"数量容差\\\": null,\\n \\\"部分装运\\\": \\\"\\\n 未指定\\\",\\n \\\"分批装运\\\": \\\"未指定\\\"\\n },\\n \\\"货物信息\\\": {\\n \\\"货物描述\\\": \\\"Electronic\\\n \\ Components as per Proforma Invoice No. PI-2023-001\\\",\\n \\\"商品编码\\\"\\\n : null,\\n \\\"数量\\\": null,\\n \\\"单位\\\": null,\\n \\\"单价\\\": null,\\n \\\n \\ \\\"总价\\\": \\\"500000.00\\\",\\n \\\"包装要求\\\": null,\\n \\\"标记和编号\\\": null\\n \\\n \\ },\\n \\\"贸易条款\\\": {\\n \\\"贸易术语\\\": null,\\n \\\"装运港\\\": \\\"上海港\\\",\\n \\\"\\\n 目的港\\\": \\\"纽约港\\\",\\n \\\"装运期\\\": null,\\n \\\"最迟装运日\\\": \\\"2023-11-30\\\",\\n\\\n \\ \\\"运输方式\\\": \\\"海运\\\",\\n \\\"转运\\\": \\\"未指定\\\"\\n },\\n \\\"单据要求\\\": {\\n \\\n \\ \\\"商业发票\\\": {\\n \\\"要求\\\": \\\"必须\\\",\\n \\\"份数\\\": \\\"3\\\",\\n \\\"特殊要求\\\"\\\n : null\\n },\\n \\\"运输单据\\\": {\\n \\\"类型\\\": \\\"海运提单\\\",\\n \\\"要求\\\"\\\n : \\\"全套清洁已装船海运提单\\\",\\n \\\"份数\\\": \\\"全套\\\",\\n \\\"特殊条款\\\": null\\n },\\n\\\n \\ \\\"保险单据\\\": {\\n \\\"要求\\\": \\\"必须\\\",\\n \\\"保险类型\\\": \\\"保险单\\\",\\n \\\n \\ \\\"保险金额\\\": \\\"发票金额的110%\\\",\\n \\\"特殊要求\\\": null\\n },\\n \\\"原产地证\\\"\\\n : {\\n \\\"要求\\\": \\\"必须\\\",\\n \\\"类型\\\": \\\"一般原产地证\\\",\\n \\\"签发机构\\\"\\\n : null\\n },\\n \\\"检验证书\\\": {\\n \\\"要求\\\": \\\"可选\\\",\\n \\\"检验类型\\\"\\\n : null,\\n \\\"检验机构\\\": null\\n },\\n \\\"其他单据\\\": []\\n },\\n \\\"交单条件\\\"\\\n : {\\n \\\"交单期限\\\": null,\\n \\\"交单地点\\\": null,\\n \\\"交单方式\\\": null,\\n \\\n \\ \\\"单据不符处理\\\": null,\\n \\\"费用承担\\\": null\\n },\\n \\\"特殊条款\\\": {\\n \\\"\\\n 限制性条款\\\": [],\\n \\\"附加条件\\\": [],\\n \\\"禁止事项\\\": [],\\n \\\"特别指示\\\": []\\n\\\n \\ },\\n \\\"费用信息\\\": {\\n \\\"开证费\\\": null,\\n \\\"通知费\\\": null,\\n \\\"议付费\\\"\\\n : null,\\n \\\"修改费\\\": null,\\n \\\"费用承担方\\\": null\\n },\\n \\\"修改记录\\\": [],\\n\\\n \\ \\\"风险提示\\\": {\\n \\\"软条款\\\": [],\\n \\\"陷阱条款\\\": [],\\n \\\"合规风险\\\": [],\\n\\\n \\ \\\"操作风险\\\": [\\\"缺少开证行信息\\\", \\\"贸易术语未明确\\\"]\\n },\\n \\\"提取元数据\\\": {\\n \\\"\\\n 提取时间\\\": \\\"2023-08-18 16:00:00\\\",\\n \\\"数据完整性\\\": \\\"部分缺失\\\",\\n \\\"置信度\\\"\\\n : \\\"中\\\",\\n \\\"语言\\\": \\\"英文\\\",\\n \\\"格式类型\\\": \\\"纸质信用证\\\",\\n \\\"异常标记\\\"\\\n : [\\\"开证行信息缺失\\\", \\\"贸易术语不明确\\\", \\\"交单条件未指定\\\"]\\n }\\n}\\n```\\n\\n## SpecialInstructions\\n\\\n 1. **软条款识别**:自动识别可能的软条款,如\\\"货物检验合格后方可装运\\\"等\\n2. **风险评估**:对信用证条款进行风险评估,标记潜在问题\\n\\\n 3. **合规检查**:检查是否符合UCP600等国际惯例\\n4. **多语言支持**:支持中英文信用证的混合处理\\n5. **SWIFT格式**:能够处理标准SWIFT\\\n \\ MT700格式的信用证\\n\\n## Initialization\\n作为银行信用证数据提取专家,我精通兴业银行、浙商银行、中国银行等各大银行的信用证格式,能够准确识别和提取国内外信用证的完整结构化数据。我熟悉UCP600国际惯例、SWIFT标准以及各种信用证类型,特别擅长处理中国银行业的信用证开证通知书格式。\\n\\\n \\n**我的专业能力包括:**\\n- \\U0001F3E6 多银行格式识别:兴业银行、浙商银行、中国银行等\\n- \\U0001F4CB 精准数据提取:信用证编号、金额、当事人信息等\\n\\\n - \\U0001F4B0 金额处理专家:人民币大写/小写、外币金额\\n- ⚖️ 合规风险评估:UCP600标准、软条款识别\\n- \\U0001F50D\\\n \\ 深度条款分析:付款条件、转让保兑、单据要求\\n\\n请提供需要分析的信用证内容,我将按照标准JSON格式为您输出完整的数据结构,并提供专业的风险提示和合规建议。\"\n - id: 6a8b930d-fdbb-4200-a53c-4a38b27679c7\n role: user\n text: 请基于{{#17550643558470.result#}}返回对应的银行json银行信用证\n selected: false\n title: 基于发票的大模型生成银行信用证\n type: llm\n variables: []\n vision:\n enabled: false\n height: 89\n id: '17550156921690'\n position:\n x: 1387.6393254690674\n y: 668.200355023612\n positionAbsolute:\n x: 1387.6393254690674\n y: 668.200355023612\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#1755015662910.text#}}'\n desc: ''\n selected: false\n title: 直接回复 2\n type: answer\n variables: []\n height: 104\n id: '1755015718694'\n position:\n x: 1727.0151251804105\n y: 462.30890129895624\n positionAbsolute:\n x: 1727.0151251804105\n y: 462.30890129895624\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#17550156921690.text#}}'\n desc: ''\n selected: false\n title: 直接回复 3\n type: answer\n variables: []\n height: 104\n id: '1755015721479'\n position:\n x: 1727.0151251804105\n y: 676.3478753347462\n positionAbsolute:\n x: 1727.0151251804105\n y: 676.3478753347462\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: 还未开发,敬请期待,,,,,,,,,\n desc: ''\n selected: false\n title: 直接回复 4\n type: answer\n variables: []\n height: 101\n id: '1755015753275'\n position:\n x: 711.5392551909177\n y: 875.6645722037998\n positionAbsolute:\n x: 711.5392551909177\n y: 875.6645722037998\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n authorization:\n config: null\n type: no-auth\n body:\n data:\n - type: text\n value: \"{\\n \\\"file_url\\\": \\\"{{#1754982121363.file.url#}}\\\",\\n \\\"\\\n mode\\\": \\\"gpu\\\",\\n \\\"preserve_layout\\\": true,\\n \\\"ocr_enabled\\\"\\\n : true\\n }\"\n type: raw-text\n desc: ''\n headers: 'Authorization:Bearer {{#env.apikey#}}\n\n Content-Type:application/json'\n method: POST\n params: ''\n retry_config:\n max_retries: 3\n retry_enabled: true\n retry_interval: 100\n selected: false\n ssl_verify: true\n timeout:\n max_connect_timeout: 0\n max_read_timeout: 0\n max_write_timeout: 0\n title: HTTP 请求 (1)\n type: http-request\n url: https://pizhapi.duckcloud.fun/ocr-extract/\n variables: []\n height: 139\n id: '17550642968960'\n position:\n x: 719\n y: 467.2951739978987\n positionAbsolute:\n x: 719\n y: 467.2951739978987\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"import json\\n\\ndef main(body: str) -> dict:\\n try:\\n # 解析\\\n \\ body 中的 JSON 数据\\n data = json.loads(body)\\n except json.JSONDecodeError\\\n \\ as e:\\n return {\\\"error\\\": f\\\"body 内容不是有效的 JSON 格式。错误信息: {str(e)}\\\"\\\n }\\n\\n # 检查解析后的数据格式\\n if not isinstance(data, dict):\\n return\\\n \\ {\\\"error\\\": \\\"解析后的 body 内容不是 JSON 对象\\\"}\\n\\n # 检查是否包含 markdown_content\\\n \\ 字段\\n if \\\"markdown_content\\\" not in data:\\n return {\\\"error\\\"\\\n : \\\"数据中缺少 markdown_content 字段\\\"}\\n\\n # 提取并处理 markdown_content\\n markdown_content\\\n \\ = data[\\\"markdown_content\\\"]\\n markdown_content = markdown_content.replace(\\\"\\\n \\\\\\\\n\\\", \\\"\\\\n\\\") # 处理转义换行符\\n\\n # 去掉开头的 GPU 处理信息\\n lines = markdown_content.split(\\\"\\\n \\\\n\\\")\\n start_index = 0 # 默认从第0行开始\\n # 找到 \\\"## Page 1\\\" 所在行,从这一行开始保留内容\\n\\\n \\ for i, line in enumerate(lines):\\n if line.strip() == \\\"## Page\\\n \\ 1\\\":\\n start_index = i\\n break\\n\\n # 清理内容(去掉空行)\\n\\\n \\ cleaned_content = \\\"\\\\n\\\".join(lines[start_index:]).strip()\\n\\n \\\n \\ # 返回字典类型的结果,包含处理后的内容\\n return {\\\"result\\\": cleaned_content}\"\n code_language: python3\n default_value:\n - key: result\n type: string\n value: ''\n desc: ''\n error_strategy: default-value\n outputs:\n result:\n children: null\n type: string\n retry_config:\n max_retries: 3\n retry_enabled: true\n retry_interval: 1000\n selected: false\n title: 代码执行 (1)\n type: code\n variables:\n - value_selector:\n - '17550642968960'\n - body\n value_type: string\n variable: body\n height: 119\n id: '17550643012930'\n position:\n x: 1035.7702007889002\n y: 467.2951739978987\n positionAbsolute:\n x: 1035.7702007889002\n y: 467.2951739978987\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n authorization:\n config: null\n type: no-auth\n body:\n data:\n - type: text\n value: \"{\\n \\\"file_url\\\": \\\"{{#1754982121363.file.url#}}\\\",\\n \\\"\\\n mode\\\": \\\"gpu\\\",\\n \\\"preserve_layout\\\": true,\\n \\\"ocr_enabled\\\"\\\n : true\\n }\"\n type: raw-text\n desc: ''\n headers: 'Authorization:Bearer {{#env.apikey#}}\n\n Content-Type:application/json'\n method: POST\n params: ''\n retry_config:\n max_retries: 3\n retry_enabled: true\n retry_interval: 100\n selected: false\n ssl_verify: true\n timeout:\n max_connect_timeout: 0\n max_read_timeout: 0\n max_write_timeout: 0\n title: HTTP 请求 (2)\n type: http-request\n url: https://pizhapi.duckcloud.fun/ocr-extract/\n variables: []\n height: 139\n id: '17550643393220'\n position:\n x: 719\n y: 668.200355023612\n positionAbsolute:\n x: 719\n y: 668.200355023612\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n code: \"import json\\n\\ndef main(body: str) -> dict:\\n try:\\n # 解析\\\n \\ body 中的 JSON 数据\\n data = json.loads(body)\\n except json.JSONDecodeError\\\n \\ as e:\\n return {\\\"error\\\": f\\\"body 内容不是有效的 JSON 格式。错误信息: {str(e)}\\\"\\\n }\\n\\n # 检查解析后的数据格式\\n if not isinstance(data, dict):\\n return\\\n \\ {\\\"error\\\": \\\"解析后的 body 内容不是 JSON 对象\\\"}\\n\\n # 检查是否包含 markdown_content\\\n \\ 字段\\n if \\\"markdown_content\\\" not in data:\\n return {\\\"error\\\"\\\n : \\\"数据中缺少 markdown_content 字段\\\"}\\n\\n # 提取并处理 markdown_content\\n markdown_content\\\n \\ = data[\\\"markdown_content\\\"]\\n markdown_content = markdown_content.replace(\\\"\\\n \\\\\\\\n\\\", \\\"\\\\n\\\") # 处理转义换行符\\n\\n # 去掉开头的 GPU 处理信息\\n lines = markdown_content.split(\\\"\\\n \\\\n\\\")\\n start_index = 0 # 默认从第0行开始\\n # 找到 \\\"## Page 1\\\" 所在行,从这一行开始保留内容\\n\\\n \\ for i, line in enumerate(lines):\\n if line.strip() == \\\"## Page\\\n \\ 1\\\":\\n start_index = i\\n break\\n\\n # 清理内容(去掉空行)\\n\\\n \\ cleaned_content = \\\"\\\\n\\\".join(lines[start_index:]).strip()\\n\\n \\\n \\ # 返回字典类型的结果,包含处理后的内容\\n return {\\\"result\\\": cleaned_content}\"\n code_language: python3\n default_value:\n - key: result\n type: string\n value: ''\n desc: ''\n error_strategy: default-value\n outputs:\n result:\n children: null\n type: string\n retry_config:\n max_retries: 3\n retry_enabled: true\n retry_interval: 1000\n selected: false\n title: 代码执行 (2)\n type: code\n variables:\n - value_selector:\n - '17550643393220'\n - body\n value_type: string\n variable: body\n height: 119\n id: '17550643558470'\n position:\n x: 1042.9883510053926\n y: 668.200355023612\n positionAbsolute:\n x: 1042.9883510053926\n y: 668.200355023612\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: -173.97144259115794\n y: 52.5855952847392\n zoom: 0.8312378961427878\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":57743,"content_sha256":"b86ca16a13a1e4b6980453c3be237054fc4368b7c88efb7089bcb58ac433ead3"},{"filename":"organized_dsl/05_文档处理与OCR/票据识别/发票比对专家-新版客运火车票2.yml","content":"app:\n description: '本工作流主要是通过多模态发票模型实现火车票提取OCR提取,提取后在判断2个模型比对结果,作者:wwwzhouhui''\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 发票比对专家-新版客运火车票2\n use_icon_as_answer_icon: false\nkind: app\nversion: 0.1.2\nworkflow:\n conversation_variables: []\n environment_variables: []\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInIteration: false\n sourceType: start\n targetType: document-extractor\n id: 1731206171408-source-1731206199200-target\n source: '1731206171408'\n sourceHandle: source\n target: '1731206199200'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: document-extractor\n targetType: llm\n id: 1731206199200-source-1731206210304-target\n source: '1731206199200'\n sourceHandle: source\n target: '1731206210304'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: document-extractor\n targetType: llm\n id: 1731206199200-source-1731206267490-target\n source: '1731206199200'\n sourceHandle: source\n target: '1731206267490'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: llm\n id: 1731206210304-source-1731206310442-target\n source: '1731206210304'\n sourceHandle: source\n target: '1731206310442'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: llm\n id: 1731206267490-source-1731206310442-target\n source: '1731206267490'\n sourceHandle: source\n target: '1731206310442'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: llm\n targetType: answer\n id: 1731206310442-source-answer-target\n source: '1731206310442'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: file\n max_length: 48\n options: []\n required: true\n type: file\n variable: file\n height: 90\n id: '1731206171408'\n position:\n x: -485\n y: 225\n positionAbsolute:\n x: -485\n y: 225\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#1731206310442.text#}}'\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 103\n id: answer\n position:\n x: 967\n y: 181\n positionAbsolute:\n x: 967\n y: 181\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n desc: ''\n is_array_file: true\n selected: false\n title: 文档提取器\n type: document-extractor\n variable_selector:\n - sys\n - files\n height: 94\n id: '1731206199200'\n position:\n x: -131\n y: 225\n positionAbsolute:\n x: -131\n y: 225\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: Qwen/Qwen2-VL-72B-Instruct\n provider: openai_api_compatible\n prompt_template:\n - id: 74e1936e-8134-4426-8cb8-c090a834e09d\n role: system\n text: 请提取这张照片的内容,其中内容格式‘发票号码’、'开票日期’、'‘出发时间’、‘始发站’、‘终点站’、‘车次’、‘票价’、‘身份证号’、‘姓名’、‘电子客票号’、‘购买方名称’、‘统一社会信用代码’字段返回信息,返回的结果信息以json格式返回\n selected: false\n title: 发票提取模型1\n type: llm\n variables: []\n vision:\n configs:\n detail: high\n variable_selector:\n - '1731206171408'\n - file\n enabled: true\n height: 98\n id: '1731206210304'\n position:\n x: 279\n y: 33\n positionAbsolute:\n x: 279\n y: 33\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: Qwen/Qwen2-VL-72B-Instruct\n provider: openai_api_compatible\n prompt_template:\n - id: c916b5c3-8324-4fe8-8787-0a0d589d3f13\n role: system\n text: 请提取这张照片的内容,其中内容格式‘发票号码’、'开票日期’、'‘出发时间’、‘始发站’、‘终点站’、‘车次’、‘票价’、‘身份证号’、‘姓名’、‘电子客票号’、‘购买方名称’、‘统一社会信用代码’字段返回信息,返回的结果信息以json格式返回\n - id: 36bcce9d-a41a-4c3d-9626-4a407cd828a2\n role: user\n text: '1'\n selected: false\n title: 发票提取模型2\n type: llm\n variables: []\n vision:\n configs:\n detail: high\n variable_selector:\n - '1731206171408'\n - file\n enabled: true\n height: 98\n id: '1731206267490'\n position:\n x: 254.62458422770857\n y: 395.2233033797767\n positionAbsolute:\n x: 254.62458422770857\n y: 395.2233033797767\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: false\n variable_selector: []\n desc: ''\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: deepseek-ai/DeepSeek-V2.5\n provider: siliconflow\n prompt_template:\n - id: cd2cff8b-9bfc-4d00-bb6f-1802663b1b02\n role: system\n text: \"{\\n \\\"Role\\\": \\\"JSON 数据比对专家\\\",\\n\\n \\\"Profile\\\": {\\n \\\"专长\\\":\\\n \\ \\\"精确比较和分析 JSON 数据\\\",\\n \\\"经验\\\": \\\"多年处理各种结构化数据的丰富经验\\\",\\n \\\"技能\\\"\\\n : [\\\"准确识别差异\\\", \\\"使用颜色高亮标注\\\", \\\"详细的比对报告生成\\\"]\\n },\\n\\n \\\"Goals\\\": [\\n\\\n \\ \\\"逐行比较两个 JSON 数据的内容\\\",\\n \\\"识别并标记所有存在的差异\\\",\\n \\\"使用颜色(红色)高亮显示不同之处\\\"\\\n ,\\n \\\"生成清晰、易读的比对结果报告\\\"\\n ],\\n\\n \\\"Rules\\\": [\\n \\\"必须逐个键值对进行比较,不遗漏任何字段\\\"\\\n ,\\n \\\"只标注存在差异的部分,相同部分保持原样\\\",\\n \\\"使用红色作为差异标注的唯一颜色\\\",\\n \\\"对于数值型差异,需要考虑精度问题\\\"\\\n ,\\n \\\"对于字符串差异,需要考虑大小写和空白字符\\\",\\n \\\"保持 JSON 的结构完整性,不改变原有的格式和顺序\\\"\\n\\\n \\ ],\\n\\n \\\"Workflows\\\": [\\n \\\"接收并解析两个待比对的 JSON 数据\\\",\\n \\\"确保两个\\\n \\ JSON 数据结构一致,如果不一致,报告结构差异\\\",\\n \\\"逐一比对每个键值对:\\\",\\n \\\" - 如果键不同,标记为新增或缺失\\\"\\\n ,\\n \\\" - 如果值不同,使用红色高亮标注\\\",\\n \\\"生成详细的比对报告,包括:\\\",\\n \\\" - 总体差异统计\\\"\\\n ,\\n \\\" - 每个差异项的具体描述\\\",\\n \\\" - 高亮显示的 JSON 数据\\\"\\n ],\\n\\n \\\"OutputFormat\\\"\\\n : {\\n \\\"type\\\": \\\"json\\\",\\n \\\"structure\\\": {\\n \\\"summary\\\"\\\n : \\\"总体比对结果摘要\\\",\\n \\\"differences\\\": [\\n {\\n \\\"key\\\"\\\n : \\\"差异字段名\\\",\\n \\\"value1\\\": \\\"第一个 JSON 中的值\\\",\\n \\\"value2\\\"\\\n : \\\"第二个 JSON 中的值\\\",\\n \\\"highlightColor\\\": \\\"red\\\"\\n }\\n\\\n \\ ],\\n \\\"highlightedJSON\\\": \\\"包含红色高亮的完整 JSON 数据\\\"\\n }\\n \\\n \\ },\\n\\n \\\"Examples\\\": [\\n {\\n \\\"input\\\": {\\n \\\"json1\\\"\\\n : {\\n \\\"价税合计(小写)\\\": \\\"263.00\\\",\\n \\\"收款人\\\": \\\"段欣冉\\\"\\n\\\n \\ },\\n \\\"json2\\\": {\\n \\\"价税合计(小写)\\\": \\\"213.00\\\"\\\n ,\\n \\\"收款人\\\": \\\"段牛冉\\\"\\n }\\n },\\n \\\"output\\\":\\\n \\ {\\n \\\"summary\\\": \\\"发现 2 处差异\\\",\\n \\\"differences\\\": [\\n\\\n \\ {\\n \\\"key\\\": \\\"价税合计(小写)\\\",\\n \\\"value1\\\"\\\n : \\\"263.00\\\",\\n \\\"value2\\\": \\\"213.00\\\",\\n \\\"highlightColor\\\"\\\n : \\\"red\\\"\\n },\\n {\\n \\\"key\\\": \\\"收款人\\\",\\n\\\n \\ \\\"value1\\\": \\\"段欣冉\\\",\\n \\\"value2\\\": \\\"段牛冉\\\",\\n\\\n \\ \\\"highlightColor\\\": \\\"red\\\"\\n }\\n ],\\n \\\n \\ \\\"highlightedJSON\\\": {\\n \\\"价税合计(小写)\\\": \\\"\u003cred>263.00\u003c/red>\\\"\\\n ,\\n \\\"收款人\\\": \\\"\u003cred>段欣冉\u003c/red>\\\"\\n }\\n }\\n }\\n\\\n \\ ]\\n}\"\n - id: 0bc60692-adc4-4b9f-bb2e-e8936e430dcf\n role: user\n text: '{{#1731206210304.text#}}\n\n {{#1731206267490.text#}}'\n selected: true\n title: 基于文本发票比对模型\n type: llm\n variables: []\n vision:\n enabled: false\n height: 98\n id: '1731206310442'\n position:\n x: 583\n y: 217\n positionAbsolute:\n x: 583\n y: 217\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: 469.53374570411427\n y: 272.9638162315947\n zoom: 0.5743491774985177\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":11540,"content_sha256":"1226497024d57d469e9c3d85a87fde474dae5433e231eb1da58e97a010d5a69a"},{"filename":"organized_dsl/05_文档处理与OCR/票据识别/增值税发票提取小工具chatflow.yml","content":"app:\n description: '本工作流主要是通过多模态发票模型实现简单的增值税发票OCR提取,作者:wwwzhouhui'\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 增值税发票提取小工具chatflow\n use_icon_as_answer_icon: false\nkind: app\nversion: 0.1.2\nworkflow:\n conversation_variables: []\n environment_variables: []\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n sourceType: llm\n targetType: answer\n id: llm-answer\n source: llm\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n - data:\n isInIteration: false\n sourceType: start\n targetType: document-extractor\n id: 1729851066338-source-1729851603790-target\n source: '1729851066338'\n sourceHandle: source\n target: '1729851603790'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n sourceType: document-extractor\n targetType: llm\n id: 1729851603790-source-llm-target\n source: '1729851603790'\n sourceHandle: source\n target: llm\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables:\n - allowed_file_extensions: []\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n label: file\n max_length: 48\n options: []\n required: true\n type: file\n variable: file\n height: 90\n id: '1729851066338'\n position:\n x: 0\n y: 277\n positionAbsolute:\n x: 0\n y: 277\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: true\n variable_selector:\n - '1729851066338'\n - file\n desc: ''\n memory:\n query_prompt_template: ''\n role_prefix:\n assistant: ''\n user: ''\n window:\n enabled: false\n size: 10\n model:\n completion_params:\n temperature: 0.7\n mode: chat\n name: Qwen/Qwen2-VL-72B-Instruct\n provider: openai_api_compatible\n prompt_template:\n - id: 994d57b8-32bc-45cd-b30a-4a1481553627\n role: system\n text: 请提取这张照片的内容,其中内容格式‘机器编号’、‘发票代码’、‘发票号码’、‘开票日期’、‘校 验 码’、‘购买方名称’、‘购买方纳税人识别号’、‘购买方地\n 址、电 话’、‘开户行及账号’、‘货物或应税劳务、服务名称’、‘规格型号’、‘单 位’、‘数 量’、‘单 价’、‘金 额’、‘税率’、‘税\n 额’、‘价税合计(大写)’、‘价税合计(小写)’、‘销售方名称’、‘销售方纳税人识别号’、‘销售方地 址、电 话’、‘销售方地 址、电 话’、‘开户行及账号’、‘备注’、‘收款人’、‘复核’、‘开票人’\n 字段返回信息,返回的结果信息以json格式返回\n selected: false\n title: LLM\n type: llm\n variables: []\n vision:\n configs:\n detail: high\n variable_selector:\n - '1729851066338'\n - file\n enabled: true\n height: 98\n id: llm\n position:\n x: 589\n y: 309\n positionAbsolute:\n x: 589\n y: 309\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#llm.text#}}'\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 103\n id: answer\n position:\n x: 1004\n y: 270\n positionAbsolute:\n x: 1004\n y: 270\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n desc: ''\n is_array_file: true\n selected: false\n title: 文档提取器\n type: document-extractor\n variable_selector:\n - sys\n - files\n height: 94\n id: '1729851603790'\n position:\n x: 304\n y: 285\n positionAbsolute:\n x: 304\n y: 285\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: -361.7400249635257\n y: -0.6003974572164452\n zoom: 1.3195079107728946\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":5519,"content_sha256":"c8479f71ebc5a67a9a1221e1aef52047def922a5bce993627afe22d0c4061cd8"},{"filename":"organized_dsl/06_知识库与RAG/图文知识库/图文知识库.yml","content":"app:\n description: ''\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: advanced-chat\n name: 图文知识库\n use_icon_as_answer_icon: false\ndependencies:\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/volcengine_maas:0.0.7@f8e44422cfa5b9a6ac1f2d3b43ef1069868efdad1e5cec2590de3f53ceac37b0\n- current_identifier: null\n type: marketplace\n value:\n marketplace_plugin_unique_identifier: langgenius/siliconflow:0.0.8@217f973bd7ced1b099c2f0c669f1356bdf4cc38b8372fd58d7874f9940b95de3\nkind: app\nversion: 0.1.5\nworkflow:\n conversation_variables: []\n environment_variables: []\n features:\n file_upload:\n allowed_file_extensions:\n - .JPG\n - .JPEG\n - .PNG\n - .GIF\n - .WEBP\n - .SVG\n allowed_file_types:\n - image\n allowed_file_upload_methods:\n - local_file\n - remote_url\n enabled: false\n fileUploadConfig:\n audio_file_size_limit: 50\n batch_count_limit: 5\n file_size_limit: 15\n image_file_size_limit: 10\n video_file_size_limit: 100\n workflow_file_upload_limit: 10\n image:\n enabled: false\n number_limits: 3\n transfer_methods:\n - local_file\n - remote_url\n number_limits: 3\n opening_statement: ''\n retriever_resource:\n enabled: true\n sensitive_word_avoidance:\n enabled: false\n speech_to_text:\n enabled: false\n suggested_questions: []\n suggested_questions_after_answer:\n enabled: false\n text_to_speech:\n enabled: false\n language: ''\n voice: ''\n graph:\n edges:\n - data:\n isInLoop: false\n sourceType: start\n targetType: knowledge-retrieval\n id: 1743994826325-source-1743994832383-target\n source: '1743994826325'\n sourceHandle: source\n target: '1743994832383'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: knowledge-retrieval\n targetType: llm\n id: 1743994832383-source-1743994891832-target\n source: '1743994832383'\n sourceHandle: source\n target: '1743994891832'\n targetHandle: target\n type: custom\n zIndex: 0\n - data:\n isInIteration: false\n isInLoop: false\n sourceType: llm\n targetType: answer\n id: 1743994891832-source-answer-target\n selected: false\n source: '1743994891832'\n sourceHandle: source\n target: answer\n targetHandle: target\n type: custom\n zIndex: 0\n nodes:\n - data:\n desc: ''\n selected: false\n title: 开始\n type: start\n variables: []\n height: 54\n id: '1743994826325'\n position:\n x: 30\n y: 252.5\n positionAbsolute:\n x: 30\n y: 252.5\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n dataset_ids:\n - 2516f4a8-9329-4845-a914-7965090ee2e2\n desc: ''\n multiple_retrieval_config:\n reranking_enable: false\n reranking_mode: reranking_model\n reranking_model:\n model: BAAI/bge-reranker-v2-m3\n provider: langgenius/siliconflow/siliconflow\n score_threshold: null\n top_k: 4\n query_variable_selector:\n - sys\n - query\n retrieval_mode: multiple\n selected: true\n title: 知识检索\n type: knowledge-retrieval\n height: 92\n id: '1743994832383'\n position:\n x: 334\n y: 252.5\n positionAbsolute:\n x: 334\n y: 252.5\n selected: true\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n answer: '{{#1743994891832.text#}}'\n desc: ''\n selected: false\n title: 直接回复\n type: answer\n variables: []\n height: 105\n id: answer\n position:\n x: 942\n y: 252.5\n positionAbsolute:\n x: 942\n y: 252.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n - data:\n context:\n enabled: true\n variable_selector:\n - '1743994832383'\n - result\n desc: ''\n model:\n completion_params: {}\n mode: chat\n name: deepseek-v3-241226\n provider: langgenius/volcengine_maas/volcengine_maas\n prompt_template:\n - id: c96a41bd-c775-4c1d-bcd9-1280033c9ecc\n role: system\n text: '你是一个AI聊天助手,请参考\u003cinfo>\u003c/info>中的内容,回答用户的问题。注意保留图片信息。\n\n\n \u003cinfo>\n\n {{#context#}}\n\n \u003c/info>'\n selected: false\n title: LLM\n type: llm\n variables: []\n vision:\n enabled: false\n height: 90\n id: '1743994891832'\n position:\n x: 638\n y: 252.5\n positionAbsolute:\n x: 638\n y: 252.5\n selected: false\n sourcePosition: right\n targetPosition: left\n type: custom\n width: 244\n viewport:\n x: 104.20000000000005\n y: -21.500000000000057\n zoom: 0.7\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":5284,"content_sha256":"3a66edfc4c724c0298ffece78e470509402870e9081f88422186ccf91ec8c4c6"},{"filename":"README.md","content":"# Dify 工作流生成器 (dify_creator)\n\n通过多轮对话引导用户明确需求,生成可直接导入 Dify 的工作流 DSL YAML 配置。\n\n## 目录结构\n\n```\ndify_creator/\n├── README.md # 主文档(使用说明、特性、示例)\n├── SKILL.md # 技能定义文件(Claude Code Skill 配置)\n└── organized_dsl/ # 整理后的 Dify 案例 DSL 文件\n ├── INDEX.md # 分类索引和标签查找指南\n ├── Dify_DSL_节点完整参考指南.md # 节点类型完整参考\n ├── 01_内容生成与创作/ # 文本创作、翻译、提示词优化 (~15个)\n ├── 02_图像生成与设计/ # AI绘画、风格迁移 (~12个)\n ├── 03_视频生成/ # 文生视频、图像转视频 (~8个)\n ├── 04_数据分析与可视化/ # 图表、报表、ECharts (~6个)\n ├── 05_文档处理与OCR/ # PDF解析、票据识别 (~10个)\n ├── 06_知识库与RAG/ # 文档问答、知识检索 (~4个)\n ├── 07_Agent与工具调用/ # Agent、MCP、外部API (~12个)\n ├── 08_教育与学习/ # 学科学习、测评、错题本 (~6个)\n ├── 09_商业与办公/ # 合同审查、发票、SQL (~8个)\n ├── 10_多媒体处理/ # TTS、音视频转文字 (~6个)\n ├── 11_代码与开发/ # 代码生成、API文档 (~4个)\n ├── 12_创意与娱乐/ # 游戏、故事、节日主题 (~8个)\n ├── 13_信息聚合/ # RSS新闻、搜索工具 (~4个)\n └── 14_参考示例/ # 基础模板、复杂案例 (~12个)\n\n共整理 125+ 个 Dify 工作流 DSL 文件\n```\n\n## 简介\n\ndify_creator 是一个专业的 Claude Code Skill,专注于帮助用户快速创建符合 Dify 2.0 规范的工作流配置。通过智能对话引导和参考现有案例,生成可直接导入 Dify 平台的 YAML 文件。\n\n## 功能特性\n\n- **智能对话引导**:多轮问答帮助用户梳理需求\n- **参考学习**:基于现有 Dify 案例自动匹配最佳实践\n- **完整 DSL 生成**:输出符合 Dify 2.0 规范的完整配置\n- **多类型支持**:Chatflow、Workflow、Advanced Chat 全面覆盖\n- **变量追踪**:自动管理节点间的变量传递和引用\n\n## 快速开始\n\n在 Claude Code 中激活此 Skill 后,通过对话描述你的需求:\n\n```\n我想创建一个 Dify 工作流,用于...\n```\n\nSkill 将引导你完成以下步骤:\n\n1. 确认基础信息(名称、描述、应用类型)\n2. 了解功能需求(输入、处理、输出)\n3. 分析流程结构(分支、循环、错误处理)\n4. 选择模型和工具\n5. 参考现有案例\n6. 生成完整 DSL 配置\n\n## 应用类型\n\n| 类型 | 说明 | 适用场景 |\n|------|------|---------|\n| `workflow` | 批处理任务,单轮执行 | 数据处理、批量生成 |\n| `chatflow` | 对话式应用,多轮交互 | 智能客服、对话助手 |\n| `advanced-chat` | 高级聊天模式 | 复杂对话场景 |\n\n## 支持的节点类型\n\n| 节点 | 功能 |\n|------|------|\n| `start` | 开始节点,接收用户输入 |\n| `llm` | 大语言模型调用 |\n| `tool` | 工具/插件调用 |\n| `answer` | 回复用户 |\n| `if-else` | 条件分支 |\n| `code` | 代码执行 |\n| `iteration` | 循环处理 |\n| `template-transform` | 模板转换 |\n| `variable-aggregator` | 变量聚合 |\n| `knowledge-retrieval` | 知识库检索 |\n\n## 使用示例\n\n### 示例对话\n\n**用户**:我想创建一个会议纪要生成器\n\n**Skill**:好的,让我来帮你创建会议纪要生成器。请回答几个问题:\n\n1. 工作流名称?(如:meeting-minutes-generator)\n2. 输入方式:音频文件还是文本?\n3. 需要哪些处理步骤?(语音转文字、内容总结、要点提取)\n\n**用户**:\n- 名称:meeting-minutes\n- 输入:音频/视频文件\n- 流程:提取音频 → 语音转文字 → AI 总结 → 生成纪要\n\n**Skill**:[生成完整的 DSL 配置]\n\n### 输出示例\n\n生成的 YAML 文件可直接导入 Dify:\n\n```yaml\napp:\n description: 会议纪要自动生成器\n mode: workflow\n name: meeting-minutes\nkind: app\nversion: 0.3.0\nworkflow:\n graph:\n nodes:\n - id: '1747702103197'\n type: start\n data:\n title: 开始\n variables:\n - variable: audio_file\n type: file\n label: 会议录音\n required: true\n # ... 更多节点\n```\n\n## 参考案例\n\nSkill 会参考以下目录中的 Dify 案例:\n\n```\n参考目录:e:\\sany\\dify_example\\dify-for-dsl\\dsl\\\n\n包含案例:\n- 52-音视频转文字会议纪要\n- 57-中小学数学错题本\n- 61-发票识别\n- 72-PDF翻译\n- 74-秘塔搜索\n- 等 80+ 实际案例\n```\n\n## 最佳实践\n\n1. **明确需求**:在对话中清晰描述工作流目标\n2. **参考借鉴**:告诉 Skill 参考类似的已有案例\n3. **逐步细化**:先创建核心流程,再添加分支和异常处理\n4. **测试验证**:导入 Dify 后进行调试和优化\n\n## 常见问题\n\n**Q: 支持自定义插件吗?**\nA: 支持,在对话中说明需要使用的插件,Skill 会在 dependencies 中声明。\n\n**Q: 可以生成 Chatflow 吗?**\nA: 可以,只需在对话中指定应用类型为 `chatflow` 或 `advanced-chat`。\n\n**Q: 变量引用格式是什么?**\nA: 使用 `{{#节点ID.输出字段#}}` 格式引用变量。\n\n## 许可证\n\n本项目采用 CC BY-NC-SA 4.0 许可证。\n\n## 作者\n\n**沐然** - Dify 工作流生成器作者\n\n---\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":5672,"content_sha256":"d593d8b3f978da4cb11ce03dad1b7872835f8bfab6060d990fcd1cc2162d9c18"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Dify 工作流生成器 (dify_creator)","type":"text"}]},{"type":"paragraph","content":[{"text":"通过多轮对话引导用户明确需求,","type":"text"},{"text":"参考 ","type":"text","marks":[{"type":"strong"}]},{"text":"organized_dsl/","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" 目录中的现有案例","type":"text","marks":[{"type":"strong"}]},{"text":",生成符合对应 Dify 版本规范的 DSL YAML 文件,可直接导入 Dify 使用。","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"⚠️ ","type":"text"},{"text":"重要:搜索文件前必须先切换到技能目录!","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"cd \"c:\\Users\\14429\\.claude\\skills\\dify_creator\"","type":"text"}]},{"type":"paragraph","content":[{"text":"然后再搜索 ","type":"text"},{"text":"organized_dsl/INDEX.md","type":"text","marks":[{"type":"code_inline"}]},{"text":"和 ","type":"text"},{"text":"organized_dsl/**/*.yml","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"核心能力","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"智能对话引导","type":"text","marks":[{"type":"strong"}]},{"text":":通过提问帮助用户梳理需求,避免遗漏关键信息","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"案例参考定位","type":"text","marks":[{"type":"strong"}]},{"text":":基于 INDEX.md 索引,自动匹配相似 Dify 案例","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"工作流结构设计","type":"text","marks":[{"type":"strong"}]},{"text":":分析需求后给出流程结构,与用户确认","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"完整 DSL 生成","type":"text","marks":[{"type":"strong"}]},{"text":":参考 DSL 节点指南,生成符合规范的完整 YAML 配置","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"使用场景","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"创建智能客服对话流程","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"构建 RAG 知识库问答系统","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"设计音视频处理工作流","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"开发代码生成和文档处理工具","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"搭建多模型协作的复杂流程","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"工作流程总览","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"用户需求 → 案例定位 → 流程设计 → 用户确认 → DSL生成 → 交付","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"核心步骤","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"步骤","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"名称","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"输出","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Step 1","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"收集需求","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"需求文档","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Step 2","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"案例定位","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"参考案例列表","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Step 3","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"流程设计","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"流程结构图","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Step 4","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"用户确认","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"确认反馈","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Step 5","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"DSL生成","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"完整YAML文件","type":"text"}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 1:收集用户需求","type":"text"}]},{"type":"paragraph","content":[{"text":"首先向用户询问基础信息,明确工作流的目标和功能。","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1.1 基础信息收集","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"请告诉我关于你要创建的 Dify 工作流的基本信息:\n\n1. **工作流名称**(英文,使用连字符,如:document-processor)\n2. **一句话描述**:这个工作流做什么?\n3. **应用类型**:\n - workflow:批处理任务,单轮执行\n - advanced-chat:高级聊天模式,支持多轮对话\n - chatflow:对话式应用,简单多轮交互\n4. **目标用户**:谁会使用这个工作流?","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1.2 功能需求收集","type":"text"}]},{"type":"paragraph","content":[{"text":"根据用户选择的应用类型,深入询问功能需求:","type":"text"}]},{"type":"paragraph","content":[{"text":"通用问题:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"5. **输入方式**:用户如何提供输入?\n - 文本输入(短文本/长文本)\n - 文件上传(图片/PDF/音视频/文档)\n - 混合输入\n\n6. **核心处理**:工作流需要执行哪些处理步骤?\n - 数据预处理 → 核心处理 → 结果输出\n - 请尽可能描述每个步骤\n\n7. **输出形式**:最终返回什么结果?\n - 文本回复\n - 结构化数据(JSON/Markdown表格)\n - 文件(图片/PDF/音频)\n - 混合输出","type":"text"}]},{"type":"paragraph","content":[{"text":"根据功能类型补充:","type":"text","marks":[{"type":"strong"}]}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"功能类型","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"补充问题","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"RAG问答","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"知识库来源?检索策略(关键词/向量)?召回数量?是否需要重排序?","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"音视频处理","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"音频提取?语音识别(ASR)?内容总结?字幕生成?","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"文档处理","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"PDF解析?内容提取?格式转换?OCR识别?","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"图像生成","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"文生图?图生图?风格迁移?是否需要多图组合?","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"数据处理","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"数据来源(API/数据库/文件)?分析维度?图表类型?","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"工具调用","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"使用哪些工具/插件?调用频率?是否需要MCP?","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"多模型协作","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"调用哪些模型?分工是什么?模型间如何传递信息?","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1.3 模型和工具配置","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"8. **大模型选择**:\n - 模型提供商:OpenAI / Anthropic / 国内模型(硅基流动/通义千问/零一万物等)\n - 模型名称:如 gpt-4o, deepseek-V3, qwen-max\n - 参数设置:temperature(创意度 0-1)、max_tokens 等\n\n9. **工具/插件**:\n - 内置工具:代码执行、知识检索、HTTP请求、TTS等\n - 第三方插件:PDF处理、数据库连接等\n - MCP服务:是否需要集成外部MCP工具?\n\n10. **知识库(可选)**:\n - 是否需要接入知识库?\n - 知识库ID和名称\n - 检索策略配置","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1.4 流程控制询问","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"11. **流程分支**:是否有条件分支?(是/否)\n - 如果是,分支条件是什么?(例如:根据用户意图分类走不同处理路径)\n12. **循环处理**:是否需要迭代处理批量数据?(是/否)\n - 例如:批量处理多个文件、对列表中每项进行处理\n13. **会话状态**:是否需要保存会话状态?(是/否)\n - 例如:记录用户偏好、跨轮次变量传递\n14. **错误处理**:失败时如何处理?\n - 终止流程并报错\n - 继续执行其他分支\n - 返回默认结果","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 2:案例定位(基于 INDEX.md)","type":"text"}]},{"type":"paragraph","content":[{"text":"根据收集的需求,在 ","type":"text"},{"text":"organized_dsl/INDEX.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" 中定位相似案例。","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"2.0 搜索路径配置","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"⚠️ **关键步骤:搜索前必须先切换到技能目录!**\n\n**第一步:切换到技能目录(必须执行)**\n```bash\ncd \"c:\\Users\\14429\\.claude\\skills\\dify_creator\"","type":"text"}]},{"type":"paragraph","content":[{"text":"第二步:搜索 DSL 文件","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"搜索 ","type":"text"},{"text":"organized_dsl/**/*.yml","type":"text","marks":[{"type":"code_inline"}]},{"text":"(在技能目录下搜索)","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"第三步:搜索索引文件","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"搜索 ","type":"text"},{"text":"organized_dsl/INDEX.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"搜索 ","type":"text"},{"text":"organized_dsl/Dify_DSL_节点完整参考指南.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"paragraph","content":[{"text":"错误做法:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"❌ 直接搜索 ","type":"text"},{"text":"**/*.yml","type":"text","marks":[{"type":"code_inline"}]},{"text":"(当前目录可能不对)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"❌ 搜索 ","type":"text"},{"text":"**/organized_dsl/**/*.yml","type":"text","marks":[{"type":"code_inline"}]},{"text":"(路径重复)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"❌ 搜索 ","type":"text"},{"text":"**/*.yaml","type":"text","marks":[{"type":"code_inline"}]},{"text":"(文件是 .yml 不是 .yaml)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"❌ 在其他目录下搜索 ","type":"text"},{"text":"organized_dsl/**/*.yml","type":"text","marks":[{"type":"code_inline"}]},{"text":"(会找不到)","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"正确做法:","type":"text","marks":[{"type":"strong"}]}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"先执行 ","type":"text"},{"text":"cd \"c:\\Users\\14429\\.claude\\skills\\dify_creator\"","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"再搜索 ","type":"text"},{"text":"organized_dsl/**/*.yml","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"再搜索 ","type":"text"},{"text":"organized_dsl/INDEX.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"\n### 2.1 读取 INDEX.md 索引\n\n首先读取索引文件了解案例分类:\n\n```markdown\n1. 搜索并读取 `organized_dsl/INDEX.md`\n2. 根据用户需求的功能类型,定位相关分类目录\n3. 在对应目录中搜索相似功能的 DSL 案例(使用 `organized_dsl/**/*.yml`)","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"2.2 分类定位","type":"text"}]},{"type":"paragraph","content":[{"text":"根据功能类型查找对应目录:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"根据你的需求,我定位到以下相关分类:\n\n| 分类 | 目录路径 |\n|------|----------|\n| 内容创作 | `01_内容生成与创作/` |\n| 图像生成 | `02_图像生成与设计/` |\n| 视频生成 | `03_视频生成/` |\n| 数据分析 | `04_数据分析与可视化/` |\n| 文档处理 | `05_文档处理与OCR/` |\n| 知识库RAG | `06_知识库与RAG/` |\n| Agent工具 | `07_Agent与工具调用/` |\n| 教育学习 | `08_教育与学习/` |\n| 商业办公 | `09_商业与办公/` |\n| 多媒体处理 | `10_多媒体处理/` |\n| 代码开发 | `11_代码与开发/` |\n| 创意娱乐 | `12_创意与娱乐/` |","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"2.3 复杂度匹配","type":"text"}]},{"type":"paragraph","content":[{"text":"根据节点数量匹配复杂度:","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"复杂度","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"节点数","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"适用场景","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"简单","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3-5个","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"单一功能,线性流程","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"中等","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"6-15个","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"多步骤处理,有分支","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"复杂","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"16+个","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"多模块协作,循环处理","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"2.4 输出参考案例列表","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"找到以下与你需求相关的参考案例:\n\n### 📂 案例1:[案例名称]\n- **位置**:`目录路径/文件名.yml`\n- **复杂度**:简单/中等/复杂\n- **节点数**:X个\n- **主要节点**:start → llm → answer\n- **参考价值**:节点结构、Prompt模板、流程设计\n\n### 📂 案例2:[案例名称]\n...\n\n请确认:\n- 是否需要查看更多相似案例?\n- 哪些案例的结构最符合你的需求?","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"2.5 读取并分析参考案例","type":"text"}]},{"type":"paragraph","content":[{"text":"选定参考案例后,读取 DSL 文件进行分析:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"我已读取参考案例,以下是关键配置提取:\n\n**节点结构:**","type":"text"}]},{"type":"paragraph","content":[{"text":"[开始节点] ↓ [LLM节点] - 模型: xxx, Prompt: xxx ↓ [工具节点] - 工具: xxx ↓ [输出节点]","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"\n**关键配置参考:**\n- LLM prompt模板:...\n- 变量传递方式:...\n- 条件分支逻辑:...","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 3:工作流结构设计","type":"text"}]},{"type":"paragraph","content":[{"text":"根据需求分析和参考案例,设计工作流结构。","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"3.1 设计原则","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"KISS原则","type":"text","marks":[{"type":"strong"}]},{"text":":保持简单,避免过度设计","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"模块化","type":"text","marks":[{"type":"strong"}]},{"text":":将复杂流程拆分为可复用的步骤","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"清晰变量","type":"text","marks":[{"type":"strong"}]},{"text":":使用有意义的变量名,便于追踪","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"3.2 输出流程结构图","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"根据你的需求,我设计了以下工作流结构:\n\n## 📊 流程结构图\n","type":"text"}]},{"type":"paragraph","content":[{"text":"┌─────────────┐ │ 开始节点 │ 输入:{{input_var}} └──────┬──────┘ ↓ ┌─────────────┐ │ 预处理节点 │ 功能:数据清洗/格式转换 └──────┬──────┘ ↓ ┌─────────────┐ │ 核心处理 │ 功能:LLM调用/工具执行 │ (分支判断) │ 条件:{{condition}} └──────┬──────┘ ┌────┴────┐ ↓ ↓ ┌──────┐ ┌──────┐ │分支A │ │分支B │ └────┬─┘ └────┬─┘ │ │ └────┬─────┘ ↓ ┌─────────────┐ │ 结果处理 │ 功能:格式化/聚合 └──────┬──────┘ ↓ ┌─────────────┐ │ 输出节点 │ 输出:{{output_var}} └─────────────┘","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"\n## 📋 节点列表\n\n| 序号 | 节点名称 | 节点类型 | 功能描述 | 输入变量 | 输出变量 |\n|------|---------|---------|---------|---------|---------|\n| 1 | 开始 | start | 接收用户输入 | - | user_input |\n| 2 | 预处理 | code | 数据清洗 | user_input | clean_data |\n| 3 | LLM处理 | llm | 生成内容 | clean_data | llm_result |\n| 4 | 条件判断 | if-else | 分支处理 | llm_result | branch |\n| 5 | 输出 | answer | 返回结果 | final_result | - |\n\n## 📝 关键配置\n\n**LLM配置:**\n- 模型:xxx\n- Prompt模板:xxx\n\n**变量传递:**\n- 上游输出 → 下游输入","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 4:用户确认(⚠️ 必须步骤)","type":"text"}]},{"type":"paragraph","content":[{"text":"警告:未获得用户明确确认前,禁止生成 DSL!","type":"text","marks":[{"type":"strong"}]}]},{"type":"paragraph","content":[{"text":"向用户展示结构设计,必须获取以下确认后才能继续:","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"4.1 确认内容","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"## 工作流结构确认 ⚠️\n\n在生成 DSL 文件之前,请确认以下设计:\n\n### ✅ 流程结构\n- 节点数量:X 个\n- 流程分支:X 条\n- 循环处理:X 处\n\n### ✅ 节点配置\n1. [节点1]:确认配置 ✓\n2. [节点2]:需要调整 →\n3. [节点3]:确认配置 ✓\n\n### ✅ 待确认事项\n1. 模型选择是否正确?\n2. Prompt模板是否需要调整?\n3. 分支条件是否合理?\n4. 输出格式是否满足需求?\n\n**请回复「确认」或「继续」以生成 DSL,或提供修改意见。**","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"4.2 确认检查清单","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"生成 DSL 前必须确认以下全部项目:\n\n- [ ] 用户明确回复「确认」或「继续」\n- [ ] 所有节点配置已与用户核对\n- [ ] 模型和参数已获用户认可\n- [ ] 输出格式符合用户需求\n\n**未满足上述条件,禁止跳到 Step 5!**","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"4.3 调整迭代","type":"text"}]},{"type":"paragraph","content":[{"text":"如果用户有修改意见,迭代调整直到确认:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"根据你的反馈,我进行了以下调整:\n\n1. 修改了 LLM 节点 Prompt 模板\n2. 添加了新的条件分支\n3. 调整了变量传递逻辑\n\n请再次确认。","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 5:生成完整 DSL(⚠️ 必须参考案例)","type":"text"}]},{"type":"paragraph","content":[{"text":"生成 DSL 前必须完成以下步骤:","type":"text","marks":[{"type":"strong"}]}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"✅ 已切换到技能目录:","type":"text"},{"text":"cd \"c:\\Users\\14429\\.claude\\skills\\dify_creator\"","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"✅ 已在 Step 2 中读取并分析了参考案例","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"✅ 已在 Step 4 中获得用户明确确认","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"✅ 已读取 ","type":"text"},{"text":"organized_dsl/Dify_DSL_节点完整参考指南.md","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"5.1 前置检查","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"生成 DSL 前确认:\n\n- [ ] 已选定参考案例文件(路径:xxx/xxx.yml)\n- [ ] 已读取节点配置参考指南\n- [ ] 已获得用户「确认」回复\n- [ ] 所有节点配置已确定\n\n**未完成以上步骤,禁止生成 DSL!**","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"5.2 生成结构","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"app:\n description: '{{description}}'\n icon: '{{icon}}'\n icon_background: '{{icon_background}}'\n mode: '{{mode}}'\n name: '{{name}}'\n use_icon_as_answer_icon: false\nkind: app\nversion: {{参考案例的版本号}}\nworkflow:\n conversation_variables: []\n environment_variables: []\n features:\n file_upload: {}\n # ... 其他功能配置\n graph:\n edges: []\n nodes: []\n viewport: {}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"5.3 节点 ID 生成规则","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"使用时间戳+随机数作为节点 ID","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"格式:","type":"text"},{"text":"{时间戳}{随机6位数字}","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"示例:","type":"text"},{"text":"1741011655068","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"1735195133945","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"5.4 位置计算","type":"text"}]},{"type":"paragraph","content":[{"text":"节点在画布上的位置根据流程顺序自动计算:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"X 坐标:每增加一个节点向右移动约 300px","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Y 坐标:统一居中或根据分支调整","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"5.5 完整输出示例","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"# ============================================\n# Dify 工作流 DSL 文件\n# 名称:xxx\n# 生成时间:2026-01-03\n# 参考案例:xxx.yml\n# ============================================\n\napp:\n description: '工作流描述'\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: workflow\n name: xxx\nkind: app\nversion: {{参考案例的版本号}}\nworkflow:\n graph:\n edges:\n # ... 连接配置\n nodes:\n # ... 节点配置","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"⚠️ 5.6 节点编写规则(重要!)","type":"text"}]},{"type":"paragraph","content":[{"text":"每个节点都必须参考 organized_dsl 案例库中的示例格式编写!","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"生成工作流时,请严格遵循以下规则:\n\n1. **先查找参考案例**\n - 搜索 `organized_dsl/**/*.yml` 找到相似功能的 DSL 文件\n - 搜索 `organized_dsl/Dify_DSL_节点完整参考指南.md` 查看节点配置说明\n\n2. **节点结构必须完整**\n 每个节点必须包含:\n - `id`: 唯一标识\n - `data.type`: 节点类型\n - `data.title`: 节点标题\n - `position`: 画布位置 {x, y}\n - `width`/`height`: 节点尺寸(可选)\n\n3. **禁止凭空编写**\n - ❌ 不要凭记忆或想象编写节点\n - ✅ 必须复制参考案例的结构,替换关键字段\n\n4. **特别注意事项**\n - **迭代节点**:必须包含 iteration-start 子节点和所有必要标记\n - **LLM 节点**:必须包含 model.provider、model.name、prompt_template\n - **HTTP 请求**:必须包含正确的 authorization 和 body 配置\n - **变量引用**:必须使用 `{{#节点ID.变量#}}` 格式","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"⚠️ 5.7 生成后强制检查(❗必须执行)","type":"text"}]},{"type":"paragraph","content":[{"text":"生成 DSL 后,必须按以下步骤强制检查每个节点!","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"## DSL 生成后强制检查 ⚠️\n\n**警告:未完成检查,禁止交付给用户!**\n\n### 第一步:确定版本号\n```yaml\nversion: {{参考案例的版本号}} # ✅ 与参考案例保持一致","type":"text"}]},{"type":"paragraph","content":[{"text":"要点:","type":"text","marks":[{"type":"strong"}]},{"text":" 版本号应与所选参考案例保持一致,不是固定值。","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"第二步:遍历每个节点,逐一对照参考案例检查","type":"text"}]},{"type":"paragraph","content":[{"text":"对于每个生成的节点,执行以下检查:","type":"text","marks":[{"type":"strong"}]}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"在参考案例中找到同类型节点","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"cd \"c:\\Users\\14429\\.claude\\skills\\dify_creator\"\nrg \"type: 节点类型\" organized_dsl/**/*.yml | head -20","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"读取参考案例中的节点结构","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"打开对应的 DSL 文件","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"找到相同类型的节点配置","type":"text"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"逐字段对比","type":"text","marks":[{"type":"strong"}]}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"字段","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"参考案例","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"生成结果","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"是否正确","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"data.positionAbsolute","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"false","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"?","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph"}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"data.selected","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"false","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"?","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph"}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"height","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"52","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"?","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph"}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"width","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"242","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"?","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph"}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"标记差异并修正","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"发现任何差异,立即修正","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"不能确定的字段,参考案例使用原值","type":"text"}]}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"第三步:边连接检查","type":"text"}]},{"type":"paragraph","content":[{"text":"遍历每条边,检查以下字段:","type":"text","marks":[{"type":"strong"}]}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"data.sourceType","type":"text","marks":[{"type":"code_inline"}]},{"text":": 源节点类型","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"data.targetType","type":"text","marks":[{"type":"code_inline"}]},{"text":": 目标节点类型","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"data.selected","type":"text","marks":[{"type":"code_inline"}]},{"text":": false","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"data.isInIteration","type":"text","marks":[{"type":"code_inline"}]},{"text":": false(迭代外)","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"type","type":"text","marks":[{"type":"code_inline"}]},{"text":": custom/true/false/isInIteration","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"第四步:特殊节点重点检查","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"节点类型","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"检查重点","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"variable-aggregator","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"output_type","type":"text","marks":[{"type":"code_inline"}]},{"text":" + ","type":"text"},{"text":"variables","type":"text","marks":[{"type":"code_inline"}]},{"text":" 数组(不是 outputs/formatter_template)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"end","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"type: end","type":"text","marks":[{"type":"code_inline"}]},{"text":" + ","type":"text"},{"text":"outputs","type":"text","marks":[{"type":"code_inline"}]},{"text":"(不是 type: answer)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"iteration","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"start_node_id","type":"text","marks":[{"type":"code_inline"}]},{"text":" 指向 iteration-start","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"llm","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"model.provider","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"model.name","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"prompt_template","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"http-request","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"authorization","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"body","type":"text","marks":[{"type":"code_inline"}]},{"text":" 配置完整","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"第五步:检查报告","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"## DSL 检查报告\n\n### 节点检查结果\n| 节点ID | 节点类型 | 检查状态 | 问题 |\n|--------|---------|---------|------|\n| xxx | start | ✅ 通过 | 无 |\n| xxx | llm | ❌ 失败 | 缺少 model.provider |\n\n### 边检查结果\n| 边ID | 类型 | 检查状态 | 问题 |\n|------|-----|---------|------|\n| xxx | custom | ✅ 通过 | 无 |\n\n### 最终结论\n- [ ] 所有节点检查通过\n- [ ] 所有边检查通过\n- [ ] 无需修正,可以交付","type":"text"}]},{"type":"paragraph","content":[{"text":"检查不通过的处理:","type":"text","marks":[{"type":"strong"}]}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"定位问题节点","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"读取参考案例","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"修正节点配置","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"重新检查直到通过","type":"text"}]}]}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"\n---\n\n## Dify DSL 结构规范\n\n### 完整结构模板\n\n```yaml\napp:\n description: '应用描述'\n icon: 🤖\n icon_background: '#FFEAD5'\n mode: workflow|advanced-chat|chatflow\n name: 应用名称\n use_icon_as_answer_icon: false\nkind: app\nversion: {{参考案例的版本号}}\nworkflow:\n conversation_variables: [] # 会话变量\n environment_variables: [] # 环境变量\n features:\n file_upload: # 文件上传配置\n enabled: false\n # ... 详细配置\n opening_statement: '' # 开场白\n retriever_resource: # 检索资源\n enabled: true\n text_to_speech: # TTS配置\n enabled: false\n graph:\n edges: [] # 连线列表\n nodes: [] # 节点列表\n viewport: # 视图位置\n x: 0\n y: 0\n zoom: 1\ndependencies: [] # 插件依赖","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"节点类型说明","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"节点类型","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"用途","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"关键配置","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"start","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"开始节点","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"variables(输入变量定义)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"llm","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"大语言模型","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"model、prompt_template、vision、context","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"answer","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Chatflow","type":"text","marks":[{"type":"strong"}]},{"text":" 直接回复","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"answer(输出模板),仅用于对话式应用","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"knowledge-retrieval","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"知识库检索","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"dataset_ids、query_variable_selector","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"tool","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"工具调用","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"provider_id、tool_name、tool_parameters","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"code","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"代码执行","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"code、code_language、outputs、variables","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"http-request","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"HTTP请求","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"method、url、authorization、body","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"if-else","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"条件分支","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"cases(条件判断)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"template-transform","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"模板转换","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"template、variables","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"assigner","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"写入会话变量","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"items、write_mode","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"variable-aggregator","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"聚合多分支输出","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"variables、output_type(不是简单整合!)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"iteration","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"⚠️ 循环处理","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"iterator_selector、output_selector、","type":"text"},{"text":"start_node_id(必填!)","type":"text","marks":[{"type":"strong"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"document-extractor","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"文档提取","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"variable_selector、is_array_file","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"agent","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"智能体","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"agent_parameters、agent_strategy_name","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"end","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Workflow","type":"text","marks":[{"type":"strong"}]},{"text":" 结束节点","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"outputs(输出变量),仅用于工作流","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"变量引用语法","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"# 引用格式:{{#节点ID.输出字段#}}\n\n# 引用开始节点的输入\n{{#1742961448129.file#}}\n\n# 引用 LLM 节点的文本输出\n{{#1742965550311.text#}}\n\n# 引用 Code 节点的自定义输出\n{{#1747670104835.result#}}\n\n# 引用会话变量\n{{#conversation.status#}}\n\n# 引用环境变量\n{{#env.API_KEY#}}","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"⚠️ 迭代节点规范(关键!)","type":"text"}]},{"type":"paragraph","content":[{"text":"迭代节点是 DSL 中最容易出错的部分,缺少任何一项都会导致导入失败!","type":"text","marks":[{"type":"strong"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"迭代节点完整结构","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"# 1. iteration 节点 - 循环控制器\n- id: '1741011600006'\n data:\n iterator_selector: ['1741011655068', 'text'] # 要遍历的数组\n output_selector: ['1741011662463', 'result'] # 输出结果\n output_type: array[object] # 必须格式\n start_node_id: 1741011600006start # 必须指向 iteration-start\n title: 迭代处理\n type: iteration\n position: {x: 200, y: 100}\n\n# 2. iteration-start 节点 - 迭代入口(必须有!)\n- id: 1741011600006start\n data:\n title: 迭代开始\n type: custom-iteration-start\n parentId: '1741011600006' # 必须指向父迭代节点\n position: {x: 200, y: 200}\n\n# 3. 迭代内部节点 - 处理每个元素\n- id: '1741011662463'\n data:\n isInIteration: true # 必须标记在迭代内\n iteration_id: '1741011600006' # 必须标识所属迭代\n parentId: '1741011600006' # 必须指向父迭代\n title: 处理节点\n type: llm\n position: {x: 200, y: 300}\n\n# 4. 迭代内部边 - 连接迭代内节点\n- source: 1741011600006start\n target: '1741011662463'\n type: isInIteration # 必须是 isInIteration\n zIndex: 1002 # 必须的渲染层级","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"成功版 vs 失败版对比","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"对比项","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ 成功版","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌ 失败版","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"版本","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"参考案例的版本","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"版本不一致","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"iteration-start","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ 有","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌ 缺少","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"parentId","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ 有","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌ 缺少","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"iteration_id","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ 有","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌ 缺少","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"isInIteration 边","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ 有","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌ 缺少","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"zIndex: 1002","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ 有","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌ 缺少","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"output_type 格式","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"array[object]","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"错误格式","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"start_node_id","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ 指向 iteration-start","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌ 缺少","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"❌ 常见错误","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"问题","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"说明","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"缺少 iteration-start","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"迭代必须有专门的 start 子节点,不是\"内置\"的","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"缺少 parentId","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"迭代内部节点无法识别归属哪个迭代","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"缺少 iteration_id","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"迭代无法正确管理内部节点","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"缺少 zIndex: 1002","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"迭代内部边渲染层级错误","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"output_type 格式错误","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"必须是 ","type":"text"},{"text":"array[object]","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"迭代边连接类型","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"类型","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"说明","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"是否用于迭代","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"custom","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"普通连接","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌ 迭代外","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"true","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"条件为真","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"false","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"条件为假","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"isInIteration","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"迭代内连接","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ 必须用这个","type":"text"}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":3},"content":[{"text":"Edge 连接类型","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"类型","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"说明","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"示例","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"custom","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"普通连接","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"source → target","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"true","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"条件为真分支","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"if-else → true","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"false","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"条件为假分支","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"if-else → false","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"custom_case_id","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"自定义分支","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"if-else → 自定义case_id","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"isInIteration","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"循环内连接","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"iteration内节点连接","type":"text"}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"使用示例","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"示例:翻译工作流","type":"text"}]},{"type":"paragraph","content":[{"text":"用户需求:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"名称:zh-en-translator","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"功能:中译英翻译","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"类型:workflow","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"输入:中文文本","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"流程:用户输入 → LLM翻译 → 返回结果","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"生成配置:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"app:\n description: '中英文翻译工作流'\n icon: 🌐\n icon_background: '#E3F2FD'\n mode: workflow\n name: zh-en-translator\nkind: app\nversion: {{参考案例的版本号}}\nworkflow:\n graph:\n edges:\n - source: '1741011655068'\n target: '1741011662463'\n type: custom\n - source: '1741011662463'\n target: llm\n type: custom\n - source: llm\n target: answer\n type: custom\n nodes:\n - data:\n title: 开始\n type: start\n variables:\n - variable: text\n type: paragraph\n label: 输入中文文本\n required: true\n id: '1741011655068'\n position: {x: 0, y: 263}\n - data:\n context:\n enabled: false\n model:\n provider: siliconflow\n name: internlm2_5-7b-chat\n mode: chat\n prompt_template:\n - role: system\n text: '请将以下中文翻译成英文,只输出翻译结果:{{#1741011655068.text#}}'\n title: LLM翻译\n type: llm\n id: llm\n position: {x: 382, y: 263}\n - data:\n answer: '{{#llm.text#}}'\n title: 翻译结果\n type: answer\n id: answer\n position: {x: 690, y: 263}","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"最佳实践","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"1. 案例复用策略","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"先定位","type":"text","marks":[{"type":"strong"}]},{"text":":通过 INDEX.md 找到最相似的案例","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"再分析","type":"text","marks":[{"type":"strong"}]},{"text":":阅读 DSL 文件,理解节点配置","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"后调整","type":"text","marks":[{"type":"strong"}]},{"text":":基于参考模板进行个性化修改","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"2. 流程设计原则","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"从简单开始","type":"text","marks":[{"type":"strong"}]},{"text":":先实现核心功能,再添加分支和循环","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"模块化设计","type":"text","marks":[{"type":"strong"}]},{"text":":复杂流程拆分为可复用步骤","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"清晰命名","type":"text","marks":[{"type":"strong"}]},{"text":":使用有意义的变量名","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"3. DSL 编写检查清单","type":"text"}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"节点 ID 唯一且格式正确","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"位置坐标合理,不重叠","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Edge 连接正确,无断链","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"变量引用格式正确","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Model/Provider 配置有效","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"输出变量名与引用一致","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"4. 测试验证建议","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"生成后在 Dify 中导入测试","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"检查各节点的输入输出","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"验证条件分支逻辑","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"测试边界情况和错误处理","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"错误处理","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"错误类型","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"处理方式","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"需求不完整","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"提示用户补充缺失信息","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"流程逻辑错误","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"指出可能的循环引用或断链","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"节点配置错误","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"提供修正建议","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"变量引用无效","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"列出可用的变量选项","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"案例定位失败","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"扩大搜索范围或手动设计","type":"text"}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"参考资源","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"📂 案例目录结构","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"organized_dsl/\n├── 01_内容生成与创作/\n├── 02_图像生成与设计/\n├── 03_视频生成/\n├── 04_数据分析与可视化/\n├── 05_文档处理与OCR/\n├── 06_知识库与RAG/\n├── 07_Agent与工具调用/\n├── 08_教育与学习/\n├── 09_商业与办公/\n├── 10_多媒体处理/\n├── 11_代码与开发/\n├── 12_创意与娱乐/\n├── 13_信息聚合/\n├── 14_参考示例/\n├── INDEX.md # 案例索引(搜索 organized_dsl/INDEX.md)\n└── Dify_DSL_节点完整参考指南.md # 节点配置参考(搜索 organized_dsl/Dify_DSL_节点完整参考指南.md)","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"📖 文档链接","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"INDEX.md","type":"text","marks":[{"type":"strong"}]},{"text":":按功能分类的案例索引","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Dify_DSL_节点完整参考指南.md","type":"text","marks":[{"type":"strong"}]},{"text":":各节点的详细配置说明","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"节点自动校验与生成规则","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"版本号规则","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"# ✅ 正确 - 生成时必须使用\nversion: {{参考案例的版本号}}\n\n# ❌ 错误 - 禁止使用\nversion: {{参考案例的版本号}}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"节点基础字段规则","type":"text"}]},{"type":"paragraph","content":[{"text":"每个节点生成时必须包含:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"- data:\n positionAbsolute: false # ✅ 必须\n selected: false # ✅ 必须\n title: \"节点名称\"\n type: \"节点类型\"\n # ... 其他字段\n height: 52\n id: '节点ID'\n position:\n x: 0\n y: 0\n width: 242","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Edges 字段规则","type":"text"}]},{"type":"paragraph","content":[{"text":"每条边生成时必须包含:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"- data:\n isInIteration: false # ✅ 必须\n selected: false # ✅ 必须\n sourceType: \"源节点类型\"\n targetType: \"目标节点类型\"\n id: \"边ID\"\n source: \"源节点ID\"\n sourceHandle: \"source\"\n target: \"目标节点ID\"\n targetHandle: \"target\"\n type: \"custom|true|false|isInIteration\"","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"variable-aggregator 节点生成规则","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"# ✅ 正确写法 - 用于聚合多分支输出\n- data:\n output_type: string # 聚合结果的输出类型\n type: variable-aggregator\n variables: # 聚合多分支的变量(二维数组)\n - - '分支节点ID1' # 第一个分支的输出\n - text\n - - '分支节点ID2' # 第二个分支的输出\n - text\n height: 211\n id: '聚合节点ID'\n\n# ❌ 错误理解 - 不是简单的\"将多个内容整合到一起\"\n# variable-aggregator 的真正用途:\n# - 整合 IF/ELSE 条件分支的输出\n# - 整合并行结构的多个输出\n# - 确保无论哪个分支执行,下游都能通过统一变量引用","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"end 节点生成规则","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"# ✅ 正确写法 - Workflow 应用的结束节点\n- data:\n outputs:\n - value_selector:\n - '上游节点ID'\n - text\n variable: output\n type: end # ✅ 使用 type: end(仅用于 Workflow)\n height: 103\n id: end","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"answer 节点使用场景","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"# ✅ 正确写法 - 仅用于 Chatflow 应用\n- data:\n answer: '{{#llm.text#}}' # 使用 answer 字段\n type: answer # ✅ 使用 type: answer(仅用于 Chatflow)","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"DSL 生成检查清单(生成后必查)","type":"text"}]},{"type":"paragraph","content":[{"text":"生成 DSL 后,逐项检查:","type":"text"}]},{"type":"paragraph","content":[{"text":"应用类型检查:","type":"text","marks":[{"type":"strong"}]}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Workflow 类型使用 ","type":"text"},{"text":"type: end","type":"text","marks":[{"type":"code_inline"}]},{"text":",Chatflow 类型使用 ","type":"text"},{"text":"type: answer","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Workflow 只能有唯一 End 节点","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Chatflow 支持多个 Answer 节点","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"节点检查:","type":"text","marks":[{"type":"strong"}]}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"版本号与参考案例一致","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"每个节点有 ","type":"text"},{"text":"data.positionAbsolute: false","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"每个节点有 ","type":"text"},{"text":"data.selected: false","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"每个节点有 ","type":"text"},{"text":"height","type":"text","marks":[{"type":"code_inline"}]},{"text":" 和 ","type":"text"},{"text":"width","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"paragraph","content":[{"text":"边检查:","type":"text","marks":[{"type":"strong"}]}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"每条边有 ","type":"text"},{"text":"data.sourceType","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"每条边有 ","type":"text"},{"text":"data.targetType","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"每条边有 ","type":"text"},{"text":"data.selected: false","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"每条边有 ","type":"text"},{"text":"data.isInIteration","type":"text","marks":[{"type":"code_inline"}]},{"text":"(迭代外为 false)","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"variable-aggregator 检查:","type":"text","marks":[{"type":"strong"}]}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"使用 ","type":"text"},{"text":"output_type","type":"text","marks":[{"type":"code_inline"}]},{"text":"(不是 ","type":"text"},{"text":"outputs","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"使用 ","type":"text"},{"text":"variables","type":"text","marks":[{"type":"code_inline"}]},{"text":" 数组格式(不是 ","type":"text"},{"text":"formatter_template","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"理解用途:聚合多分支输出,不是简单整合内容","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"assigner vs variable-aggregator 检查:","type":"text","marks":[{"type":"strong"}]}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"需要写入会话变量 → 使用 ","type":"text"},{"text":"assigner","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"需要聚合多分支输出 → 使用 ","type":"text"},{"text":"variable-aggregator","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"最后更新: 2026-01-03","type":"text","marks":[{"type":"em"}]},{"text":" ","type":"text"},{"text":"参考案例数: 125+","type":"text","marks":[{"type":"em"}]}]}]},"metadata":{"date":"2026-06-05","name":"dify_creator","author":"@skillopedia","source":{"stars":15,"repo_name":"skills-create_skills","origin_url":"https://github.com/muranustb/skills-create_skills/blob/HEAD/skills/dify_creator/SKILL.md","repo_owner":"muranustb","body_sha256":"65ee14a59939e6457e4ceb45cd6425323c4ac1424ec07285fb9de166b31f8a21","cluster_key":"be4df842d2cefaa7f95cebf8d6e79427856310f58fd02ee891b18553b7d7409f","clean_bundle":{"format":"clean-skill-bundle-v1","source":"muranustb/skills-create_skills/skills/dify_creator/SKILL.md","attachments":[{"id":"40ea9491-a01b-5ee3-a24a-235f74fe20fa","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/40ea9491-a01b-5ee3-a24a-235f74fe20fa/attachment.md","path":"README.md","size":5672,"sha256":"d593d8b3f978da4cb11ce03dad1b7872835f8bfab6060d990fcd1cc2162d9c18","contentType":"text/markdown; charset=utf-8"},{"id":"baa40a45-be83-5003-bc10-113798aaa441","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/baa40a45-be83-5003-bc10-113798aaa441/attachment.yml","path":"organized_dsl/01_内容生成与创作/中等_多节点协作/大学生计算机专业简历美化工作流.yml","size":14095,"sha256":"e9d2c7a3259541eeb953f32d1ccc869cfd1994ae987046df80d3a4b1b741af58","contentType":"application/yaml; charset=utf-8"},{"id":"4095078e-b15f-5b56-ae90-9bf022d85233","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/4095078e-b15f-5b56-ae90-9bf022d85233/attachment.yml","path":"organized_dsl/01_内容生成与创作/中等_多节点协作/标题党创作.yml","size":17866,"sha256":"b439a8309b7ee2ed3a157d504866169e7e9e64485e3480190ce8def04ce15786","contentType":"application/yaml; charset=utf-8"},{"id":"86e5d58d-285e-5efb-83fc-404e17719142","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/86e5d58d-285e-5efb-83fc-404e17719142/attachment.yml","path":"organized_dsl/01_内容生成与创作/中等_多节点协作/瞎说新语v2.yml","size":13864,"sha256":"eea01720a58269d5ef444622d520afaee5ec6b043200fdd6d4f69dd2559b3cce","contentType":"application/yaml; charset=utf-8"},{"id":"7943aa01-b0cb-5fc3-8178-4e57d4a3864a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/7943aa01-b0cb-5fc3-8178-4e57d4a3864a/attachment.yml","path":"organized_dsl/01_内容生成与创作/提示词工程/LanguageConsistencyChecker.yml","size":23022,"sha256":"928e371dd0dc578a9635ea38fedda80bb612c5891e091ed238d18c45f44062cf","contentType":"application/yaml; charset=utf-8"},{"id":"48a9bc92-4486-54ab-9e8e-45192dbb66aa","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/48a9bc92-4486-54ab-9e8e-45192dbb66aa/attachment.yml","path":"organized_dsl/01_内容生成与创作/提示词工程/提示词生成器chatflow.yml","size":32781,"sha256":"6d0dbe3a37223657856234b14468ac1074bfc531c721edc20b9a85734190edfb","contentType":"application/yaml; charset=utf-8"},{"id":"97380209-c1e4-5ae8-90ec-3c70588b1efb","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/97380209-c1e4-5ae8-90ec-3c70588b1efb/attachment.yml","path":"organized_dsl/01_内容生成与创作/简单_单LLM/SEO Slug Generator.yml","size":4131,"sha256":"8e1b5d2c6d744ac57ac1dd2ec42480cff34c5365e2d7ee93c04193f7cae5ff3b","contentType":"application/yaml; charset=utf-8"},{"id":"0a0efd0c-e732-5853-8ca9-98eb8d8cbe2b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0a0efd0c-e732-5853-8ca9-98eb8d8cbe2b/attachment.yml","path":"organized_dsl/01_内容生成与创作/简单_单LLM/llm2o1.cn.yml","size":12647,"sha256":"b70c89261a37ce37ddf5ae27869cc29ed33b0b53ac1a34dd7ceecd5cc3cf8674","contentType":"application/yaml; charset=utf-8"},{"id":"db41bac2-6a1d-52f7-8302-64612e04d184","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/db41bac2-6a1d-52f7-8302-64612e04d184/attachment.yml","path":"organized_dsl/01_内容生成与创作/简单_单LLM/思考助手.yml","size":4264,"sha256":"4a466a697b487b0c98df4967b44d19a34c2e18e70d6a7b3025c4ba521c812532","contentType":"application/yaml; charset=utf-8"},{"id":"cba5be4e-addc-5b9e-9992-8f3a7f143df1","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/cba5be4e-addc-5b9e-9992-8f3a7f143df1/attachment.yml","path":"organized_dsl/01_内容生成与创作/简单_单LLM/日报生成器-workflow.yml","size":4504,"sha256":"01148b3b5052fa4a13e5437cf92f361f1e2c7c5b5a66e5602e2e56da696ddcfe","contentType":"application/yaml; charset=utf-8"},{"id":"59bdf875-ab8b-51fc-8126-29e4f1786b34","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/59bdf875-ab8b-51fc-8126-29e4f1786b34/attachment.yml","path":"organized_dsl/01_内容生成与创作/简单_单LLM/根据用户的意图进行回复.yml","size":20844,"sha256":"78280f6d0f6455c82e43f3ff80839f2b91aa01e287289eb7a6b6d92942c26289","contentType":"application/yaml; charset=utf-8"},{"id":"822fd8f9-25bb-514e-8927-e41ab0f132c3","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/822fd8f9-25bb-514e-8927-e41ab0f132c3/attachment.yml","path":"organized_dsl/01_内容生成与创作/翻译/72-dify案例分享-揭秘!如何用 Dify 实现多语言 PDF 文档原格式翻译.yml","size":4613,"sha256":"c10310764bfca96c8cddaa5af0b7a506e6d33a266ecba29a5227831f4334669e","contentType":"application/yaml; charset=utf-8"},{"id":"36abc936-930c-5739-8059-06ab203b0e81","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/36abc936-930c-5739-8059-06ab203b0e81/attachment.yml","path":"organized_dsl/01_内容生成与创作/翻译/Claude3 Code Translation.yml","size":36321,"sha256":"703969963b556ffe196760a1dc295a2d769021a5bb5dc0e8e97a14fbb3f4542f","contentType":"application/yaml; charset=utf-8"},{"id":"26547682-2056-59f7-ab5d-70ea3df0ae98","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/26547682-2056-59f7-ab5d-70ea3df0ae98/attachment.yml","path":"organized_dsl/01_内容生成与创作/翻译/DuckDuckGo翻译+LLM二次翻译.yml","size":7449,"sha256":"faf66974568eb1053a05b800e1e1f97a1dccc1349ab87f1f7c73d850d274050d","contentType":"application/yaml; charset=utf-8"},{"id":"691e9aca-cb8b-5235-9e8d-1c667aa5897c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/691e9aca-cb8b-5235-9e8d-1c667aa5897c/attachment.yml","path":"organized_dsl/01_内容生成与创作/翻译/translation_workflow.yml","size":14721,"sha256":"e27dc5f6139d321c707f6dbcf6e577313281714815a4446f973a1fcdb95805a9","contentType":"application/yaml; charset=utf-8"},{"id":"e87a8e31-cd5f-5fe4-beba-e1307a2e69ef","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e87a8e31-cd5f-5fe4-beba-e1307a2e69ef/attachment.yml","path":"organized_dsl/01_内容生成与创作/翻译/中英文翻译工作流-AI辅助生成.yml","size":3401,"sha256":"5a200f8bd06896710208c9d6c78954ee8219fdfa6c1c3912f1ac29b285d3ed19","contentType":"application/yaml; charset=utf-8"},{"id":"9bee59ca-1221-5d75-8872-9d7e3d3007ab","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9bee59ca-1221-5d75-8872-9d7e3d3007ab/attachment.yml","path":"organized_dsl/01_内容生成与创作/翻译/中译英.yml","size":6506,"sha256":"7e3678324ec3bbcdddd8cd91ff795f19c00078673441a13c956d2d5dafde9c75","contentType":"application/yaml; charset=utf-8"},{"id":"9ef3a6ce-66e8-5f92-a8c6-f1396796aac3","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9ef3a6ce-66e8-5f92-a8c6-f1396796aac3/attachment.yml","path":"organized_dsl/01_内容生成与创作/翻译/全书翻译.yml","size":19213,"sha256":"ff74c9e716d132abafe42fdb77e3e52110ec44bc6b91f0000ddf48c326c117a9","contentType":"application/yaml; charset=utf-8"},{"id":"fd21f0d1-fe86-5f14-928a-452705f9f61e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/fd21f0d1-fe86-5f14-928a-452705f9f61e/attachment.yml","path":"organized_dsl/01_内容生成与创作/翻译/宝玉的英译中优化版.yml","size":7198,"sha256":"eb3aa466fdea9a54fdf118d1934063c2d7d268085d7143029b7053c43bc88b91","contentType":"application/yaml; charset=utf-8"},{"id":"172ac0a6-f1f5-5f4c-9571-213563385c86","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/172ac0a6-f1f5-5f4c-9571-213563385c86/attachment.yml","path":"organized_dsl/02_图像生成与设计/图生图风格迁移/人物头像风格迁移工作流.yml","size":6935,"sha256":"ca90f36be0e5ecdbff778cbb1884ac38d154b323a50657595340527c3c932371","contentType":"application/yaml; charset=utf-8"},{"id":"8399e9c1-e2fd-54c8-8c4e-5075d5f4f9af","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/8399e9c1-e2fd-54c8-8c4e-5075d5f4f9af/attachment.yml","path":"organized_dsl/02_图像生成与设计/图生图风格迁移/多模态图像编辑(HiDream-E1-Full)chatflow.yml","size":21076,"sha256":"ddc51d7082f77495c57ee8bc5f134fbb620ee75c7840e7180be5e156683376fc","contentType":"application/yaml; charset=utf-8"},{"id":"e6d902ab-207c-5ec3-914f-faf80e3e15a8","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e6d902ab-207c-5ec3-914f-faf80e3e15a8/attachment.yml","path":"organized_dsl/02_图像生成与设计/封面海报生成/54-dify案例分享-海报封面生成工作流-Wanx 文生图.yml","size":14476,"sha256":"3a8bc2fde804ad370e6de3a2d4ae7ca4865d46becd42aa9d1a12f4cf63195191","contentType":"application/yaml; charset=utf-8"},{"id":"e6f77f6c-cef8-56c5-ac56-4ae81b52bc8d","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e6f77f6c-cef8-56c5-ac56-4ae81b52bc8d/attachment.yml","path":"organized_dsl/02_图像生成与设计/封面海报生成/文章仿写-单图_多图自动搭配.yml","size":36615,"sha256":"ec24aa3fec6e82d106ccc6a15705e24d2f6cec0a7bd147dec0b3841aab238c55","contentType":"application/yaml; charset=utf-8"},{"id":"45bdb88c-6aa6-5c40-8917-6afa1f1bcbc6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/45bdb88c-6aa6-5c40-8917-6afa1f1bcbc6/attachment.yml","path":"organized_dsl/02_图像生成与设计/封面海报生成/诗句封面+语音播报.yml","size":15400,"sha256":"8027d8af74fc73e7212b0ed7cb17aa582fa35570db54c900a97690ac8e80c04b","contentType":"application/yaml; charset=utf-8"},{"id":"9842531d-e976-5ebd-8727-0eb7ad13f6fb","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9842531d-e976-5ebd-8727-0eb7ad13f6fb/attachment.yml","path":"organized_dsl/02_图像生成与设计/文生图/80-dify案例分享-手把手教你用Dify调用Google最新AI画图神器.yml","size":42323,"sha256":"dbf4af27976e9f5bf96df6ef387870ce77084b61bb3c3344a372050cc415c837","contentType":"application/yaml; charset=utf-8"},{"id":"37d48990-8e94-5de7-bc20-a5d2529e2f03","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/37d48990-8e94-5de7-bc20-a5d2529e2f03/attachment.yml","path":"organized_dsl/02_图像生成与设计/文生图/88-dify案例分享-国内首发!手把手教你用Dify调用Nano Banana2AI画图.yml","size":13419,"sha256":"224141396faf8dd3953b02c4447ff87d130a815d6abd749bcba6fa654b51415c","contentType":"application/yaml; charset=utf-8"},{"id":"69196f40-da54-54e3-b7ef-8525b7e7611a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/69196f40-da54-54e3-b7ef-8525b7e7611a/attachment.yml","path":"organized_dsl/02_图像生成与设计/文生图/FLUX绘画机器人.yml","size":13596,"sha256":"a9291cb399ef33f601dd5d1e52227ed33acf4c5d05fd4e8d163ef254744adc3d","contentType":"application/yaml; charset=utf-8"},{"id":"bf2bda0a-5e43-5994-a85c-fb85f3b8f09c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/bf2bda0a-5e43-5994-a85c-fb85f3b8f09c/attachment.yml","path":"organized_dsl/02_图像生成与设计/文生图/gemini-2.0-flash-exp-image-generation-文生图智能体.yml","size":23766,"sha256":"c99032d91a88ff565ad8f27048a17e6612b614aacc9bd372aba6619349cb32af","contentType":"application/yaml; charset=utf-8"},{"id":"aaa0cf42-1583-56f5-83cf-8f3975744882","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/aaa0cf42-1583-56f5-83cf-8f3975744882/attachment.yml","path":"organized_dsl/02_图像生成与设计/文生图/即梦AI绘画-飞书表格+企业微信.yml","size":13534,"sha256":"f253515823bbba3b4bb80f4541495fb662b95eff23e52c45348c2792288a0ac4","contentType":"application/yaml; charset=utf-8"},{"id":"6fc9ee46-82b8-591e-a938-e82e547bd1af","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6fc9ee46-82b8-591e-a938-e82e547bd1af/attachment.yml","path":"organized_dsl/02_图像生成与设计/文生图/即梦AI绘画.yml","size":8237,"sha256":"678e9ff5dba51e03f898cbeb989c33ba66c3234bc7e272284a12dad8f45234cc","contentType":"application/yaml; charset=utf-8"},{"id":"ab040f38-df5e-51ce-be14-f26d81c5b348","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ab040f38-df5e-51ce-be14-f26d81c5b348/attachment.yml","path":"organized_dsl/03_视频生成/图像转视频/86-dify案例分享-Qwen3-VL+Dify:从作业 OCR 到视频字幕,多模态识别工作流一步教,附体验链接.yml","size":11174,"sha256":"701477048dc3144bd52ef8f7f7e9847563d5ebc7b4aca58428584becf40038d2","contentType":"application/yaml; charset=utf-8"},{"id":"14f4ef7e-d00a-57fd-9809-1d3a6e36daa2","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/14f4ef7e-d00a-57fd-9809-1d3a6e36daa2/attachment.yml","path":"organized_dsl/03_视频生成/文生视频/60-dify案例分享-豆包文本生成图像、文本生成视频以及图像转视频.yml","size":33779,"sha256":"4f9d70f71f9410405d71fb5710004ef2e8ae4a5cf641e493107bf53eb5339509","contentType":"application/yaml; charset=utf-8"},{"id":"6213e3ae-4a8a-5fc8-a413-523814540954","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6213e3ae-4a8a-5fc8-a413-523814540954/attachment.yml","path":"organized_dsl/03_视频生成/文生视频/64-dify案例分享-豆包文本生成图、文生视频+小支付功能 .yml","size":65833,"sha256":"260a0596f28e178f747322b6fb0cc8cfe40546f363baed65e94194a5d468501d","contentType":"application/yaml; charset=utf-8"},{"id":"f7085d38-14ce-513f-ad9a-792d8db4d1c9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f7085d38-14ce-513f-ad9a-792d8db4d1c9/attachment.yml","path":"organized_dsl/03_视频生成/文生视频/81-dify案例分享-零代码用 Dify 使用梦 AI 3.0 多模态模型,免费生成影视级视频.yml","size":22823,"sha256":"89539e07d9f62e3da61f8f4bc1e5b5c9f2ddb5556680192ab48631cc887135b4","contentType":"application/yaml; charset=utf-8"},{"id":"65883146-c818-52e1-b063-65a27d1af95c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/65883146-c818-52e1-b063-65a27d1af95c/attachment.yml","path":"organized_dsl/03_视频生成/文生视频/83-dify案例分享-免费玩转即梦 4.0 多图生成!Dify 工作流从搭建到使用全攻略,附案例效果.yml","size":16442,"sha256":"054ad34eae3c63b9269ff3830c489d598953a65134e86f8555a51047207b334a","contentType":"application/yaml; charset=utf-8"},{"id":"369aad16-494d-5b6a-b1ff-a5c4bcc72d3b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/369aad16-494d-5b6a-b1ff-a5c4bcc72d3b/attachment.yml","path":"organized_dsl/03_视频生成/文生视频/免费即梦文生视频.yml","size":9006,"sha256":"e379b2ac162bf0cabc994a971def221b9c32e1efe7b035c22721fcc9ce073407","contentType":"application/yaml; charset=utf-8"},{"id":"20749ea9-f6b9-5a29-8f73-6262923bf544","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/20749ea9-f6b9-5a29-8f73-6262923bf544/attachment.yml","path":"organized_dsl/03_视频生成/文生视频/文生视频+tts语音播报.yml","size":13293,"sha256":"44aa497323a708e42654bfde45788e68016e45f1e037f69f4d246e8db658aa28","contentType":"application/yaml; charset=utf-8"},{"id":"83722373-cba9-55eb-b59a-27e304c14a91","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/83722373-cba9-55eb-b59a-27e304c14a91/attachment.yml","path":"organized_dsl/04_数据分析与可视化/echarts可视化/excel表格提取+echarts展示.yml","size":10404,"sha256":"27897c4cb8aa30133f6335ab76e456263cea5ff2b53a4555f54d04ee6f9c14ec","contentType":"application/yaml; charset=utf-8"},{"id":"c4c607f5-39cd-54f9-be76-d36c6f44766c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/c4c607f5-39cd-54f9-be76-d36c6f44766c/attachment.yml","path":"organized_dsl/04_数据分析与可视化/图表生成/56-dify案例分享-0 代码实现企业画像!16 种图表,解锁数据查询新姿势.yml","size":27703,"sha256":"d124f0af4e17bd386bfac506885bbf699dd5443fd546ff3fe9335e69a1e010d7","contentType":"application/yaml; charset=utf-8"},{"id":"f02c19df-3736-5458-9fd9-05f93b42b5b7","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f02c19df-3736-5458-9fd9-05f93b42b5b7/attachment.yml","path":"organized_dsl/04_数据分析与可视化/图表生成/chart_demo.yml","size":7634,"sha256":"43e9b884b3dfbcdd68be974aa0929584ef46c5d3ede56db16ce28c16f8fb219d","contentType":"application/yaml; charset=utf-8"},{"id":"d71f1d94-d707-5c67-85c0-02d5021928eb","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d71f1d94-d707-5c67-85c0-02d5021928eb/attachment.yml","path":"organized_dsl/04_数据分析与可视化/图表生成/matplotlib.yml","size":4633,"sha256":"d570c2e9f29c29a8e11183c2ebf128aa97c4abc532a9a507881aecf29221be75","contentType":"application/yaml; charset=utf-8"},{"id":"559d8743-bed5-5e5d-b697-841bf6234181","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/559d8743-bed5-5e5d-b697-841bf6234181/attachment.yml","path":"organized_dsl/04_数据分析与可视化/图表生成/大模型表格解析自动生成代码生成统计图.yml","size":14464,"sha256":"a7b2f9e78498136c75b253df41a84abdaa52ba5048a0d8510a6662c8958025eb","contentType":"application/yaml; charset=utf-8"},{"id":"d39520b8-3e44-5c9a-85b2-2f39c0a558ac","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d39520b8-3e44-5c9a-85b2-2f39c0a558ac/attachment.yml","path":"organized_dsl/04_数据分析与可视化/数据报表/基于上市公司财报分析结果html分析报告(整合MinerU+edgeone-pages-mcp).yml","size":25936,"sha256":"1ec2e73b7b7256265b8f38d0f482cb11f3ecead633d67f5e9271f2b07ee01bbc","contentType":"application/yaml; charset=utf-8"},{"id":"315b0929-9b77-5892-862d-04a4d30e7391","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/315b0929-9b77-5892-862d-04a4d30e7391/attachment.yml","path":"organized_dsl/04_数据分析与可视化/数据报表/股票分析系统-Gordon修改版.yml","size":32484,"sha256":"5955309e567f11f9dbdc453c86a9e2e5fe346e9b95a327b4ef35e6a2131e057f","contentType":"application/yaml; charset=utf-8"},{"id":"eba948e5-8e77-50a0-9039-c16b66426404","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/eba948e5-8e77-50a0-9039-c16b66426404/attachment.yml","path":"organized_dsl/04_数据分析与可视化/数据报表/股票分析系统.yml","size":22850,"sha256":"a6686d8d1828a1424a3a7d57f7f6b5a6a80c388359b1066d6ecbfd47f39d5e86","contentType":"application/yaml; charset=utf-8"},{"id":"c5727bf2-123d-55e8-bcf1-36ab0273ecbb","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/c5727bf2-123d-55e8-bcf1-36ab0273ecbb/attachment.yml","path":"organized_dsl/05_文档处理与OCR/PDF解析/66-dify案例分享-效率飙升!借助大模型,Dify 轻松实现 PPT 到 SVG 海报的华丽变身-MinerU版.yml","size":22019,"sha256":"8af2b2170a82b2eb8cf7e2cfe62482810a75fd917fc6760663662358657a2897","contentType":"application/yaml; charset=utf-8"},{"id":"e4c27a69-0e3f-5ad1-8c5a-884af26d4a35","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e4c27a69-0e3f-5ad1-8c5a-884af26d4a35/attachment.yml","path":"organized_dsl/05_文档处理与OCR/PDF解析/66-dify案例分享-效率飙升!借助大模型,Dify 轻松实现 PPT 到 SVG 海报的华丽变身_合合版.yml","size":15432,"sha256":"e115ddb6f975bd335de08a29119a7215727ff825d0eb23d0f5eb0270def4af6e","contentType":"application/yaml; charset=utf-8"},{"id":"028b2faf-dbe5-5dd0-a081-bad9e152e44b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/028b2faf-dbe5-5dd0-a081-bad9e152e44b/attachment.yml","path":"organized_dsl/05_文档处理与OCR/PDF解析/67-dify案例分享-用 Dify 一键生成 长安的荔枝金句 HTML 页面,三步搞定!.yml","size":24021,"sha256":"bb9c5d14f89ec8f502505d187051ff3c0cf4696f44b49ba5156a2ac2b301d144","contentType":"application/yaml; charset=utf-8"},{"id":"ee447d6a-2ccc-54fa-9ec5-8e01d23f8b2e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ee447d6a-2ccc-54fa-9ec5-8e01d23f8b2e/attachment.yml","path":"organized_dsl/05_文档处理与OCR/多模态OCR/69-dify案例分享-数学公式识别工作流.yml","size":30664,"sha256":"efc8006f632697b7b067f30439e02481723c3998ed7773b917f6d41157a59618","contentType":"application/yaml; charset=utf-8"},{"id":"2cbaec9a-5d77-54ad-8f5d-dd85d3d3427a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/2cbaec9a-5d77-54ad-8f5d-dd85d3d3427a/attachment.yml","path":"organized_dsl/05_文档处理与OCR/多模态OCR/86-dify案例分享-Qwen3-VL+Dify:从作业 OCR 到视频字幕,多模态识别工作流一步教,附体验链接.yml","size":11174,"sha256":"701477048dc3144bd52ef8f7f7e9847563d5ebc7b4aca58428584becf40038d2","contentType":"application/yaml; charset=utf-8"},{"id":"2b60ead5-907e-56bd-bb5c-0253f19b9f12","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/2b60ead5-907e-56bd-bb5c-0253f19b9f12/attachment.yml","path":"organized_dsl/05_文档处理与OCR/票据识别/61-dify案例分享-批量识别PDF图片电子发票信息生成excle表格2.yml","size":29282,"sha256":"29c8c0ad9ac129108fd12ad4680a1406685793f35a51fffe5c81446dbc8fb406","contentType":"application/yaml; charset=utf-8"},{"id":"dd3293d7-377e-568f-9169-e335c1bb5229","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/dd3293d7-377e-568f-9169-e335c1bb5229/attachment.yml","path":"organized_dsl/05_文档处理与OCR/票据识别/61-dify案例分享-批量识别PDF电子发票信息生成excle表格.yml","size":23244,"sha256":"a8093a7d783fec53989cf8c121793279ab028886d4dd1931e9806985d9639d29","contentType":"application/yaml; charset=utf-8"},{"id":"79436d93-649d-54ae-94f9-d1a454f10d20","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/79436d93-649d-54ae-94f9-d1a454f10d20/attachment.yml","path":"organized_dsl/05_文档处理与OCR/票据识别/73-dify案例分享-告别手工录入!Dify 工作流一键生成发票申请预览,对接开票系统超简单.yml","size":29475,"sha256":"242bfc0f336aa6f4a00300431790739f9dff05e9da1c79b848ee19d8ad96f170","contentType":"application/yaml; charset=utf-8"},{"id":"1e500d65-d2b9-5c37-b3eb-df1e76950f34","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/1e500d65-d2b9-5c37-b3eb-df1e76950f34/attachment.yml","path":"organized_dsl/05_文档处理与OCR/票据识别/76-dify案例分享-100% 识别率!发票、汇票、信用证全搞定的通用票据识别工作流.yml","size":57743,"sha256":"b86ca16a13a1e4b6980453c3be237054fc4368b7c88efb7089bcb58ac433ead3","contentType":"application/yaml; charset=utf-8"},{"id":"53923b79-a7af-575f-b016-2ad5029cfafd","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/53923b79-a7af-575f-b016-2ad5029cfafd/attachment.yml","path":"organized_dsl/05_文档处理与OCR/票据识别/发票提取小工具整合版-变量聚合器.yml","size":28177,"sha256":"8637519e80a9e2b33fddb9ee1743e322e799f281580d64b3833d197a6159babb","contentType":"application/yaml; charset=utf-8"},{"id":"68bb56ff-a52c-54ce-8d46-ca467023f431","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/68bb56ff-a52c-54ce-8d46-ca467023f431/attachment.yml","path":"organized_dsl/05_文档处理与OCR/票据识别/发票比对专家-新版客运火车票2.yml","size":11540,"sha256":"1226497024d57d469e9c3d85a87fde474dae5433e231eb1da58e97a010d5a69a","contentType":"application/yaml; charset=utf-8"},{"id":"ed0f3860-7706-5b1d-8fa7-94b366b508be","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ed0f3860-7706-5b1d-8fa7-94b366b508be/attachment.yml","path":"organized_dsl/05_文档处理与OCR/票据识别/增值税发票提取小工具chatflow.yml","size":5519,"sha256":"c8479f71ebc5a67a9a1221e1aef52047def922a5bce993627afe22d0c4061cd8","contentType":"application/yaml; charset=utf-8"},{"id":"2bd1e585-c5e8-5ec9-893d-f328bfdafba8","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/2bd1e585-c5e8-5ec9-893d-f328bfdafba8/attachment.yml","path":"organized_dsl/06_知识库与RAG/图文知识库/图文知识库.yml","size":5284,"sha256":"3a66edfc4c724c0298ffece78e470509402870e9081f88422186ccf91ec8c4c6","contentType":"application/yaml; charset=utf-8"},{"id":"cd2aade2-a279-58d3-9317-59243e324353","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/cd2aade2-a279-58d3-9317-59243e324353/attachment.yml","path":"organized_dsl/06_知识库与RAG/文档问答/Document_chat_template.yml","size":30385,"sha256":"0e4d52c4ee445095f7cd3e64ef3a4fe9db459dad48ea9e64dd4505c81adcbf56","contentType":"application/yaml; charset=utf-8"},{"id":"69039ef8-fc47-5858-aaf6-28a4964e2242","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/69039ef8-fc47-5858-aaf6-28a4964e2242/attachment.yml","path":"organized_dsl/06_知识库与RAG/知识检索/知识库检索工作流.yml","size":5834,"sha256":"e4dcc92d55170fbaba687c5551fe62f28413170afd1c598bb20b0837c10e5af3","contentType":"application/yaml; charset=utf-8"},{"id":"39d34323-afac-5ec2-9ad4-f27feb0592b2","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/39d34323-afac-5ec2-9ad4-f27feb0592b2/attachment.yml","path":"organized_dsl/07_Agent与工具调用/Agent智能体/53-dify案例分享-12306mcp火车票信息查询-AIagent.yml","size":2555,"sha256":"5f7c789475aa3c21ef5a3f77a3a64b2b043b3864f695fc738c125eea95533694","contentType":"application/yaml; charset=utf-8"},{"id":"94e4bbce-9491-5a5f-a157-7c475555f010","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/94e4bbce-9491-5a5f-a157-7c475555f010/attachment.yml","path":"organized_dsl/07_Agent与工具调用/Agent智能体/AgentFlow.yml","size":4481,"sha256":"458082601d060d91293a7a3a4098c494a8bb0107bdc51370d222f36e81a1991e","contentType":"application/yaml; charset=utf-8"},{"id":"eb4fd347-2a3e-5efb-9fb9-74ced3da356e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/eb4fd347-2a3e-5efb-9fb9-74ced3da356e/attachment.yml","path":"organized_dsl/07_Agent与工具调用/Agent智能体/Demo-tod_agent.yml","size":7609,"sha256":"e6046f2ccc73918e21ec08b47d4099c2cbb0ba955cd567868ac8a18618eaff12","contentType":"application/yaml; charset=utf-8"},{"id":"61804afc-5bf3-51a9-b8ac-dd410533476c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/61804afc-5bf3-51a9-b8ac-dd410533476c/attachment.yml","path":"organized_dsl/07_Agent与工具调用/Agent智能体/ai agent智能体.yml","size":3430,"sha256":"6ff11991b8ad7ba4adf441d59a313dfc9eb463f3f45eafb8928370e85211cdb3","contentType":"application/yaml; charset=utf-8"},{"id":"01d8cea5-3f72-5f14-b0f3-ea757f30f1f8","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/01d8cea5-3f72-5f14-b0f3-ea757f30f1f8/attachment.yml","path":"organized_dsl/07_Agent与工具调用/Agent智能体/儿童故事绘本-PPT Agent.yml","size":8233,"sha256":"2cd38e08b22d1e8c12be4fcfac7245442fdbc230c4e5210b65edd8e01875d376","contentType":"application/yaml; charset=utf-8"},{"id":"f56121ef-0242-585b-bce1-fc4a21740cdb","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f56121ef-0242-585b-bce1-fc4a21740cdb/attachment.yml","path":"organized_dsl/07_Agent与工具调用/Agent智能体/搜索大师.yml","size":17093,"sha256":"aa75d8820f210f44442b76d4b4413b10989a42e39f23cea48fbcbdc9d545fa99","contentType":"application/yaml; charset=utf-8"},{"id":"670d6111-2ba7-52fb-89ba-cdd52b2e05a6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/670d6111-2ba7-52fb-89ba-cdd52b2e05a6/attachment.yml","path":"organized_dsl/07_Agent与工具调用/MCP集成/70-dify案例分享-七牛云mcp.yml","size":16451,"sha256":"acbe88afb5d9de04d6d25da7c747a941a4d85bc8ceece07b1ac7104083a08d45","contentType":"application/yaml; charset=utf-8"},{"id":"f8fcb68c-cea8-50f7-ac62-39f3ca38f8f8","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f8fcb68c-cea8-50f7-ac62-39f3ca38f8f8/attachment.yml","path":"organized_dsl/07_Agent与工具调用/MCP集成/77-dify案例分享-零代码搞定 DIFY 插件开发:小白也能上手的文生图插件实战.yml","size":6885,"sha256":"926558c80a4bfc9492afd28536528c430c855e9541a29250ec370a3579abdb9b","contentType":"application/yaml; charset=utf-8"},{"id":"bd12664a-759a-5525-a51a-1405bd0a25a9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/bd12664a-759a-5525-a51a-1405bd0a25a9/attachment.yml","path":"organized_dsl/07_Agent与工具调用/MCP集成/79-dify案例分享-5分钟搭建智能思维导图系统!Dify + MCP工具实战教程.yml","size":24469,"sha256":"aef2f4100d9cf75f76c2c96e73f3f03e4a3750974e900ab721b7b354bf5fb305","contentType":"application/yaml; charset=utf-8"},{"id":"2051a260-2f69-5f7e-a3dd-c5bd3639aa56","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/2051a260-2f69-5f7e-a3dd-c5bd3639aa56/attachment.yml","path":"organized_dsl/07_Agent与工具调用/MCP集成/84-dify案例分享-零代码搞定 DIFY 插件开发:小白也能上手的文生图+图生图插件实战.yml","size":20629,"sha256":"d93e84957289efd2d76c8ddc8b1e72090fc8191caeb588ada6a64b4a21c598f7","contentType":"application/yaml; charset=utf-8"},{"id":"d085f991-efdc-55e1-bfa5-42bb8140532a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d085f991-efdc-55e1-bfa5-42bb8140532a/attachment.yml","path":"organized_dsl/07_Agent与工具调用/MCP集成/MCP-amap.yml","size":10366,"sha256":"63520f293b9768f897b52caeee899e79eff43f10f6a73e0120c00f0c92862aa1","contentType":"application/yaml; charset=utf-8"},{"id":"5ef532e1-4bc1-5e82-a196-1c955e7cef8a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/5ef532e1-4bc1-5e82-a196-1c955e7cef8a/attachment.yml","path":"organized_dsl/07_Agent与工具调用/MCP集成/MCP.yml","size":10412,"sha256":"26ef4abd848dbc09d26ad4241d6f57d3cd8723f01be48146b09935a2d9bfcd99","contentType":"application/yaml; charset=utf-8"},{"id":"8764dabb-2d44-50b2-83aa-34b1a28af974","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/8764dabb-2d44-50b2-83aa-34b1a28af974/attachment.yml","path":"organized_dsl/07_Agent与工具调用/MCP集成/dify-mcp-sse+Zapier MCP新闻检索邮件发送.yml","size":2570,"sha256":"9f174f24c8afc9e27203dac143ac60d0f5e4a30ed8c56d472ce0bd3091acd02e","contentType":"application/yaml; charset=utf-8"},{"id":"e267ad36-4deb-5a82-b92c-cc9a36d665ea","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e267ad36-4deb-5a82-b92c-cc9a36d665ea/attachment.yml","path":"organized_dsl/07_Agent与工具调用/MCP集成/魔搭社区MCP-Server.yml","size":22497,"sha256":"5fe147237d862ddf8335bff98af00e79d0c7d81424971c83881a2b37589ba556","contentType":"application/yaml; charset=utf-8"},{"id":"b64390a1-0fa9-596b-8e98-7bb9c1b74502","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/b64390a1-0fa9-596b-8e98-7bb9c1b74502/attachment.yml","path":"organized_dsl/07_Agent与工具调用/外部API集成/File_read.yml","size":7594,"sha256":"70d9418316cfdae77e6ace9edbe2f325e998e966062f04ff9c1f5ef5d8f26361","contentType":"application/yaml; charset=utf-8"},{"id":"f8a5ac38-98d3-591a-b2c4-7d9500f443cb","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f8a5ac38-98d3-591a-b2c4-7d9500f443cb/attachment.yml","path":"organized_dsl/07_Agent与工具调用/外部API集成/Jina Reader Jinja.yml","size":10959,"sha256":"785912ce7b670c23eeb096c8169a2391200c243d531c5d7dd184244c55352394","contentType":"application/yaml; charset=utf-8"},{"id":"91a64b7a-1570-5c26-92d9-fc19052d2be6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/91a64b7a-1570-5c26-92d9-fc19052d2be6/attachment.yml","path":"organized_dsl/07_Agent与工具调用/外部API集成/飞书表格.yml","size":6507,"sha256":"d2382616f3eeceedde438b5edab1ae82fefda0da911f0088672cff8767639ebf","contentType":"application/yaml; charset=utf-8"},{"id":"e1ee18c3-ff79-58e9-9dff-68c70f6ffe88","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e1ee18c3-ff79-58e9-9dff-68c70f6ffe88/attachment.yml","path":"organized_dsl/08_教育与学习/学科学习/65-dify案例分享-中药科普知识工作流.yml","size":17005,"sha256":"a8da87ead8387773fe36834868c760b5d1e8fec1ad27c6bbe3e28faaa181a545","contentType":"application/yaml; charset=utf-8"},{"id":"bdb1c5fb-f484-59fd-af63-64d6bbd8a938","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/bdb1c5fb-f484-59fd-af63-64d6bbd8a938/attachment.yml","path":"organized_dsl/08_教育与学习/学科学习/68-dify案例分享-用 Dify 一键搭建中药科普工作流,文字 + 图片 + 视频全搞定.yml","size":45224,"sha256":"325c11925d829df8779821a5b01059178a60ff290cdd323dea129323bbfcd202","contentType":"application/yaml; charset=utf-8"},{"id":"4cf084a8-7267-573e-bad0-5e7778333ae9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/4cf084a8-7267-573e-bad0-5e7778333ae9/attachment.yml","path":"organized_dsl/08_教育与学习/学科学习/71-dify案例分享-用Kimi-K2+Mermaid 神器,一键生成系统架构图!小白也能秒会.yml","size":15704,"sha256":"a235eefa0900c03246f80cb6c1ca7012587a9c7f1ebeb02b855f3feaeb78169a","contentType":"application/yaml; charset=utf-8"},{"id":"4beb7da5-db48-5bb2-85aa-130d5ca64e04","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/4beb7da5-db48-5bb2-85aa-130d5ca64e04/attachment.yml","path":"organized_dsl/08_教育与学习/学科学习/75-dify案例分享-AI 助力初中化学学习:用 Qwen Code+Dify 一键生成交互式元素周期表网页.yml","size":12245,"sha256":"8bc62a4071c8f20c1d2170ee7eb8ac3c426efc29d9e75d97908654cf753ebfa3","contentType":"application/yaml; charset=utf-8"},{"id":"abda71ce-5207-539e-abbc-8821165f6bdc","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/abda71ce-5207-539e-abbc-8821165f6bdc/attachment.yml","path":"organized_dsl/08_教育与学习/测评评分/55-dify案例分享-英语单词口语练习.yml","size":9530,"sha256":"caa219b46d9c50eb7d488888ca2bbd4c0e6e8323b7f9ba28e4cd68ed0bc67644","contentType":"application/yaml; charset=utf-8"},{"id":"18d2e8d2-c166-5b5e-8f82-64fc7efb554f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/18d2e8d2-c166-5b5e-8f82-64fc7efb554f/attachment.yml","path":"organized_dsl/08_教育与学习/测评评分/59-dify案例分享-衡水体英语作文评分工作流.yml","size":23675,"sha256":"828b1743c5f64d657df0b5017353642f05b18d307b969673584b7f8f576f71a2","contentType":"application/yaml; charset=utf-8"},{"id":"775c448f-ec30-5bf1-b1e8-e9b263149fb9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/775c448f-ec30-5bf1-b1e8-e9b263149fb9/attachment.yml","path":"organized_dsl/08_教育与学习/错题本/57-dify案例分享-中小学数学错题本-错题收集篇.yml","size":32073,"sha256":"9e518bdcf9a6eb6e296474aafba5ed10f69f17252f7de5c77b6486fbf4fe00b3","contentType":"application/yaml; charset=utf-8"},{"id":"7b663112-08cf-5fa3-8939-6984625f834e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/7b663112-08cf-5fa3-8939-6984625f834e/attachment.yml","path":"organized_dsl/08_教育与学习/错题本/58-dify案例分享-中小学数学错题本-生成同类型题.yml","size":50842,"sha256":"83936a9d079db41ae3952317c04ec9e34199b9881ef549e2661eb32c8f4f9667","contentType":"application/yaml; charset=utf-8"},{"id":"30fcb5e2-0e6e-5294-a1a0-303ca9c5783e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/30fcb5e2-0e6e-5294-a1a0-303ca9c5783e/attachment.yml","path":"organized_dsl/09_商业与办公/text2sql数据库查询/基于知识库+agent实现text2sqlchatflow工作流.yml","size":15109,"sha256":"55959c2e662a2be2af8176b7587f77910e6b66694e93ba3ef3967ee5cd84537a","contentType":"application/yaml; charset=utf-8"},{"id":"40dcfdd7-bcdc-5d07-8b5e-bea7b3e4d46d","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/40dcfdd7-bcdc-5d07-8b5e-bea7b3e4d46d/attachment.yml","path":"organized_dsl/09_商业与办公/text2sql数据库查询/基于表结构的agent text2sql.yml","size":3917,"sha256":"192e197c1c749f56eb2b6c163ea2ea71da3f76a4a3e1c5fef8d0ce0c9f0d42f6","contentType":"application/yaml; charset=utf-8"},{"id":"3714be98-8158-5d16-a79c-2c7e8f6ebe8c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/3714be98-8158-5d16-a79c-2c7e8f6ebe8c/attachment.yml","path":"organized_dsl/09_商业与办公/text2sql数据库查询/学生成绩查询Chatflow支持text2sql.yml","size":50042,"sha256":"fd994c3e6b0f8d085d2892db97f5be9baa57d7ec97e8c8b681cc93eecc333eb1","contentType":"application/yaml; charset=utf-8"},{"id":"e83637d3-948c-5917-8433-9608838e1686","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e83637d3-948c-5917-8433-9608838e1686/attachment.yml","path":"organized_dsl/09_商业与办公/text2sql数据库查询/学生成绩查询工作流(带数据库查询).yml","size":23627,"sha256":"d5a98501c658e91a0c2785743fd833add1016693ccdda74243b1bb14913eae62","contentType":"application/yaml; charset=utf-8"},{"id":"bb94a5d6-ba36-5edb-b35f-f0ac40560fb8","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/bb94a5d6-ba36-5edb-b35f-f0ac40560fb8/attachment.yml","path":"organized_dsl/09_商业与办公/合同审查/小支付-DEMO.yml","size":16043,"sha256":"73c58aae42d6ab2ae8e68c7c005c934ab23239146bb03ab8465036f779d525f7","contentType":"application/yaml; charset=utf-8"},{"id":"dce5d5bc-e1a3-5fd7-ab41-80eeb51e966c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/dce5d5bc-e1a3-5fd7-ab41-80eeb51e966c/attachment.yml","path":"organized_dsl/09_商业与办公/合同审查/软件开发类合同审查chatflow.yml","size":13731,"sha256":"858b9c30895742b49c219bb8e72808bda6d6a0dcfcd5c47811418afc5ef0687c","contentType":"application/yaml; charset=utf-8"},{"id":"a9ce29c2-0300-5dd2-a3ab-242eec129993","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/a9ce29c2-0300-5dd2-a3ab-242eec129993/attachment.yml","path":"organized_dsl/09_商业与办公/合同审查/通用合同审查助手.yml","size":13375,"sha256":"36c6124fc97fa585e729021724900461d1971084b23845c0731d2dfdc4c180ad","contentType":"application/yaml; charset=utf-8"},{"id":"f9d88d38-f184-5f2c-a15d-12a53017ac6a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f9d88d38-f184-5f2c-a15d-12a53017ac6a/attachment.yml","path":"organized_dsl/10_多媒体处理/TTS语音合成/78-dify案例分享-零基础上手 Dify TTS 插件!从开发到部署免费文本转语音,测试 + 打包教程全有.yml","size":11567,"sha256":"32cfe3c7324c05d47e761e1d9a9206a2c7fd09c26b23f3932128b7d3f9ccb58e","contentType":"application/yaml; charset=utf-8"},{"id":"39e82a6a-989e-5e21-b2a0-c491a8691aa6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/39e82a6a-989e-5e21-b2a0-c491a8691aa6/attachment.yml","path":"organized_dsl/10_多媒体处理/TTS语音合成/中国历史专家播客-工作流.yml","size":7109,"sha256":"012a7a61e32474a10c61084d8ddd05537bdcdb6177deed32e8eb2ce5f030283f","contentType":"application/yaml; charset=utf-8"},{"id":"76e1e968-2352-5fd9-8476-52ff456ebe11","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/76e1e968-2352-5fd9-8476-52ff456ebe11/attachment.yml","path":"organized_dsl/10_多媒体处理/TTS语音合成/自定义edgetts工作流.yml","size":6010,"sha256":"3700c533a03cd17fc7e7778adb6b14fc1f644b11ef3cdd97bae9ea231fbf7fd6","contentType":"application/yaml; charset=utf-8"},{"id":"76a6f8a6-01ec-52b3-b286-c57b4c981c05","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/76a6f8a6-01ec-52b3-b286-c57b4c981c05/attachment.yml","path":"organized_dsl/10_多媒体处理/TTS语音合成/自带edgetts.yml","size":4849,"sha256":"797fab5773b7a0d2bce7bac80337854855ca45699c548272ef4cfb8912685828","contentType":"application/yaml; charset=utf-8"},{"id":"e1d86a13-eb49-542f-bef4-49d013506df3","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e1d86a13-eb49-542f-bef4-49d013506df3/attachment.yml","path":"organized_dsl/10_多媒体处理/音视频转文字/52-dify案例分享-三步实现音视频转文字会议纪要从此无忧.yml","size":17564,"sha256":"a6c97ce4c232181a241e11bb6f19e14d9a9496038c3af5cbb99d6d7cc3b6e5c3","contentType":"application/yaml; charset=utf-8"},{"id":"48c1f6e5-9330-5b25-8379-64efd6bc8915","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/48c1f6e5-9330-5b25-8379-64efd6bc8915/attachment.yml","path":"organized_dsl/10_多媒体处理/音视频转文字/腾讯云SubtitleInfo.yml","size":8145,"sha256":"73d489120f32269d57384302a06ad66dbc8e384230e115fc440af93d2a7b1617","contentType":"application/yaml; charset=utf-8"},{"id":"ed4cbca8-938f-534d-b04b-38a66475e5f2","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ed4cbca8-938f-534d-b04b-38a66475e5f2/attachment.yml","path":"organized_dsl/11_代码与开发/API文档生成/Fine-tune 语料构造器.yml","size":10464,"sha256":"b7cf95bb6e1f4ead6cfe5cde68cbe1c8c4e7689a5ad42d98d1169c56b01ae94d","contentType":"application/yaml; charset=utf-8"},{"id":"c891ed30-4b9b-53a4-bd9f-d8be74233a97","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/c891ed30-4b9b-53a4-bd9f-d8be74233a97/attachment.yml","path":"organized_dsl/11_代码与开发/代码生成/API文档生成代码.yml","size":12462,"sha256":"26a91b0291e02cf108b9be739181f654baf571adc6922485c81198b6e21b400c","contentType":"application/yaml; charset=utf-8"},{"id":"15ae74a9-bd77-55bb-8a31-5b83d9a15cb9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/15ae74a9-bd77-55bb-8a31-5b83d9a15cb9/attachment.yml","path":"organized_dsl/11_代码与开发/代码生成/Python Coding Prompt.yml","size":5588,"sha256":"9530693c4159b422b4be165d364a2ee358db47904b4a01109b502e83a3a00daa","contentType":"application/yaml; charset=utf-8"},{"id":"ad3e756e-d205-5723-b8c2-6a009fb32182","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ad3e756e-d205-5723-b8c2-6a009fb32182/attachment.yml","path":"organized_dsl/11_代码与开发/代码生成/runLLMCode.yml","size":13720,"sha256":"ec295443d0e70aa11267ff078664494a670cdc9e25858d6a8f08ec53daac5736","contentType":"application/yaml; charset=utf-8"},{"id":"3e4ba786-0e90-5055-a3a1-3c870a70dd18","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/3e4ba786-0e90-5055-a3a1-3c870a70dd18/attachment.yml","path":"organized_dsl/11_代码与开发/代码生成/大模型表格解析自动生成代码生成统计图.yml","size":14464,"sha256":"a7b2f9e78498136c75b253df41a84abdaa52ba5048a0d8510a6662c8958025eb","contentType":"application/yaml; charset=utf-8"},{"id":"0b2f7613-9189-5adf-9c61-807697c0da88","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0b2f7613-9189-5adf-9c61-807697c0da88/attachment.yml","path":"organized_dsl/12_创意与娱乐/故事绘本/儿童故事绘本-PPT chatflow.yml","size":14648,"sha256":"8ba5fc37cf29f83a6bb55c15b774af0c1787adca37ab78aabde9799418fadb68","contentType":"application/yaml; charset=utf-8"},{"id":"0c635114-57c1-5417-b43b-28c7eb9ed896","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0c635114-57c1-5417-b43b-28c7eb9ed896/attachment.yml","path":"organized_dsl/12_创意与娱乐/故事绘本/儿童故事绘本工作流.yml","size":14133,"sha256":"e90376adc67079892641d6b6d6774c824f1ca9195b486dd3d8a63700a397d853","contentType":"application/yaml; charset=utf-8"},{"id":"a3a2c789-d03a-5685-8576-dfe58f128625","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/a3a2c789-d03a-5685-8576-dfe58f128625/attachment.yml","path":"organized_dsl/12_创意与娱乐/故事绘本/儿童故事绘本文生视频语音合成版 .yml","size":10965,"sha256":"fd71538c783a6bbf0e6e510f5c460e4825eaa5f2496f0d287a7f8a87c1a6d036","contentType":"application/yaml; charset=utf-8"},{"id":"2ae2819b-4c04-5616-8b90-e90cad458ddf","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/2ae2819b-4c04-5616-8b90-e90cad458ddf/attachment.yml","path":"organized_dsl/12_创意与娱乐/游戏互动/Dify 运营一条龙.yml","size":104936,"sha256":"f91fd677348f3bef4e4aeb93cb8459a221b5b70b40a0a3fa19292e480d71d4dd","contentType":"application/yaml; charset=utf-8"},{"id":"3b7ea990-c6d8-5cab-95ea-a04436634fea","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/3b7ea990-c6d8-5cab-95ea-a04436634fea/attachment.yml","path":"organized_dsl/12_创意与娱乐/游戏互动/周易大师.yml","size":5538,"sha256":"cd22064876a553b6a3f6659e9ffdf78515b279c4fb8ed01650c0cd9c70d1d161","contentType":"application/yaml; charset=utf-8"},{"id":"af0971fd-e046-5dc3-91ba-455f677b9d25","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/af0971fd-e046-5dc3-91ba-455f677b9d25/attachment.yml","path":"organized_dsl/12_创意与娱乐/游戏互动/完蛋!我被LLM包围了! .yml","size":62322,"sha256":"7a8a4acf00be07060ba0807d8d8350eb57cbd23607175cb04f5e9a5b024af34d","contentType":"application/yaml; charset=utf-8"},{"id":"f844aebb-ac9a-5261-a263-419d4d78849c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f844aebb-ac9a-5261-a263-419d4d78849c/attachment.yml","path":"organized_dsl/12_创意与娱乐/游戏互动/完蛋!我被LLM包围了!(战绩排行版).yml","size":71494,"sha256":"1324439fc753ec0baf2df1a7f9e0237ad7cdb8ba99608e902fb93b51ab082ac7","contentType":"application/yaml; charset=utf-8"},{"id":"dba2c869-ebec-5a09-9b45-8f45ca6b8068","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/dba2c869-ebec-5a09-9b45-8f45ca6b8068/attachment.yml","path":"organized_dsl/12_创意与娱乐/节日主题/春联生成器.yml","size":8779,"sha256":"bc6b4933ca696040e5e683be1af7cd99dc8dc82548a79a6d5d2f34c61a793c28","contentType":"application/yaml; charset=utf-8"},{"id":"258a6381-6c5f-5375-8050-92273128309c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/258a6381-6c5f-5375-8050-92273128309c/attachment.yml","path":"organized_dsl/13_信息聚合/RSS新闻聚合/62-dify案例分享-Dify+RSS 聚合 8 大平台实时热点,新闻获取效率飙升 300%.yml","size":89612,"sha256":"51825da3cdc4dad1414ce1b74c092ba33f3e14f83cf4498c1b6e71ca1ac80e1a","contentType":"application/yaml; charset=utf-8"},{"id":"dc27dc17-c0f5-5755-a269-ef3565887bcb","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/dc27dc17-c0f5-5755-a269-ef3565887bcb/attachment.yml","path":"organized_dsl/13_信息聚合/RSS新闻聚合/63-dify案例分享-独家揭秘:N8N+Dify 打造新闻定时推送流.yml","size":96479,"sha256":"c5e205b60924cb70a23f29a0fc90d04865dfcc44af9667befebb7be26df2c1a7","contentType":"application/yaml; charset=utf-8"},{"id":"4b1c04c6-98fe-5ada-bed8-ce9350b50cec","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/4b1c04c6-98fe-5ada-bed8-ce9350b50cec/attachment.yml","path":"organized_dsl/13_信息聚合/RSS新闻聚合/AI资讯每日新闻+语音播报工作流.yml","size":12755,"sha256":"e498b4ef90139ba5a574859285847c5799608ef970290dc57ea01d939e99c677","contentType":"application/yaml; charset=utf-8"},{"id":"95341261-7b81-5f3d-8733-66c0068534fa","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/95341261-7b81-5f3d-8733-66c0068534fa/attachment.yml","path":"organized_dsl/13_信息聚合/搜索工具/74-dify案例分享-解锁 AI 搜索新玩法:Dify 秘塔搜索工作流搭建教程与效果展示.yml","size":53667,"sha256":"e1b3d0eace752c9a26efa5af3be42a10a8d7a3c2ede57d3594989aaa00029453","contentType":"application/yaml; charset=utf-8"},{"id":"54f7371d-61fb-52ad-9dec-443788fe7e41","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/54f7371d-61fb-52ad-9dec-443788fe7e41/attachment.yml","path":"organized_dsl/13_信息聚合/搜索工具/抓取获取36氪热榜文章内容 .yml","size":15171,"sha256":"bb818ce8d401eae34e5b54470bf487cacc44750ebaea53a6733136304b5d7410","contentType":"application/yaml; charset=utf-8"},{"id":"0d42f6e1-f7f5-5798-bc96-90c294023eaa","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0d42f6e1-f7f5-5798-bc96-90c294023eaa/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/53-dify案例分享-12306mcp火车票信息查询-chatflow.yml","size":8074,"sha256":"a5e230e069bed7abd819f5c15a776413296cda25a6b0bb892ea253c2219dab91","contentType":"application/yaml; charset=utf-8"},{"id":"651e8dec-a7c9-5d23-a022-fe5788b4ec86","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/651e8dec-a7c9-5d23-a022-fe5788b4ec86/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/87-dify案例分享-用 Dify 一键生成教学动画 HTML!AI 助力,3 分钟搞定专业级课件.yml","size":15308,"sha256":"9090c82b0aba1a9e7817144eccec08377111b84f42243c6b219bc5c5c129fdb9","contentType":"application/yaml; charset=utf-8"},{"id":"6f9f2879-51a1-5e85-8357-029fc408545b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6f9f2879-51a1-5e85-8357-029fc408545b/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/Agent工具调用.yml","size":17463,"sha256":"0d1bb9d9f4851eef891aa57ecb96d91a2389f808c2b2438600eeee3579c29225","contentType":"application/yaml; charset=utf-8"},{"id":"9dd501f5-7e6b-5458-bad8-77442967aa20","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9dd501f5-7e6b-5458-bad8-77442967aa20/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/Artifact.yml","size":3562,"sha256":"6933f1adb821131baf5acb5f3906e3ef641bf66c4cceff2f1964b09be1cf987a","contentType":"application/yaml; charset=utf-8"},{"id":"b46ba725-c236-5781-949f-336df6bf800b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/b46ba725-c236-5781-949f-336df6bf800b/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/Form表单聊天Demo.yml","size":11027,"sha256":"6bfa5504375378a9d8b2c587c0a4687933272512612791c0275ee137519d2430","contentType":"application/yaml; charset=utf-8"},{"id":"f919f5d0-06ff-5fd8-8af1-531e043ac9ef","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f919f5d0-06ff-5fd8-8af1-531e043ac9ef/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/Text to Card Iteration.yml","size":7022,"sha256":"776ec90c5b7b9bba7f33b6586bed815c3408b4c6457c0a98035bf9172e74a67f","contentType":"application/yaml; charset=utf-8"},{"id":"cdce3a8d-83c5-5fb4-a0ae-7198e3bd55ac","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/cdce3a8d-83c5-5fb4-a0ae-7198e3bd55ac/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/jieba.yml","size":3554,"sha256":"7267b3699555f5d16e5f9618f9b344793432357041769f169a62ecfcff17fd8f","contentType":"application/yaml; charset=utf-8"},{"id":"76563dec-cdcf-5030-9678-9ccf9c0b5da9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/76563dec-cdcf-5030-9678-9ccf9c0b5da9/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/json-repair.yml","size":3244,"sha256":"5859d8c833593069cfe781da27d585a24cdbbf5e03a50af56b2ae01045d491ad","contentType":"application/yaml; charset=utf-8"},{"id":"1224dad7-06f1-5e4c-be50-bb8ff4d18dd6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/1224dad7-06f1-5e4c-be50-bb8ff4d18dd6/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/json_translate.yml","size":14382,"sha256":"dce2197de5f75fd657ac841b58de6fd55a10860357d159c900fb3242af8ab964","contentType":"application/yaml; charset=utf-8"},{"id":"7a25db12-66bc-5d68-9f64-e6029545192d","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/7a25db12-66bc-5d68-9f64-e6029545192d/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/图片生成html,网页小游戏(1panel mcpsse).yml","size":14255,"sha256":"56beeb96110f01ab42938fe6292ca6a392f1c37a40e63adb369e685b0d92eb1c","contentType":"application/yaml; charset=utf-8"},{"id":"4b5e6e10-dcaf-55ec-823c-c04317cf3454","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/4b5e6e10-dcaf-55ec-823c-c04317cf3454/attachment.yml","path":"organized_dsl/14_参考示例/basic基础模板/文生Word_Http_Post.yml","size":3885,"sha256":"57feb65817e21b5b9e5a22d9913e9ebbee189b5f58179ac889a359dd538f560c","contentType":"application/yaml; charset=utf-8"},{"id":"3158f882-62d7-5568-8823-392b707e70f4","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/3158f882-62d7-5568-8823-392b707e70f4/attachment.yml","path":"organized_dsl/14_参考示例/complex复杂案例/Deep Researcher On Dify .yml","size":100242,"sha256":"36530c6e2eeccec225351566357bda10ff229736b4361dacd74f2b50f2aa1a8a","contentType":"application/yaml; charset=utf-8"},{"id":"0a511d9d-5504-57d9-ade6-a21e4a1cc618","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0a511d9d-5504-57d9-ade6-a21e4a1cc618/attachment.yml","path":"organized_dsl/14_参考示例/complex复杂案例/FLUX绘画机器人+多模态识别+语音播放.yml","size":22182,"sha256":"dc6a23ec4564939f9fd30b8f3cec3eb4fc3ca5f868402b40694104a18848b598","contentType":"application/yaml; charset=utf-8"},{"id":"fb76d193-36b9-5e37-986f-47524aa88c08","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/fb76d193-36b9-5e37-986f-47524aa88c08/attachment.yml","path":"organized_dsl/14_参考示例/complex复杂案例/YouTube博主和自媒体运营专家工作流.yml","size":8647,"sha256":"d3e66c11c445d951b02553853ec2fb30092230b8e84470c5200703c39686d92e","contentType":"application/yaml; charset=utf-8"},{"id":"0c3e82a9-03d6-50c0-ba32-f329ea0d6c4b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0c3e82a9-03d6-50c0-ba32-f329ea0d6c4b/attachment.yml","path":"organized_dsl/14_参考示例/complex复杂案例/simple-kimi.yml","size":46897,"sha256":"53972afa295ed0113876ec13b6c3bd4a8179b3775683237c109a33bcee320321","contentType":"application/yaml; charset=utf-8"},{"id":"bd5e0e78-9e0a-5d8a-b2f0-e75b5a604327","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/bd5e0e78-9e0a-5d8a-b2f0-e75b5a604327/attachment.yml","path":"organized_dsl/14_参考示例/complex复杂案例/文生Word_Agent.yml","size":2281,"sha256":"bc0f64d7e91095a6dd27f86f0528dd174bda9e4d75a9161c2d62fa404c6d983e","contentType":"application/yaml; charset=utf-8"},{"id":"0956bc4e-0367-5c42-8b17-97cb8acdf4cc","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0956bc4e-0367-5c42-8b17-97cb8acdf4cc/attachment.yml","path":"organized_dsl/14_参考示例/complex复杂案例/旅行Demo.yml","size":12140,"sha256":"d14793c040edccab535c21f2ac938a824f3e2b04db07fb70d4e24e6ed5e39500","contentType":"application/yaml; charset=utf-8"},{"id":"09489b07-1638-5f91-be70-a4d8501a19c4","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/09489b07-1638-5f91-be70-a4d8501a19c4/attachment.yml","path":"organized_dsl/14_参考示例/complex复杂案例/记忆测试.yml","size":48492,"sha256":"84198d24b559dd92b8ae589d06fc27045db796c5c94947591ac0948001076942","contentType":"application/yaml; charset=utf-8"},{"id":"79483a74-df48-5e08-bb41-c6e5759bae7a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/79483a74-df48-5e08-bb41-c6e5759bae7a/attachment.yml","path":"organized_dsl/14_参考示例/dify_course课程示例/dify_course_demo.yml","size":16559,"sha256":"bff61a0feaf3fbd6e1cb54bcb9e31a04be018d347820bf2a5798f9c69247fda8","contentType":"application/yaml; charset=utf-8"},{"id":"35b188f7-c080-5c93-9c57-420adb0d89b2","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/35b188f7-c080-5c93-9c57-420adb0d89b2/attachment.md","path":"organized_dsl/Dify_DSL_节点完整参考指南.md","size":35986,"sha256":"4ece9e1e2a47ac62561fc73afcdb64d9666a9544487c25ab3b62f912fee93088","contentType":"text/markdown; charset=utf-8"},{"id":"6c8231c3-bb17-5900-a2af-925d024f201e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6c8231c3-bb17-5900-a2af-925d024f201e/attachment.md","path":"organized_dsl/INDEX.md","size":5529,"sha256":"d239e211337d57efe3acdc675cd413ca1d55c1541286ca51a12dbb6ec26fc7df","contentType":"text/markdown; charset=utf-8"}],"bundle_sha256":"8d1b59c362cce384bbc58cd8cc034f55c5af852a628283815d2b0f9b3cc62677","attachment_count":137,"text_attachments":137,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"skills/dify_creator/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"general","category_label":"General"},"exact_dupes_collapsed_into_this":0},"license":"CC BY-NC-SA 4.0","version":"v1","category":"general","import_tag":"clean-skills-v1","description":"通过多轮对话引导用户确定需求,参考现有 Dify 案例,生成可直接导入 Dify 的工作流 DSL YAML 配置"}},"renderedAt":1782979870565}

Dify 工作流生成器 (dify creator) 通过多轮对话引导用户明确需求, 参考 目录中的现有案例 ,生成符合对应 Dify 版本规范的 DSL YAML 文件,可直接导入 Dify 使用。 ⚠️ 重要:搜索文件前必须先切换到技能目录! 然后再搜索 和 核心能力 - 智能对话引导 :通过提问帮助用户梳理需求,避免遗漏关键信息 - 案例参考定位 :基于 INDEX.md 索引,自动匹配相似 Dify 案例 - 工作流结构设计 :分析需求后给出流程结构,与用户确认 - 完整 DSL 生成 :参考 DSL 节点指南,生成符合规范的完整 YAML 配置 使用场景 - 创建智能客服对话流程 - 构建 RAG 知识库问答系统 - 设计音视频处理工作流 - 开发代码生成和文档处理工具 - 搭建多模型协作的复杂流程 --- 工作流程总览 核心步骤 | 步骤 | 名称 | 输出 | |------|------|------| | Step 1 | 收集需求 | 需求文档 | | Step 2 | 案例定位 | 参考案例列表 | | Step 3 | 流程设计 | 流程结构图 | | Step 4 | 用户确认 | 确认反馈 | | Step 5 | DSL生成 | 完整YAML文件 | --- Step 1:收集用户需求 首先向用户询问基础信息,明确工作流的目标和功能。 1.1 基础信…