更新时间:2026-06-15 GMT+08:00
分享

通过循环生成长文本

场景介绍

大语言模型虽然拥有出色的自然语言处理与文本生成能力,但受限于上下文窗口的物理长度,很难仅凭单次交互就完成长篇内容的创作。如果简单地将文章拆分成多段分别生成再进行拼接,往往会造成前后文脱节、逻辑不连贯甚至内容相互矛盾的问题;而依靠人工去梳理和重组这些信息,不仅耗时费力,也难以实现高效的工程化落地。

为弥补这一不足,可以借助低代码工作流的流程定制能力,我们可以将长文创作拆解为多个自动化步骤:首先利用大模型节点规划整体大纲,随后通过循环节点逐段进行写作并进行内容拼接,写作时要求大模型参考前文内容,确保内容衔接自然,内容连贯。这种标准化的工作流模式,适用于学术论文、商业报告以及小说创作等多样化的长文本生成场景。

本文将介绍如何结合大模型节点、循环节点、代码节点以及变量赋值节点,构建一个用于长文本稳定生成与高质量交付的工作流。

效果展示

在试运行配置中的对话框中,输入文章主题,例如“AI的发展趋势”,如图1所示。生成的长文如图2所示。
图1 试运行配置
图2 效果展示

工作流设计

重点介绍工作流中的一些主要节点,每个节点负责特定的任务。以下是各个节点的功能和设计思路。

  • 开始节点:作为工作流的入口,开始节点负责接收用户输入的问题以及输出的长文本主题。
  • 大模型节点-大纲生成:该节点根据用户提供的主题,规划文章大纲。
  • 循环节点:将大模型节点生成的大纲的每个子章节标题扩写为完整的段落。
  • 结束节点:将完整的文章内容输出。
图3 通过循环生成长文本工作流全景

操作步骤

搭建工作流详细步骤如下:

步骤一:创建工作流

  1. 登录AgentArts智能体平台
  2. 单击左侧导航栏开发中心 > 智能体管理 ,单击左上角“工作流”页签,进入工作流应用管理界面,单击右上角“创建工作流”
  3. 选择创建“对话型工作流”,在对应的创建页面,配置工作流相关信息,具体如图4所示,参数如表1所示。

    图4 创建工作流
    表1 参数说明

    参数名称

    示例

    说明

    名称

    长文本循环生成工作流

    支持中英文、数字、下划线、中划线和空格,长度 2~64字符,但不允许以空格开头或结尾。

    描述

    本工作流适用于长篇报告、小说连载等复杂长文本的生成。系统会先将主题拆解为子章节数组,再通过循环节点逐一生成段落。生成时会自动参考前文,确保长篇内容逻辑连贯、衔接自然且无重复。

    描述工作流的功能,可直观呈现给用户,长度0~1024个字符。

  4. 配置完成后单击“立即创建”,进入工作流编排页面。

步骤二:添加工作流节点

  1. 单击大模型节点和结束节点中间的,添加循环节点,如图5所示。

    图5 添加循环节点

  2. 在循环节点里内添加节点。单击界面下方的“添加节点”,依次添加大模型节点、代码节点以及变量赋值节点,并将节点间的连线依次连接,如图6所示。

    图6 添加循环体中的节点

  3. 为提升易理解性,可修改工作流节点的名称。选中大模型节点,在右侧弹框中单击节点名称,可修改节点名称。可将“大模型”节点修改为“大纲生成”,“大模型_1”节点修改为“段落写作”。

    节点名称修改完成后,工作流如图7所示。

    图7 长文本循环工作流

步骤三:配置工作流节点

工作流各个核心节点的配置方式如下:

表2 节点配置说明

节点类型

说明

示例

开始节点

在开始节点说明中补充默认参数:使用系统默认配置query参数,表示用户输入的内容。并添加一个必选的输入参数,即文章主题。

  • 参数名称:title
  • 参数类型:String
  • 描述:文章主题
  • 必填:勾选。

大模型节点-大纲生成

