dify workflow
自定义模型供应商集成
dify集成自定义模型时,配置的yaml文件里的参数, 比如max_tokens,虽然设置了default值。但是,在dify页面llm节点,如果没将该参数的开关打开,则模型对应的函数是拿不到该参数的。
即model_parameters参数里将没有max_tokens这个key value。
def _invoke(
self,
model: str,
credentials: dict,
prompt_messages: list[PromptMessage],
model_parameters: dict,
tools: Optional[list[PromptMessageTool]] = None,
stop: Optional[list[str]] = None,
stream: bool = True,
user: Optional[str] = None,
) -> Union[LLMResult, Generator]:
主工作流中调用子工作流
这种时候,如果子工作流里做了改动,并且也publish了,但主工作流调用它时仍然是旧版本。这是因为主工作流调用的是工具,而这个工具是由子工作流发布为工具的。当子工作流做了更新时,发布时要相应做下面配置。

一般直接点击保存就行。 但这一个操作一定得做。
未经过的节点被引用时的问题
后面的节点引用前面的节点的前提是,一定有路径或分支经过了前面的节点。

在同一工作流中,可以看到,虽然实际上并未经过“代码节点5”,但是后面的节点仍然可以引用它的变量,只不过收到的内容是null,而不是空字符串。 但测试发现,null可以当成空字符串使用,比如传递给下一个节点。
但是,当我们将一个未经过的节点的变量传递给一个子工作流时,子工作流收到的将不是空字符串,而是一串数字加一个点".",和变量名,比如"text", "result"等。


这个时候子工作流内部想根据判断该参数的内容来判断是否传入了值时就不准确了。针对这种情况,要么在外层的逻辑分支中判断好不传递该参数,要么传递一个空值或空字符串,这样才能保证子工作流收到的是空字符串。
dify工作流相关表ER图:


浙公网安备 33010602011771号