低代码!小白用10分钟也能利用flowise构建AIGC| 业务问答 | 文本识别 | 网络爬虫

本文主要是介绍低代码!小白用10分钟也能利用flowise构建AIGC| 业务问答 | 文本识别 | 网络爬虫,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、与知识对话

在这里插入图片描述

二、采集网页问答

在这里插入图片描述

三、部署安装flowise

flowise工程地址:https://github.com/FlowiseAI/Flowise
flowise 官方文档:https://docs.flowiseai.com/

这里采用docker安装:

step1:克隆工程代码 (如果网络不好,下载压缩文件也是一样)

git clone  https://github.com/FlowiseAI/Flowise.git

step2:进入工程目录docker文件下复制 .env.example 内容创建 .env

关于这个文件参数说明:https://github.com/FlowiseAI/Flowise/blob/main/CONTRIBUTING-ZH.md

数据库支持 sqlite, mysql, postgres,这里我注释了数据库代码,默认则用sqlite;

如果想用mysql,postgres自己起服务也可以;注意mysql要8.0版本以上;

在这里插入图片描述
step3: 创建docker-compose-chroma.yml文件,这里是为了后续在组件当中使用向量数据库chroma

version: '3.1'services:flowise:image: flowiseai/flowiserestart: alwaysenvironment:- PORT=${PORT}- FLOWISE_USERNAME=${FLOWISE_USERNAME}- FLOWISE_PASSWORD=${FLOWISE_PASSWORD}- DEBUG=${DEBUG}- DATABASE_PATH=${DATABASE_PATH}- APIKEY_PATH=${APIKEY_PATH}- SECRETKEY_PATH=${SECRETKEY_PATH}- FLOWISE_SECRETKEY_OVERWRITE=${FLOWISE_SECRETKEY_OVERWRITE}- LOG_PATH=${LOG_PATH}- LOG_LEVEL=${LOG_LEVEL}- EXECUTION_MODE=${EXECUTION_MODE}ports:- '0.0.0.0:${PORT}:${PORT}'volumes:- ~/.flowise:/root/.flowisenetworks:- flowise_netcommand: /bin/sh -c "sleep 3; flowise start"
networks:flowise_net:name: chroma_netexternal: true

step4: 构建容器并且启动,在下图所在所示路径下构建指定yml文件

docker-compose -f docker-compose-chroma.yml up -d

在这里插入图片描述
在这里插入图片描述

此时容器已经起来了

在这里插入图片描述

四、部署安装chroma

chroma工程地址:https://github.com/chroma-core/chroma
chroma官方文档:https://docs.trychroma.com/

step1: 获取chroma工程

git clone https://github.com/chroma-core/chroma.git

step2: 进入工程路径,构建容器镜像

cd chroma
docker-compose up -d --build

step3: 确认2个服务已经成功启动

在这里插入图片描述
step4: 确认chroma在docker容器中的IP地址,比如我的是 172.19.0.2

在这里插入图片描述

五、flowise使用教程

当你按照我上面的步骤,部署启动好了服务,访问
http://localhost:3008/

注意!

  1. 启动服务,如果用openai的官方key,需要本地科学上网,否则对话会擦红石
  2. 如下内容,有很多场景可以实现,比如pdf文件识别,多组件构成,必要条件你得掌握langchain
    才能实现复杂功能开发

(1)关于flowise编排说明

flowise不同于传统的编排,比如从左往右进行,开始结束很明显

所有的链接及其开发需要有一定的langchain认知能力,可以参考我langchain专栏的文章,举例

对于创建一个chain,其实可以遵循函数开发原理

关于langchain官方文档:https://python.langchain.com/docs/get_started/introduction

![在这里插入图片描述](https://img-blog.csdnimg.cn/fc6c2bb1f1d04da5a65707a7df4458fc.png

(2)flowise 面板介绍

在这里插入图片描述

(3)简单的LLM问答

在这里插入图片描述

(4)文件问答

在这里插入图片描述

(5)向量数据库问答

在实现这个flow时候,需要提前将数据向量化到数据库,准备任意QA文档,我这里50个历史问答

在这里插入图片描述

step1 将文档构建到向量数据库

from langchain.embeddings import OpenAIEmbeddings, SentenceTransformerEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.document_loaders import Docx2txtLoader
import chromadb
import os
import uuidos.environ["OPENAI_API_KEY"] = '你的OpenAikey'# 加载器
loader = Docx2txtLoader(r'C:\Users\wenwenc9\Desktop\历史问题50问答.docx')
documents_source = loader.load()# 切割文件
text_splitter = RecursiveCharacterTextSplitter(chunk_size=50, chunk_overlap=20)
documents = text_splitter.split_documents(documents_source)将文件向量到数据库
client = chromadb.HttpClient(host='localhost', port=8000)
# embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
embedding_function = OpenAIEmbeddings(model="text-embedding-ada-002")# 通过langchain使用向量库
Chroma = Chroma(client=client,embedding_function=embedding_function,
)try:collection = client.create_collection(name='history-qa', embedding_function=embedding_function)print("不存在集合,创建数据库")# 为每个文档创建一个文档id,并且将文档id,元数据,文档内容添加到数据库# 为文档增加iddoc_ids = [str(uuid.uuid4()) for _ in documents]for i, _doc in enumerate(documents):_id = doc_ids[i]_doc.metadata['doc_id'] = _id  # 构建文档序号属性Chroma._collection = collection# 存储文档Chroma.add_documents(documents)
except Exception as e:collection = client.get_collection(name='history-qa', embedding_function=embedding_function)Chroma._collection = collectionprint('已经存在集合,进行查询')res = Chroma.as_retriever().invoke("历史最早的纸币是那个国家发行的?")
print(res)

step2:验证是否成功构建生成向量

import osos.environ["OPENAI_API_KEY"] = '你的key'import chromadbfrom langchain.embeddings import OpenAIEmbeddingsembedding_function = OpenAIEmbeddings()client = chromadb.HttpClient(host='localhost', port=8000)# 按名称从现有集合中获取集合对象。 如果未找到,将引发异常。
collection = client.get_collection(name="history-qa")
res = collection.peek(2)  # 返回集合中前 2 项的列表
print(res)

在这里插入图片描述

step4 在flowise服务构建 flow编排

在这里插入图片描述

(6)网页采集问答

目标地址

https://baike.baidu.com/item/%E8%83%8C%E5%BD%B1/2663983?fr=ge_ala
在这里插入图片描述

这篇关于低代码!小白用10分钟也能利用flowise构建AIGC| 业务问答 | 文本识别 | 网络爬虫的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410556

相关文章

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子