使用 Webhooks 触发流
您可以使用 Webhook 组件响应外部事件来启动流(Flow)运行。
通过 Webhook 组件,流可以直接从外部源接收数据。然后,流可以解析数据并将其传递给流中的其他组件以启动其他操作,例如调用 API、写入数据库以及与 LLM 聊天。
如果输入不是有效的 JSON,Webhook 组件会将其包装在一个 payload 对象中,以便它可以作为触发流的输入被接受。
Webhook 组件提供了一个通用的入口点,可以使您的流更具事件驱动性,并与您的整个应用程序和服务堆栈集成。 例如:
- 使用 LLM 分析客户反馈或调查问卷的情感和内容。
- 从监控系统接收通知,然后根据警报类型和严重程度触发自动响应。
- 与电子商务平台集成以处理订单并更新库存。
配置 Webhook 组件
要在流中使用 Webhook 组件,请执行以下操作:
-
在 Langflow 中,打开您想要使用 Webhook 组件的流。
-
向您的流中添加一个 Webhook 组件 和一个 Parser (解析器) 组件 到您的流中。
这两个组件通常成对使用,因为 Parser 组件会从 Webhook 组件接收到的原始有效负载(Payload)中提取相关数据。
-
将 Webhook 组件的 Data 输出连接到 Parser 组件的 Data 输入。
-
在 Parser 组件的 Template 字段 中,输入一个模板以将原始有效负载解析为结构化文本。
在模板中,使用有效负载键(Payload Keys)作为变量,其方式与在 Prompt Template (提示词模板) 组件 中定义变量的方式相同。
例如,假设您希望您的 Webhook 组件接收以下 JSON 数据:
_10{_10"id": "",_10"name": "",_10"email": ""_10}然后,您可以 使用花括号 在解析器模板的任何位置引用 JSON 键:
_10ID: {id} - Name: {name} - Email: {email} -
将 Parser 组件's Parsed Text 输出连接到流中的下一个逻辑组件,例如 Chat Input 组件。
如果您只想测试 Webhook 和 Parser 组件,可以将 Parsed Text 输出直接连接到 Chat Output 组件的 Text 输入。然后,在运行流后,您可以在 游乐场 (Playground) 中看到解析后的数据。
-
从 Webhook 组件的 Endpoint 字段中,复制用于向 Webhook 组件发送数据并触发流的 API 端点。
或者,要获取完整的
POST /v1/webhook/$FLOW_ID代码片段,请打开流的 API 访问 面板,然后点击 Webhook curl 选项卡。 您还可以在 Webhook 组件的 curl 字段中修改默认的 curl 命令。 如果此字段默认不可见,请点击 Webhook 组件,然后点击组件标题菜单中的 控制 (Controls)。 -
向流的
webhook端点发送带有data的 POST 请求以触发流。以下示例发送了一个包含
id、name和email字符串的有效负载:_10curl -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} -
要查看流最近解析的有效负载,请点击 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 标头包含在请求中:
_10curl -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 密钥作为查询参数包含在请求中:
_10curl -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_ADDRESS、FLOW_ID 和 LANGFLOW_API_KEY 替换为您部署中的实际值。
更多信息请参阅 API 密钥与身份验证。
Webhook 组件故障排除
使用以下信息来帮助解决 Webhook 组件可能出现的常见问题。
验证 Webhook 组件接收到的数据
要对带有 Webhook 组件的流进行故障排除并验证组件是否正在接收数据,您可以创建一个仅输出解析后有效负载的小型流:
-
创建一个包含 Webhook、Parser 和 Chat Output 组件的流。
-
将 Webhook 组件的 Data 输出连接到 Parser 组件的 Data 输入。
-
将 Parser 组件的 Parsed Text 输出连接到 Chat Output 组件的 Text 输入。
-
编辑 Parser 组件,将 Mode 设置为 Stringify。
此模式将 Webhook 组件接收到的数据作为字符串传递,并由 Chat Output 组件打印。
-
点击 分享 (Share),选择 API 访问 (API access),然后复制 Webhook curl 代码片段。
-
可选:如果您想传递不同的有效负载, 请在代码片段中编辑
data。 -
发送 POST 请求以触发流。
-
点击 游乐场 (Playground) 验证 Chat Output 组件是否打印了来自 POST 请求的 JSON 数据。
Parser 组件构建失败
如果 Parser 组件没有从 Webhook 组件接收到数据,或者传入的数据存在问题,该组件可能会构建失败。
如果发生这种情况,请尝试将 Parser 组件的 Mode 更改为 Stringify,以便该组件将解析后的有效负载作为单个字符串输出。 然后,您可以检查字符串输出并对解析模板进行故障排除,或者直接以字符串形式处理解析后的数据。