我正在尝试实现一个 supervisor
模式,其中语言模型根据到目前为止的对话对当前消息进行分类。我可以在UI中完美地使用条件路由器组件来实现这一点,但是当我尝试使用API中的流程时,它会抛出一个错误。
我认为这是由于流程中需要两个单独的聊天输出来促进对话中的分支。以下是一个示例流程,用于演示问题。我目前正在使用 main
的最新更改进行测试。
dont-talk-about-bruno.json
❯ curl -X POST \
"http://localhost:3000/api/v1/run/dea95449-11e1-4f8f-b22d-7ef6f8728c34?stream=false" \
-H 'Content-Type: application/json'\
-d '{"input_value": "message",
"output_type": "chat",
"input_type": "chat",
"tweaks": {
"ChatInput-Ma4Jp": {},
"OpenAIModel-MdB0V": {},
"OpenAIModel-NJ8p6": {},
"Prompt-DfMtR": {},
"ConditionalRouter-j94T7": {},
"Pass-N8MXP": {},
"ChatOutput-TIge3": {},
"ChatOutput-Z6DoM": {},
"OpenAIModel-Naaf3": {},
"Pass-hbQT6": {},
"Prompt-PE0iF": {},
"Prompt-uCIqY": {},
"Memory-oi31T": {}
}}'
{"detail":"The message must be an iterator or an async iterator."}
8条答案
按热度按时间tvokkenx1#
嘿,@Nitewriter!我在这里帮助你解决任何bug、问题或贡献。让我们一起解决这个问题!
要解决在使用API中的
ConditionalRouter
组件时出现的错误“消息必须是迭代器或异步迭代器”,你需要确保INPUT_FIELD_NAME
参数设置为迭代器或异步迭代器。这是流正确处理消息所必需的。以下是如何解决此问题的方法:
INPUT_FIELD_NAME
是迭代器或异步迭代器:确保你的流程中的
INPUT_FIELD_NAME
参数设置为迭代器或异步迭代器。以下是如何正确设置此参数的示例:stream
方法的实现:确保顶点类中的
stream
方法正确实现以处理迭代器或异步迭代器。以下是一个相关的代码片段,用于检查此条件:在Langflow的上下文中,
src/backend/base/langflow/api/v1/chat.py
中的build_vertex_stream
函数演示了如何为顶点处理流。以下是一个摘录:通过确保将
INPUT_FIELD_NAME
参数正确设置为迭代器或异步迭代器,并使stream
方法得到正确实现,你应该能够解决错误并通过API 1(https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/graph/vertex/types.py)2(https://github.com/logspace-ai/langflow/blob/dev/src/backend/base/langflow/graph/vertex/types.py)3(https://github.com/logspace-ai/langflow/blob/dev/src/backend/base/langflow/api/v1/chat.py)4(https://github.com/langflow-ai/langflow/blob/main/src/backend/base/langflow/api/v1/chat.py)成功运行流程。v2g6jxz62#
嘿,@Nitewriter,错误
The message must be an iterator or an async iterator.
通常意味着组件中出现了问题。我相信你会在日志中找到一条指向实际问题的ERROR日志行。yacmzcpb3#
@nicoloboschi 我会看看我能找到什么并在这里发布。谢谢。
qq24tv8q4#
以下是文本内容的翻译结果:
@nicoloboschi 当我使用curl调用流程时,我得到了
Traceback
的结果:我将迭代器类型添加到了
ValueError
消息中,以便我们可以看到它接收到了什么。krcsximq5#
@nicoloboschi 好的,我想我可能找到了问题所在。这似乎是因为
Conditional Router
组件在图的错误分支上调用了stop。运行器仍然想要解析该图的停止分支上的Chat Output
组件,并因为OpenAI
组件处于非活动状态(未构建)而出现错误。是否可以使用条件路由器实现对话分支?8wtpewkr6#
在
About Bruno
聊天输出组件的输入字段上发生错误在
Not About Bruno
聊天输出组件的输入字段上发生错误fae0ux8s7#
Bailing instead of raising an error does allow the flow to work, however, it is probably not the solution you would want.
src/backend/base/langflow/graph/vertex/types.py:InterfaceVertex:stream
ftf50wuq8#
@ogabrielluiz 。这看起来像是一个图构建器问题,你能看一下吗?