Bug描述
我正在尝试使用/v1/run/advanced API端点,因为我知道它可以传递多个输入到不同的输入组件。我已经仔细研究了InputValueRequest的模式,发现我可以传递组件的ID或显示名称。所以我选择仅使用显示名称作为键来获取输入,以便清晰和简单。
然而,输入消息根本没有被获取到流程中进行处理。我尝试使用组件的ID而不是显示名称,但问题仍然存在。
经过深入研究,我认为找到了问题所在。
在Graph类的_run函数的底层,每个顶点都会检查它是否匹配其中一个输入组件,然后用输入值更新该顶点。问题在于第326行的条件表明,如果顶点的ID或显示名称不在input_components中,那么该顶点就不会用输入值更新。
这意味着我们必须将input_components(即输入有效负载中的组件字段)与每个组件的ID和显示名称一起传递,以便更新该组件,这很繁琐。
https://github.com/langflow-ai/langflow/blame/57c72d3ea4ebdd036ed4405dbde05bb447f2d9de/src/backend/base/langflow/graph/graph/base.py#L324-L328
复现步骤
- 创建一个具有不同显示名称的两个TextInput组件的流程
- 使用v1/run/advance API端点
- 在有效负载中设置输入值和组件的显示名称,如下所示:
- 调用API
预期行为
流程应该获取带有指定组件的输入值。允许我们仅使用组件的显示名称。
上述条件应该验证两者(ID和显示名称)都不出现在input_components中。
需要帮助的人
@anovazzi1 谢谢
操作系统
Windows 11
Langflow版本
1.0.7
Python版本
3.10
1条答案
按热度按时间t98cgbkg1#
你好@duongvotran!我在这里帮助你解决关于Langflow软件的任何错误、问题或贡献。让我们一起解决你面临的问题。
要解决Langflow版本1.0.7中
/v1/run/advanced
API端点在使用组件的显示名称或ID时不处理输入消息的问题,你需要确保experimental_run_flow
函数中的inputs
参数结构正确。inputs
参数应该是一个包含InputValueRequest
对象的列表,每个对象都包含components
和input_value
字段。以下是有效载荷应该如何构建的示例:确保
components
数组中的每个条目都包含组件ID和显示名称。这应该解决了API端点无法正确处理输入消息的问题。此外,在
src/backend/base/langflow/api/v1/schemas.py
文件中的InputValueRequest
类显示components
字段是可选的,可以包含组件ID、显示名称或两者。以下是模式中的示例:确保你的有效载荷遵循此格式,以确保API 1(https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/api/v1/endpoints.py)2(https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/api/v1/endpoints.py)3(https://github.com/logspace-ai/langflow/blob/dev/src/backend/base/langflow/api/v1/endpoints.py)4(https://github.com/logspace-ai/langflow/blob/dev/src/backend/base/langflow/api/v1/schemas.py)能够正确处理。