此节点根据用户输入的文章主题名称,对应生成文章大纲。

  • 模型配置:选择DeepSeek-V3.1模型。
  • 输入参数:

    title:引用开始节点的title。

  • 输出参数:

    单击输出区域右上角的,选择输出格式为“JSON”。单击,新增定义内容如下:

    outline:类型为“Array<String>”,描述为生成的文档大纲。

  • 提示词配置:
    • 系统提示词:定义一段系统提示词,如下所示:
      # 角色设定
      你是一位拥有10年实战经验的资深内容策划与大纲构建专家。你精通文章架构设计,能够精准剖析用户提供的主题,并拆解出逻辑严密、层次分明、层层递进的结构化大纲。
      
      # 任务目标
      根据用户输入的文章主题(Title),输出一份详尽且逻辑清晰的文章大纲。大纲需包含主章节与子章节标题,确保内容覆盖全面,行文逻辑连贯。
      
      # 约束条件
      - **标题要求**:各级标题必须简洁明了,杜绝冗长复杂的表述。
      - **格式限制**:最终输出必须严格为字符串数组格式。每个完整的主章节及其下属子主题需作为一个独立的字符串元素,存放在数组中。
      - **层级限制**:子章节的嵌套深度最多不得超过3层。
      
      # 输出示例
      用户输入:人工智能对现代职场的影响
      你的输出:
      "1. 引言\n 1.1 AI技术的快速普及\n 1.2 职场变革的必然趋势",
      "2. 积极影响与机遇\n 2.1 工作效率的提升\n 2.1.1 自动化处理重复性工作\n 2.1.2 辅助数据分析与决策\n 2.2 新兴岗位的诞生\n 2.2.1 AI训练师与提示词工程师\n 2.2.2 人机协同管理专家",
      "3. 负面冲击与挑战\n 3.1 传统岗位的替代风险\n 3.1.1 基础客服与初级翻译\n 3.1.2 流水线数据录入员\n 3.2 职场心理压力\n 3.2.1 技能焦虑与淘汰恐慌\n 3.2.2 算法管理带来的压迫感",
      "4. 应对策略与未来展望\n 4.1 个人层面的技能重塑\n 4.2 企业层面的员工关怀与培训"
      
      # 执行步骤
      1. 深度剖析用户提供的主题,精准定位文章核心立意与目标受众。
      2. 梳理整体叙事脉络,规划出最契合主题的章节结构。
    • 用户提示词:
      请为文章《{{title}}》生成一份专业的写作大纲。

循环节点

循环节点会遍历大纲数组中的每个章节标题元素,逐一生成各个段落。

每次循环通过中间变量将前文已生成的内容作为变量传递到下次循环中,再通过代码节点将每一次生成的段落内容和前文已生成的内容拼接。其中包含3个节点:

  • 大模型节点:大模型节点根据传入的章节标题生成段落,并结合前文内容确保行文衔接自然、避免重复。
  • 代码节点:将前文已生成的内容和当前章节标题内容进行拼接。
  • 变量赋值节点:用于存储代码节点拼接好的文章内容,并将其赋给循环节点的中间变量。

循环节点设置如下:

  • 循环类型:选择“使用数组循环”。
  • 循环数组:arr_loop_var,引用“生成大纲”大模型节点的输出参数outline。
  • 中间变量:设置变量full_content,这个变量用于传递前文已生成的内容,会在下次循环中提供给代码节点进行拼接。

    因为首次循环时没有文章内容,可以设置为空字符串(""),也可根据需要设置前置引导语,此处引用开始节点的“title”,将文章标题作为引导语。

  • 输出参数:设置变量final_paragraphs,引用循环节点的中间变量full_content。(该参数配置需要循环体内节点配置完后再配置)

大模型节点-段落写作

