> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-docs-new-agent-experience.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 第 2 课：流程的头和尾（开始与输出节点）

> 本文档由 AI 自动翻译。如有任何不准确之处，请参考 [英文原版](/en/learn/tutorials/workflow-101/lesson-02)。

上一课我们把工作流比作一份菜谱。今天我们要做的，就是进入 Dify 后厨，认识一下我们的操作台并开始基础制作环节。

## 创建应用

<Steps>
  <Step title="创建空白应用">
    点击顶端的 **工作室**，在左侧创建应用中，点击 **创建空白应用**。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/creating-the-app.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=ec6a429ebbd1de7fb49e110b06c51a93" alt="创建应用" width="3814" height="618" data-path="images/use-dify/tutorial/workflow-101-lesson-02/creating-the-app.png" />
    </Frame>
  </Step>

  <Step title="配置应用类型">
    在弹窗中的选择应用类型里选择 **工作流**，填写 **应用名称&图标和描述**后，点击 **创建**。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/create-workflow.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=3473d8a242edbfe44bde985baa5bb9de" alt="应用名称和图标" width="3024" height="1262" data-path="images/use-dify/tutorial/workflow-101-lesson-02/create-workflow.png" />
    </Frame>
  </Step>

  <Step title="选择开始节点类型">
    在弹窗中，你会看到一个包含两个选项的弹窗。这两个选项，代表不同的运行逻辑，让我们来做个简单的了解。

    * **用户输入**

      你可以理解为 **手动模式**。当你/用户输入具体信息（如问题、指令）后，才会开始运行。

      使用场景：对话机器人、写作助手、翻译等多数 AI 应用。
    * **触发器**

      你可以理解为 **自动模式**。它依靠特定的信号（如特定时间、事件）自动运行。

      使用场景：每天定时发新闻、当特定事项完成后再运行这个工作流。

    我们在这一课，将搭建 AI 邮件助理，需要我们输入邮件内容，所以在这里我们选择 **用户输入**。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/trigger.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=fdc062e19136e628ffba5cb0dc7ccdd7" alt="触发器" width="1392" height="744" data-path="images/use-dify/tutorial/workflow-101-lesson-02/trigger.png" />
    </Frame>
  </Step>
</Steps>

## 认识画布（Orchestration Canvas）

选择完开始节点后，你会看到一片空白的区域，这里就是你用来编排工作流的画布。

<Frame>
  <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/orchestration-studio.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=32d020a943acd9b6afac07b024a5e21e" alt="编排工作室" width="3840" height="1912" data-path="images/use-dify/tutorial/workflow-101-lesson-02/orchestration-studio.png" />
</Frame>

还记得我们在第一课里学到的节点吗？现在画布上出现的用户输入节点，就是我们工作流的起点。任何一个完整的工作流，都离不开一副最基础的骨架：**开始节点（头）和输出节点（尾）**。

## 开始节点 (Start Node)

<Frame>
  <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/start-node.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=29a50de41724fe6c728a4b234609ed11" alt="开始节点" width="1348" height="760" data-path="images/use-dify/tutorial/workflow-101-lesson-02/start-node.png" />
</Frame>

开始节点是整个工作流的唯一入口，相当于准备材料环节。它的作用是定义工作流开始时，需要从用户那里接收的信息。我们刚刚选择了用户输入作为开始节点。

### 核心概念：变量 (Variable)

你可以把变量想象成贴着不同标签的 **储物盒**，每个盒子专门放一种特定的信息。

比如，如果你要做一个旅游计划生成器，你需要用户提供 `目的地` 和 `旅行天数` 这两个信息。然而，每个用户提供的目的地和旅行天数又都不同，所以每次运行时，这些盒子里装的内容都是变化的。

这就是变量的意义，让你的工作流能够灵活处理每一次不同的请求。

## 输出节点 (Output Node)

<Frame>
  <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/output.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=12df6e9f6a4c4a6bcf51226312ee3a20" alt="输出节点" width="842" height="458" data-path="images/use-dify/tutorial/workflow-101-lesson-02/output.png" />
</Frame>

这是工作流的结尾，相当于出菜。

比如，刚刚的旅游计划生成器，当用户提供目的地：苏州，旅行天数：5，那么在结束节点，将会生成一个 5 天的苏州旅行计划。

