Flowise-AI工作流初体验
AI工作流目前市面上比较火的,有字节的扣子,有Dify.ai。基于langchain的可视化工作流,有langflow,还有flowise等等,目前笔者只体验了这几款,如果还有其他的还望大家告诉笔者体验。
今天体验了一下flowise,感觉还可以,个人感觉比dify和扣子更加的原子化了,完全跟随langchain的设计理念了,但是感觉逻辑还是很清晰的,比如使用某一个组件,需要依赖哪些组件,都会很清晰的标识出来,你只需要选择不同的组件。比如某一个agent依赖chat model,你只需要在chat model分类里,找你到你想依赖的model,如chatopenai、chatollama等等。
安装
安装可以参考官方文档 FlowiseAI/Flowise: Drag & drop UI to build your customized LLM flow (github.com)
我选择第二种docker,会简单一点。
首先需要将代码clone下来
git clone https://github.com/FlowiseAI/Flowise.git
之后进入到docker文件夹中,将.env.example
文件复制一份,重命名成.env
文件内容如下。
PORT=3000
DATABASE_PATH=/root/.flowise
APIKEY_PATH=/root/.flowise
SECRETKEY_PATH=/root/.flowise
LOG_PATH=/root/.flowise/logs
BLOB_STORAGE_PATH=/root/.flowise/storage
端口号和路径你可以自行选择是否修改。
启动的话可以选择使用docker-compose或者docker。
- docker-compose使用下面的命令
docker-compose up -d
如果需要停止,可以使用下面的命令
docker-compose stop
有些机器可能安装了docker,并没有安装docker-compose。
可以使用这个命令安装。将v2.28.1改成你想安装的版本号。
sudo curl -L https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
之后改权限
sudo chmod +x /usr/local/bin/docker-compose
然后执行命令验证是否成功
docker-compose --version
- docker的话需要先构建镜像,
docker build --no-cache -t flowise .
之后执行
docker run -d --name flowise -p 3000:3000 flowise
如果需要停止使用下面的命令
docker stop flowise
不论是docker-compose还是docker,启动之后,打开http://localhost:3000即可看到前端页面。
体验
打开后展示了所有可以做的功能点,我们一个一个简单体验一下。
前两个是工作流的构建,第一个是基于聊天的工作流,第二个是基于agent的。实际使用区别不大,主要的区别在于节点的不同。
Chatflows
chatflows是基于聊天的工作流,里面的节点类型较多,可以看到主要还是基于langchain的设计理念来的,langchain里面有的,这里基本都有。
看到右侧的beta版是基于llamaindex,目前支持的节点还较少。可以理解为将langchain之前用代码构建工作流,变成了可视化。
Agentflows
跟上面的chatflows类似,节点类型稍有不同,但操作流程是差不多的。
Marketplaces
可以将这部分理解为官方做的一些demo,你可以参考这些工作流来构建自己的工作流。打开第一个Flowise Docs QnA
可以看到主要是实现了一个会话检索问答链,chat model使用的是chatopenai,vector store retriever使用的是in-memory vector store,基于内存的向量存储。而in-memory vector store又依赖openai embeddings,数据使用github上的文档,当然要使用向量存储需要使用分割器来分割数据,这里使用了markdown text spliter。
能看到这里很清晰的展示了我们如何用工作流构建一个基于文档的问答机器人。个人感觉这里很清晰,没有上手难度,因为每一个节点依赖的节点类型都很清晰的标记出来了。
Tools
工具这一栏主要是使用代码实现自定义功能的工具。然后你可以在工作流中使用它。
这里官方很贴心的给了一个代码示例,这里应该是只支持JavaScript的代码。
/*
* You can use any libraries imported in Flowise
* You can use properties specified in Input Schema as variables. Ex: Property = userid, Variable = $userid
* You can get default flow config: $flow.sessionId, $flow.chatId, $flow.chatflowId, $flow.input
* You can get custom variables: $vars.<variable-name>
* Must return a string value at the end of function
*/
const fetch = require('node-fetch');
const url = 'https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41¤t_weather=true';
const options = {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
try {
const response = await fetch(url, options);
const text = await response.text();
return text;
} catch (error) {
console.error(error);
return '';
}
Assistants
这里好像只支持openai assistants。
配置好提示词,温度等参数,可以有自己的助理。
Credentials
这里主要是配置各个ai模型、工具等等的鉴权,配置好之后才能使用这些组件。
Variables
配置变量,可以在工作流中使用。
API Keys
这里是如果你要使用后端服务,在这里配置号api key,可以使用http等方式调用后端服务。
Document Stores
知识库配置,先起一个名字,之后点击进去开始配置。
可以看到支持的文件来行非常多。
随便点一个pdf file,进去后需要上传文件,然后还要指定分割器等等。
总结
上面我们完整的粗略的体验了一下flowise平台,很强大。个人觉得上手门槛有,但不高,如果你之前了解过langchain。
潜在用户还是有一定基础AI的人,如果是完全小白的话还是有点难度。
相比扣子、dify等,这两个平台还是集成化度高一点,flowise更偏底层。
从产品化的角度来说,flowise还是比较早期,功能点比较简单。同样是基于langchain,可能langflow会更成熟一点。
如果大家有不同想法可以留言,共同探讨。