此节点根据循环节点每次传入的子章节标题生成段落,并结合前文内容确保章节内容衔接自然、避免重复。

  • 模型配置:选择DeepSeek-V3.1模型。
  • 输入参数:
    • current_title:引用循环节点的item(in arr_loop_var),描述为当前章节标题。
    • full_title:引用开始节点的title。
    • previous_content:引用循环节点的中间变量full_content。
    • outline:引用“大纲生成”大模型节点的outline。
  • 输出参数:

    单击输出区域右上角的,选择输出格式为“JSON”。保持默认参数raw_output。

  • 提示词配置:
    • 系统提示词:定义一段系统提示词,如下所示:
      # 角色设定
      你是一位文笔极佳、逻辑思维严密的资深专栏作家和行业分析师。你擅长根据既定的文章大纲和前文内容,撰写出深度、专业且连贯的长篇文章。
      
      # 任务目标
      请根据用户提供的“文章主题”、“当前章节标题”以及“前文已生成的内容”,撰写当前章节的详细正文。
      文章主题:{{full_title}}
      当前章节标题:{{current_title}}
      前文已生成内容:{{previous_content}}
      文章大纲:{{outline}}
      
      # 约束条件
      1. **深度扩写**:围绕“当前章节标题”进行详细阐述,内容必须充实、有见地,避免泛泛而谈。保留大纲的标题(使用Markdown格式)。
      2. **上下文连贯**:必须仔细阅读并理解“前文已生成的内容”,确保当前章节的开头和结尾与前文无缝衔接,逻辑顺畅。
      3. **拒绝重复**:严禁重复“前文已生成的内容”中已经提到过的观点或语句。
      4. **结构清晰**:段落内部可以根据需要使用小标题、列举等方式,使阅读体验更好。
      5. **语气风格**:保持专业、客观且具有启发性的语气。
      6. **字数要求**:当前章节的正文内容请保持在 300-600 字左右(根据主题复杂度适当调整)。
      7. **纯粹输出**:输出章节标题以及内容,不要包含任何“好的,这是为您生成的内容”之类的废话。
      
      # 执行步骤
      1. 分析“文章主题”和“当前章节标题”,明确本段落的写作核心。
      2. 审阅“前文已生成的内容”,找到逻辑切入点,确保承接自然。
      3. 撰写当前章节的详细内容,确保论证充分、语言优美。
      4. 检查并输出最终的纯文本内容。
    • 用户提示词:
      请根据{{current_title}} 这个主题生成一段文章。
      以下信息供你参考:
      文章主题:{{full_title}}
      当前章节标题:{{current_title}}
      前文已生成内容:{{previous_content}}
      你正在写的部分: {{current_title}}
      文章大纲:{{outline}}

代码节点

此节点将前文已生成的内容和当前章节标题内容进行拼接。

  • 输入参数:
    • paragraph:引用段落写作节点的raw_output,描述为当前标题生成的内容。
    • previous_content:引用循环节点的full_content,描述为前文已生成的内容。
  • 输出参数:

    参数名称:merged_text

    参数类型:String

    描述:拼接后的内容

  • 代码:
    def main(args: dict) -> dict:
        previous_content = args.get("previous_content", "")
        paragraph = args.get("paragraph", "")
        # 将新旧文本拼接,中间用换行符隔开
        result = previous_content + "\n" + paragraph
        return {"merged_text": result}

变量赋值节点

用于存储代码节点拼接好的文章内容,并将其赋给循环节点的中间变量。

将代码节点的merged_text的值赋给循环节点的中间变量full_content。

结束节点

此节点用于输出文章最终内容。

输入参数:

result:引用循环节点的final_paragraphs。

步骤四:调试工作流

  1. 配置完成后,在工作流编排界面单击右上角,在试运行配置中的对话框中,输入文章主题,例如“AI的发展趋势”,如图8所示。配置完成后单击“开始运行”。

    图8 试运行配置

  2. 在“试运行”对话框中,输入“请输出”,效果如图9所示。

    图9 效果展示

步骤五:提交版本

  1. 工作流试运行成功后,在工作流编排页面,单击右上角“提交版本”
  2. 输入版本号与版本描述,如图10所示。

    图10 提交版本

相关文档

  • 编排工作流时,画布相关的详细操作介绍,请参见创建工作流
  • 在创建和运行工作流时,可能会遇到的常见问题,请参见《常见问题》。
  • 工作流创建完成后,如果需要通过API调用,则需要将提交的版本部署至实例,具体操作请参考发布并部署工作流

相关文档