微信小程序和H5端对接dify ai接口

微信小程序和H5端对接dify ai接口

用的uniapp开发的

H5端是基于SSE协议开发的

要安装

    import {
        fetchEventSource
    } from '@microsoft/fetch-event-source';
/*#ifdef H5*/
                const eventSource = new fetchEventSource('/v1/chat-messages', {
                    method: 'POST',
                    headers: {
                        'Authorization': 'Bearer app-xxx',
                        'Content-Type': 'application/json',
                    },
                    body: JSON.stringify({
                        inputs: {},
                        query: message, // 替换为实际的查询内容
                        response_mode: 'streaming', // 启用流式响应
                        conversation_id: that.conversationId,
                        user: "abc-123"
                    }),
                    onopen(response) {
                        // 建立连接
                        console.log(response, "open");
                        if (response.ok) {
                            console.log("成功建立连接");
                        } else {
                            throw new Error(JSON.stringify(response));
                        }
                    },
                    onmessage(event) {
                        try {
                            const jsonData = JSON.parse(event.data);
                            if (jsonData.event === "message") {
                                //that.loading = false; // 隐藏加载图标
                                that.conversationId = jsonData.conversation_id;
                                // 如果返回的答案中有新的文字,逐字显示
                                if (jsonData.answer) {
                                    // 追加接收到的新文字
                                    that.displayedText += jsonData.answer;
                                    // 继续显示新的文字
                                    //that.startTyping(jsonData.message_id);
                                }
                            }
                            console.log("that.displayedText", that.displayedText);

                            if (jsonData.event === "message_end") {
                                that.loading = false; // 隐藏加载图标
                                that.arr.push({
                                    answer: that.displayedText,
                                    message_id: jsonData.message_id,
                                });
                                that.displayedText = "";
                                console.log("that.arr", that.arr);
                            }
                        } catch (error) {
                            console.error("数据解析错误:", error);
                        }
                    },
                    onclose() {
                        console.log("关闭链接");
                    },
                    onerror(err) {
                        console.error("发生错误", err);
                        throw err;
                    },
                    openWhenHidden: true, // 实时通知
                });
                /*#endif*/

                /*#ifdef MP-WEIXIN*/
                // 微信小程序端执行的逻辑

                const requestTask = uni.request({
                    url: '/v1/chat-messages',
                    timeout: 15000,
                    responseType: 'text',
                    method: 'POST',
                    header: {
                        'Authorization': 'Bearer app-xxx',
                        'Content-Type': 'application/json',
                    },
                    enableChunked: true, //配置这里
                    data: JSON.stringify({
                        inputs: {},
                        query: message, // 替换为实际的查询内容
                        response_mode: 'streaming', // 启用流式响应
                        conversation_id: that.conversationId,
                        user: "abc-123"
                    }),
                    success: response => {
                        console.log(response)
                    },
                    fail: error => {}
                })
                requestTask.onHeadersReceived(function(res) {
                    console.log(res.header);
                });
                // 这里监听消息
                requestTask.onChunkReceived(function(res) {
                    let decoder = new TextDecoder('utf-8')
                    let text = decoder.decode(new Uint8Array(res.data))
                    console.log(text)
                    try {
                        // 使用正则表达式去除前缀 "data: "
                        const jsonString = text.replace(/^data:\s*/, '');
                        const jsonData = JSON.parse(jsonString);
                        if (jsonData.event === "message") {
                            //that.loading = false; // 隐藏加载图标
                            that.conversationId = jsonData.conversation_id;
                            // 如果返回的答案中有新的文字,逐字显示
                            if (jsonData.answer) {
                                // 追加接收到的新文字
                                that.displayedText += jsonData.answer;
                                // 继续显示新的文字
                                //that.startTyping(jsonData.message_id);
                            }
                        }
                        console.log("that.displayedText", that.displayedText);

                        if (jsonData.event === "message_end") {
                            that.loading = false; // 隐藏加载图标
                            that.arr.push({
                                answer: that.displayedText,
                                message_id: jsonData.message_id,
                            });
                            that.displayedText = "";
                            console.log("that.arr", that.arr);
                        }
                    } catch (error) {
                        console.error("数据解析错误:", error);
                    }

                })
                /*#endif*/