开始节点和输出节点定义了一个工作流最基础的输入和输出，构成了它的基本框架。

## 动手实践：AI 邮件助理

搭建一个 AI 邮件助理工作流的基础框架。

<Steps>
  <Step title="创建应用">
    你可以：

    * 在刚刚创建的应用画布上，直接开始编排。
    * 或者，你也可以点击顶部的工作室 > 在左侧创建应用中点击创建空白应用 > 在弹窗中选择工作流应用类型，填写应用名为邮件助理（记得在弹窗中选择 **用户输入**）。
  </Step>

  <Step title="配置开始节点（准备材料）">
    如果你需要 AI 写一封回复邮件，你需要提供什么信息？

    没错，客户的名字和邮件原文。

    1. 点击 **开始** 节点，在右侧面板中的 **输入字段** 内，点击 **+**。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/input-field.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=30b0acc0e2d95cc00b1073a9f5a1f687" alt="用户输入字段" width="1848" height="790" data-path="images/use-dify/tutorial/workflow-101-lesson-02/input-field.png" />
    </Frame>

    2. 在弹窗中，依次创建两个变量：

       1. **第一个变量（短文本）**

           <Frame>
             <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/variable-01.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=0bfab2ad38af1a117ebd699a123ea4ba" alt="添加第一个变量" width="1052" height="1200" data-path="images/use-dify/tutorial/workflow-101-lesson-02/variable-01.png" />
           </Frame>

       * 变量名称：`customer_name`

       * 显示名称：客户名字

       * 其他选项保持默认

       2. **第二个变量（长文本）**

           <Frame>
             <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/variable-02.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=abb20b7038e2ed27fe684da9fae2b658" alt="添加第二个变量" width="1052" height="1324" data-path="images/use-dify/tutorial/workflow-101-lesson-02/variable-02.png" />
           </Frame>

       * 字段类型：点击后在下拉菜单中选择 **段落**（这样输入框能够涵盖更多内容，方便粘贴邮件）
       * 变量名称：`email_content`
       * 显示名称：客户邮件原文
       * 最大长度：手动修改为 **2000**。确保能够涵盖完整的邮件内容

           <Tip>
             **变量名称 vs 显示名称**

             你可能已经留意到，我们为每个变量都设置了两个名字，他们有什么区别呢？

             * **变量名称**：这是运行时，给系统看的名字。它必须是**独一无二**的，并且只能使用英文字母、数字和下划线 `_`，不能有空格。
             * **显示名称**：这是给我们自己和最终用户看的名字。你可以使用任何语言（比如中文），让它变得清晰易懂。这个名字会显示在最终应用的输入框前面。
           </Tip>
  </Step>

  <Step title="创建结束节点（设定目标）">
    在画布上点击右键，选择 **添加节点**，选择 **输出**节点。

    <Frame>
      <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/create-end-node.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=c73508e6680b3486f273155b100cb79f" alt="创建结束节点" width="972" height="578" data-path="images/use-dify/tutorial/workflow-101-lesson-02/create-end-node.png" />
    </Frame>
  </Step>
</Steps>

现在，你的画布上有一个准备好接收客户名字和邮件原文的 **开始节点**，和一个等待输出最终邮件的 **结束节点**。

<Frame>
  <img src="https://mintcdn.com/dify-6c0370d8-docs-new-agent-experience/m7n3yF17cj5TGqhL/images/use-dify/tutorial/workflow-101-lesson-02/basic-workflow.png?fit=max&auto=format&n=m7n3yF17cj5TGqhL&q=85&s=e9c18182cc2a02ded4c8ab28a61dad42" alt="开始节点和输出节点" width="1204" height="358" data-path="images/use-dify/tutorial/workflow-101-lesson-02/basic-workflow.png" />
</Frame>

我们已经成功搭建了工作流的基本框架，画布中间的空白区域，就是我们下一课要放置 LLM 节点来处理这些信息的地方。

## 小挑战

**任务**：如果你需要创建一个旅游计划生成器，这个工作流的开始节点，需要包含哪些变量？

<Tip>
  探索输入字段里 **添加变量** 的字段类型。
</Tip>
