跳到主要内容

使用 Webhooks 触发流

您可以使用 Webhook 组件响应外部事件来启动流(Flow)运行。

通过 Webhook 组件,流可以直接从外部源接收数据。然后,流可以解析数据并将其传递给流中的其他组件以启动其他操作,例如调用 API、写入数据库以及与 LLM 聊天。 如果输入不是有效的 JSON,Webhook 组件会将其包装在一个 payload 对象中,以便它可以作为触发流的输入被接受。

Webhook 组件提供了一个通用的入口点,可以使您的流更具事件驱动性,并与您的整个应用程序和服务堆栈集成。 例如:

  • 使用 LLM 分析客户反馈或调查问卷的情感和内容。
  • 从监控系统接收通知,然后根据警报类型和严重程度触发自动响应。
  • 与电子商务平台集成以处理订单并更新库存。

配置 Webhook 组件

要在流中使用 Webhook 组件,请执行以下操作:

  1. 在 Langflow 中,打开您想要使用 Webhook 组件的流。

  2. 向您的流中添加一个 Webhook 组件 和一个 Parser (解析器) 组件 到您的流中。

    这两个组件通常成对使用,因为 Parser 组件会从 Webhook 组件接收到的原始有效负载(Payload)中提取相关数据。

  3. Webhook 组件的 Data 输出连接到 Parser 组件的 Data 输入。

  4. Parser 组件的 Template 字段中,输入一个模板以将原始有效负载解析为结构化文本。

    在模板中,使用有效负载键(Payload Keys)作为变量,其方式与在 Prompt Template (提示词模板) 组件 中定义变量的方式相同。

    例如,假设您希望您的 Webhook 组件接收以下 JSON 数据:


    _10
    {
    _10
    "id": "",
    _10
    "name": "",
    _10
    "email": ""
    _10
    }

    然后,您可以 使用花括号 在解析器模板的任何位置引用 JSON 键:


    _10
    ID: {id} - Name: {name} - Email: {email}

  5. Parser 组件's Parsed Text 输出连接到流中的下一个逻辑组件,例如 Chat Input 组件。

    如果您只想测试 WebhookParser 组件,可以将 Parsed Text 输出直接连接到 Chat Output 组件的 Text 输入。然后,在运行流后,您可以在 游乐场 (Playground) 中看到解析后的数据。

  6. Webhook 组件的 Endpoint 字段中,复制用于向 Webhook 组件发送数据并触发流的 API 端点。

    或者,要获取完整的 POST /v1/webhook/$FLOW_ID 代码片段,请打开流的 API 访问 面板,然后点击 Webhook curl 选项卡。 您还可以在 Webhook 组件的 curl 字段中修改默认的 curl 命令。 如果此字段默认不可见,请点击 Webhook 组件,然后点击组件标题菜单中的 控制 (Controls)

  7. 向流的 webhook 端点发送带有 data 的 POST 请求以触发流。

    以下示例发送了一个包含 idnameemail 字符串的有效负载:


    _10
    curl -X POST "http://localhost:7860/api/v1/webhook/FLOW_ID" \
    _10
    -H "Content-Type: application/json" \
    _10
    -H "x-api-key: LANGFLOW_API_KEY" \
    _10
    -d '{"id": "12345", "name": "alex", "email": "alex@email.com"}'

    成功的响应表示 Langflow 已启动该流。 响应不包括整个流的输出,仅表示流已开始运行。


    _10
    {
    _10
    "message": "Task started in the background",
    _10
    "status": "in progress"
    _10
    }

  8. 要查看流最近解析的有效负载,请点击 Parser 组件,然后点击 检查输出 (Inspect output)。 对于前面的示例,解析后的有效负载将是类似于 ID: 12345 - Name: alex - Email: alex@email.com 的字符串。

使用 Composio webhooks 触发流

通常情况下,您不会手动触发 Webhook 组件。 要了解如何使用来自外部应用程序的有效负载触发流,请观看视频教程 如何在 Langflow 中使用 Webhooks

为 webhooks 启用身份验证

默认情况下,webhooks 以流所有者的身份运行,无需身份验证(LANGFLOW_WEBHOOK_AUTH_ENABLE=False)。

要为 webhooks 启用 API 密钥身份验证,请在您的 Langflow .env 文件中设置 LANGFLOW_WEBHOOK_AUTH_ENABLE=True

启用 webhook 身份验证后,您必须在每个 webhook 请求中提供 Langflow API 密钥。

要将 API 密钥作为 HTTP 标头包含在请求中:


_10
curl -X POST "http://LANGFLOW_SERVER_ADDRESS/api/v1/webhook/FLOW_ID" \
_10
-H "Content-Type: application/json" \
_10
-H "x-api-key: LANGFLOW_API_KEY" \
_10
-d '{"id": "12345", "name": "alex", "email": "alex@email.com"}'

要将 API 密钥作为查询参数包含在请求中:


_10
curl -X POST "http://LANGFLOW_SERVER_ADDRESS/api/v1/webhook/FLOW_ID?x-api-key=LANGFLOW_API_KEY" \
_10
-H "Content-Type: application/json" \
_10
-H "d '{"id": "12345", "name": "alex", "email": "alex@email.com"}'

LANGFLOW_SERVER_ADDRESSFLOW_IDLANGFLOW_API_KEY 替换为您部署中的实际值。

更多信息请参阅 API 密钥与身份验证

Webhook 组件故障排除

使用以下信息来帮助解决 Webhook 组件可能出现的常见问题。

验证 Webhook 组件接收到的数据

要对带有 Webhook 组件的流进行故障排除并验证组件是否正在接收数据,您可以创建一个仅输出解析后有效负载的小型流:

  1. 创建一个包含 WebhookParserChat Output 组件的流。

  2. Webhook 组件的 Data 输出连接到 Parser 组件的 Data 输入。

  3. Parser 组件的 Parsed Text 输出连接到 Chat Output 组件的 Text 输入。

  4. 编辑 Parser 组件,将 Mode 设置为 Stringify

    此模式将 Webhook 组件接收到的数据作为字符串传递,并由 Chat Output 组件打印。

  5. 点击 分享 (Share),选择 API 访问 (API access),然后复制 Webhook curl 代码片段。

  6. 可选:如果您想传递不同的有效负载,请在代码片段中编辑 data

  7. 发送 POST 请求以触发流。

  8. 点击 游乐场 (Playground) 验证 Chat Output 组件是否打印了来自 POST 请求的 JSON 数据。

Parser 组件构建失败

如果 Parser 组件没有从 Webhook 组件接收到数据,或者传入的数据存在问题,该组件可能会构建失败。

如果发生这种情况,请尝试将 Parser 组件的 Mode 更改为 Stringify,以便该组件将解析后的有效负载作为单个字符串输出。 然后,您可以检查字符串输出并对解析模板进行故障排除,或者直接以字符串形式处理解析后的数据。

另请参阅

Search