基于Docker安装minio【保姆级教程、内含图解】

目录

  1. 拉取镜像
  2. 创建挂载点目录
  3. 创建minio容器
  4. 启动minio容器
  5. 测试minio是否安装成功

    minio官网:MinIO | High Performance, Kubernetes Native Object Storage

  6. 拉取镜像

    代码:

    docker pull minio/minio

    实例:

     [root@localhost howlong]# docker pull minio/minio
     Using default tag: latest
     latest: Pulling from minio/minio
     5329d7039f25: Pull complete 
     2b3707fd3b24: Pull complete 
     5206d1e7147f: Pull complete 
     33feab5fa1c5: Pull complete 
     5cd9e0eb62e5: Pull complete 
     34f92c74bdaf: Pull complete 
     Digest: sha256:15d762671436cf383f9cc6667260e6c1298c25c8d7009576f709c3823e4a494d
     Status: Downloaded newer image for minio/minio:latest
     docker.io/minio/minio:latest
     [root@localhost howlong]# 
    
  7. 创建挂载点目录

    代码:

     mkdir -p /usr/local/minio/config
     mkdir -p /usr/local/minio/data
    
  8. 创建minio容器

         注意:这里设置了minio客户端的账号和密码,其密码不可少于8位
    
         账号:admin
    
         密码:admin123
    

    代码:

     docker run -d \
     --name minio \
     -p 9000:9000 \
     -p 9001:9001 \
     --privileged=true \
     -e "MINIO_ROOT_USER=admin" \
     -e "MINIO_ROOT_PASSWORD=admin123" \
     -v /usr/local/minion/data:/data \
     -v /usr/local/minio/config:/root/.minio \
     minio/minio server \
     --console-address ":9000" \
     --address ":9001" /data
    

    实例:

     [root@localhost howlong]# docker run -d \
     --name minio \
     -p 9000:9000 \
     -p 9001:9001 \
     --privileged=true \
     -e "MINIO_ROOT_USER=admin" \
     -e "MINIO_ROOT_PASSWORD=admin123" \
     -v /usr/local/minion/data:/data \
     -v /usr/local/minio/config:/root/.minio \
     minio/minio server \
     --console-address ":9000" \
     --address ":9001" /data
     93c98998d5cbc51c6f208cfe676adf495d4931469aad1d9756e19dca3fd4b66a
    
  9. 启动minio容器

    代码:

    docker start minio

    实例:

     [root@localhost howlong]# docker start minio
     minio
     [root@localhost howlong]#
    
  10. 测试minio是否安装成功

          访问虚拟机地址+端口号,前面配置minio 的端口号为:9000
    

    例如:

    http://192.168.27.129:9000

         账号:admin
    
         密码:admin123
    

Docker 安装 Nginx 容器 (完整详细版)

1、寻找Nginx镜像

2、下载Nginx镜像
命令 描述
docker pull nginx 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest )
docker pull nginx:xxx 下载指定版本的Nginx镜像 (xxx指具体版本号)

 检查当前所有Docker下载的镜像

docker images

3、创建Nginx配置文件

启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)
之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件
当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建 , 这并不是我们想要的结果 。

# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

容器中的nginx.conf文件和conf.d文件夹复制到宿主机

# 生成容器
docker run --name nginx -p 9001:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

4、创建Nginx容器并运行

Docker 创建Nginx容器

# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
 
# 删除正在运行的nginx容器
docker rm -f nginx

docker run \
-p 9002:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest

命令 描述
–name nginx 启动容器的名字
-d 后台运行
-p 9002:80 将容器的 9002(后面那个) 端口映射到主机的 80(前面那个) 端口
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 挂载nginx.conf配置文件
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d 挂载nginx配置文件
-v /home/nginx/log:/var/log/nginx 挂载nginx日志文件
-v /home/nginx/html:/usr/share/nginx/html 挂载nginx内容
nginx:latest 本地运行的版本
\ shell 命令换行

单行模式

docker run -p 9002:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest

5、结果检测

6、修改内容进行展示

# 重启容器
docker restart nginx

Ubuntu 20.04安装minio并设置自启动

https://blog.csdn.net/qq_42327090/article/details/139657438

一、下载

将minio软件下载安装到指定文件/usr/local/Minio/minio,并赋予可执行的权限

wget -O /usr/local/Minio/minio https://dl.minio.io/server/minio/release/linux-amd64/minio
 
sudo chmod +x /usr/local/Minio/minio

二、运行minio

 创建minio的存储文件夹

sudo mkdir /minio

执行命令,启动minio服务

    cd /usr/local/Minio
     
    sudo ./minio server /minio

浏览器中访问:http://127.0.0.1:9000,并输入用户名:minioadmin,密码:minioadmin,即可成功登录。 此时可能已经发现网页上的地址重定向到了http://127.0.0.1:42575/login 如果我们不想每次启动都要重定向一个随即的端口,那么我们启动的时候需要指定webUI的端口,将刚才启动的服务停掉,ctrl+c即可,然后执行如下命令

sudo ./minio server --address :9000 --console-address :9001  /minio

此时,我们指定了控制台的端口为9001,此时再访问http://127.0.0.1:9000 或者访问http://127.0.0.1:9001 都可以访问。

三、配置自启动

如果不配置自启动,每次我们关机重启之后都要手动的去执行启动命令,就比较麻烦,所以我们就需要将Minio配置为系统服务,这样在系统重启的时候就会自动启动。

1、编写配置文件

为了统一管理minio的配置参数,我们可以将参数配置在一个文件中方便管理。在/etc/default文件夹下创建minio配置文件

sudo gedit /etc/default/minio

将如下内容粘贴进去,并保存。

# 指定数据存储目录(注意:这个目录要存在且拥有相对应的权限)
# MINIO_VOLUMES="/minio"
 
# 监听端口
# MINIO_OPTS="--address :9000 --console-address :9001"
 
# 默认的用户名和密码
MINIO_ROOT_USER="minioadmin"
MINIO_ROOT_PASSWORD="minioadmin"
 
# 区域值,标准格式是“国家-区域-编号”,
MINIO_REGION="cn-north-1"

2、编写服务文件

创建minio.service服务文件,并写入配置信息

sudo gedit /usr/lib/systemd/system/minio.service

    将如下内容粘贴进去:

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/Minio/minio
[Service]
WorkingDirectory=/usr/local/
 
#ProtectProc=invisible
 
# 指向3.1节中的配置文件
EnvironmentFile=/etc/default/minio
 
# ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/Minio/minio server --address :9000 --console-address :9001 /minio
 
# Let systemd restart this service always
Restart=always
 
# Specifies the maximum (1M) file descriptor number that can be opened by this process
LimitNOFILE=1048576
 
# Specifies the maximum number of threads this process can create
TasksMax=infinity
 
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
SuccessExitStatus=0
 
[Install]
WantedBy=multi-user.target
Alias=minio.service

保存即可。

3、刷新配置,使服务生效

# 重新加载服务配置文件,使服务生效
sudo systemctl daemon-reload
 
# 将服务设置为开机启动
sudo systemctl enable minio
 
# 服务立即启动
sudo systemctl start minio
 
# 查看minio服务当前状态
systemctl status minio

执行上面之后,显示结果如下

如此,就算系统关机重启,minio也会随系统自动启动,不需要手动启动了。