WEBVTT

00:00:00.000 --> 00:00:11.000
Hello,大家好,我是周日金。AI這兩年離咱們普通用戶越來越近。現在甚至不需要單獨買一台服務器,我們就可以直接把手頭閒置在Mac,變成一台屬於自己的本地AI服務器。

00:00:11.000 --> 00:00:27.000
這次視頻我會從零開始帶大家把Olama、OpenWeb UI、REG、OCR、Whisper.cpp和N8N一步步串起來。這套方案的重點就是,模型和大部分數據都運行在自己本地的Mac上,也不要求特別高的配置。

00:00:27.000 --> 00:00:28.800
如果大家对这类玩法感兴趣

00:00:28.800 --> 00:00:32.640
后面还可以继续带大家折腾本地图片和视频生成

00:00:32.640 --> 00:00:35.960
本地AI编程以及把AI介入Home Assistant

00:00:35.960 --> 00:00:38.520
通过自然语言控制家里的智能设备

00:00:38.520 --> 00:00:41.840
视频正式开始前先求一波一进三连加关注支持一下

00:00:41.840 --> 00:00:44.920
这样以后有新的教程更新也能第一时间受到推送

00:00:44.920 --> 00:00:45.940
非常感谢

00:00:45.940 --> 00:00:49.280
接下来我们就从我的这台Mac mini开始

00:00:54.400 --> 00:00:55.920
在开始下载模型之前

00:00:55.920 --> 00:00:58.920
之前我们需要先在mac上安装olama

00:00:58.920 --> 00:01:03.920
你可以把它理解为让普通用户可以在本地运行AI大模型的运行环境

00:01:03.920 --> 00:01:06.920
直接前往olama的官网下载对应的安装包

00:01:06.920 --> 00:01:09.920
然后拖动到macOS用程式文件夹就可以了

00:01:09.920 --> 00:01:12.920
平时使用chatgpt cloud这类AI服务时

00:01:12.920 --> 00:01:14.920
模型都是运行在云端服务器上

00:01:14.920 --> 00:01:21.920
而olama要做的事情就是把像deepseek签问lama这类开源模型下载安装到你的mac上

00:01:21.920 --> 00:01:24.920
让他们直接利用本机的cpu和gpu运行

00:01:24.920 --> 00:01:27.160
安装好Olama并打开之后

00:01:27.160 --> 00:01:28.520
下一步就是下载模型

00:01:28.520 --> 00:01:30.000
不过这里需要注意啊

00:01:30.000 --> 00:01:32.580
本地AI和ChatGPT这类云竿的模型

00:01:32.580 --> 00:01:33.340
最大的区别

00:01:33.340 --> 00:01:35.800
就是模型大小会直接影响运行体验

00:01:35.800 --> 00:01:38.620
所以不能盲目追求越大的模型就越好

00:01:38.620 --> 00:01:41.540
我这里使用的是一台M4入门款的Mac mini

00:01:41.540 --> 00:01:44.920
采用16GB的同一列存加256GB的固态硬盘

00:01:44.920 --> 00:01:47.300
确认Olama的服务在正常运行后

00:01:47.300 --> 00:01:49.120
我们在MacOS的中段App中

00:01:49.120 --> 00:01:50.420
输入这三条命令

00:01:50.420 --> 00:01:52.260
它们分别负责不同的功能

00:01:52.260 --> 00:01:53.880
第一个是大约模型

00:01:53.880 --> 00:01:55.700
也就是本地AI的大脑

00:01:55.700 --> 00:01:56.760
负责日常聊天

00:01:56.760 --> 00:01:57.500
内容生成

00:01:57.500 --> 00:01:58.740
总业资料等任务

00:01:58.740 --> 00:02:00.960
其中4B代表40亿参数

00:02:00.960 --> 00:02:03.680
Kill4KM代表经过4bit量化

00:02:03.680 --> 00:02:05.640
可以在降低模型状的同时

00:02:05.640 --> 00:02:07.180
保持不错的运行效果

00:02:07.180 --> 00:02:09.680
是目前比较适合普通Mac的选择

00:02:09.680 --> 00:02:11.440
第二个是向量模型

00:02:11.440 --> 00:02:12.840
主要用于知识库检索

00:02:12.840 --> 00:02:15.260
如果你以后想让AI读取自己的PDF

00:02:15.260 --> 00:02:16.580
文档视频稿件

00:02:16.580 --> 00:02:18.440
然后根据这些资料回答问题

00:02:18.440 --> 00:02:20.060
就需要通过Embedding模型

00:02:20.060 --> 00:02:22.180
先帮AI找到相关内容

00:02:22.180 --> 00:02:24.800
第三个是欧塞亚文字试园模型

00:02:24.800 --> 00:02:25.920
负责处理图片

00:02:25.920 --> 00:02:27.480
扫描版PDF等内容

00:02:27.480 --> 00:02:29.340
把图片里的文字提许出来

00:02:29.340 --> 00:02:31.320
再交给语言模型进行分析

00:02:31.320 --> 00:02:33.620
这里之所以选择千问的AR模型

00:02:33.620 --> 00:02:35.720
是因为千问是目前比较成熟的

00:02:35.720 --> 00:02:36.760
开源大模型之一

00:02:36.760 --> 00:02:39.360
对中文理解和中文生成比较友好

00:02:39.360 --> 00:02:41.420
其次是它提供的模型规格丰富

00:02:41.420 --> 00:02:43.700
从4B到更大的参数版本

00:02:43.700 --> 00:02:45.380
可以适配不同配置的Mac

00:02:45.380 --> 00:02:46.160
还有一个是

00:02:46.160 --> 00:02:48.200
它在欧拉玛里的支持比较完善

00:02:48.200 --> 00:02:50.020
安装和电用也都比较简单

00:02:50.020 --> 00:02:51.280
当然除了千问

00:02:51.280 --> 00:02:53.820
DeepSeq,Lama等模型也都可以运行

00:02:53.820 --> 00:02:56.100
大家可以根据自己的需求进行选择

00:02:56.100 --> 00:02:59.020
那至于不同的Mac应该选择多大的模型

00:02:59.020 --> 00:03:01.260
主要看新变性能和统一内存的大小

00:03:01.260 --> 00:03:04.460
8GB内存的Mac建议先从4B级别模型开始

00:03:04.460 --> 00:03:07.860
16GB内存运行4B会相对轻松

00:03:07.860 --> 00:03:11.340
也可以在实际内存压力云雪情况下尝试9B

00:03:11.340 --> 00:03:14.640
而24GB,32GB以及更高内存的Mac

00:03:14.640 --> 00:03:16.480
则可以继续尝试更大的规格

00:03:16.480 --> 00:03:20.180
但具体体验还会受到上下文长度和后台任务的影响

00:03:20.180 --> 00:03:21.520
这里需要注意啊

00:03:21.520 --> 00:03:23.400
模型标签不能随便改数字

00:03:23.400 --> 00:03:25.260
如果继续使用千万3.5

00:03:25.260 --> 00:03:26.940
目前Olama还提供9B

00:03:26.940 --> 00:03:29.080
27B 35B等更大规格

00:03:29.080 --> 00:03:31.120
具体名称一定以Olama模型库

00:03:31.120 --> 00:03:32.500
实际存在的标签为准

00:03:32.500 --> 00:03:35.160
那咱们还是先把本地AI服务器跑起来

00:03:35.160 --> 00:03:37.420
后续再根据实际需求升级模型

00:03:37.420 --> 00:03:39.680
接下来我们在Microsoft中的App中

00:03:39.680 --> 00:03:40.840
输入以下命令

00:03:40.840 --> 00:03:41.840
Olama List

00:03:41.840 --> 00:03:44.120
查看是否已经全部下载完成

00:03:44.120 --> 00:03:46.640
如果前面下载的模型都正常列出来

00:03:46.640 --> 00:03:47.960
就可以来简单试一下

00:03:47.960 --> 00:03:49.900
模型能不能在本地正常运行

00:03:49.900 --> 00:03:51.080
输入制传命令

00:03:51.080 --> 00:03:52.040
olama run

00:03:52.040 --> 00:03:52.900
千万3.5

00:03:52.900 --> 00:03:54.540
4b-q4km

00:03:54.540 --> 00:03:55.900
然后随便发一句话

00:03:55.900 --> 00:03:56.640
比如你好

00:03:56.640 --> 00:03:59.080
如果能正常给出回复就没问题了

00:03:59.080 --> 00:04:01.060
随后输入制传命令结束对话

00:04:01.060 --> 00:04:01.540
Bye

00:04:01.540 --> 00:04:03.660
之后我们就可以停止运行

00:04:03.660 --> 00:04:04.620
以释放资源

00:04:04.620 --> 00:04:05.780
输入制传命令

00:04:05.780 --> 00:04:06.820
olama stop

00:04:06.820 --> 00:04:07.640
千万3.5

00:04:07.640 --> 00:04:09.080
4b-q4km

00:04:09.080 --> 00:04:10.680
然后再输入制传命令

00:04:10.680 --> 00:04:11.480
olama ps

00:04:11.480 --> 00:04:14.140
查看这个AR大模型是否人在运行

00:04:14.140 --> 00:04:15.460
此时应该为空

00:04:15.460 --> 00:04:18.200
那么就说明我们的大模型已经没有在运行了

00:04:18.200 --> 00:04:20.320
接下来咱们就要开始准备部署

00:04:20.320 --> 00:04:22.360
家庭局网AI对话界面了

00:04:22.360 --> 00:04:30.980
前面我们已经通过Olama把AI模型运行在Mac上

00:04:30.980 --> 00:04:33.500
但是目前还需要通过中端的进行操作

00:04:33.500 --> 00:04:35.280
对于日常使用来说不太方便

00:04:35.280 --> 00:04:37.200
所以接下来我们就要给它搭建一个

00:04:37.200 --> 00:04:39.060
类似ChatGP的网页界面

00:04:39.060 --> 00:04:40.720
这里使用OpenWebUI

00:04:40.720 --> 00:04:43.240
也就是让Olama负责运行AI模型

00:04:43.240 --> 00:04:45.620
OpenWebUI负责提供交互界面

00:04:45.620 --> 00:04:46.820
那部署完成后

00:04:46.820 --> 00:04:49.300
家里的手机平板电脑都可以通过浏览器

00:04:49.300 --> 00:04:50.340
访问这台Mac mini

00:04:50.340 --> 00:04:52.300
直接使用自己的本地AI

00:04:52.300 --> 00:04:54.600
能考虑到中国大陆用户的网络环境

00:04:54.600 --> 00:04:56.920
这里直接通过Python安装OpenWeb UI

00:04:56.920 --> 00:04:59.440
同时Olama继续只监听本机地址

00:04:59.440 --> 00:05:00.920
不会直接暴露到网络中

00:05:00.920 --> 00:05:04.160
本教程固定使用OpenWeb UI 0.11.0版本

00:05:04.160 --> 00:05:06.580
不使用latest或滚动更新版本

00:05:06.580 --> 00:05:09.380
避免版本变化导致操作流程不一炸

00:05:09.380 --> 00:05:11.000
首先准备Python环境

00:05:11.000 --> 00:05:13.020
如果你的Mac已经安装Homebrew

00:05:13.020 --> 00:05:16.120
则可以输入brew install python at 3.11

00:05:16.120 --> 00:05:17.540
如果没有安装Homebrew

00:05:17.540 --> 00:05:22.200
也可以直接向Python官方网站下载安装Python 3.1对应的MicroOS安装包

00:05:22.200 --> 00:05:24.660
后面如果会继续折腾这类工具

00:05:24.660 --> 00:05:26.120
建议提前装好Homebrew

00:05:26.120 --> 00:05:27.840
管理和升级会方便不少

00:05:27.840 --> 00:05:30.540
接下来创建OpenWeb UI独立运行环境

00:05:30.540 --> 00:05:32.840
避免影响系统里的其他Python项目

00:05:32.840 --> 00:05:35.020
后续相关代码我不再一一进行解释

00:05:35.020 --> 00:05:38.060
如果有看不懂可以查看代码上方的文本注释

00:05:46.120 --> 00:05:52.640
然后通过轻滑镜像安装OpenWeb UI

00:05:52.640 --> 00:06:03.800
安装完成后

00:06:03.800 --> 00:06:06.040
第一次启动建议只允许本机访问

00:06:06.040 --> 00:06:07.940
先完成账号和安全设置

00:06:07.940 --> 00:06:09.300
等命令跑起来以后

00:06:09.300 --> 00:06:10.880
不要关闭这个中端窗口

00:06:10.880 --> 00:06:13.400
因为OpenWeb UI的服务就运行在这里

00:06:13.400 --> 00:06:17.240
然后流量器打开

00:06:17.240 --> 00:06:18.760
127.0.0.1

00:06:18.760 --> 00:06:19.580
网号3000

00:06:19.580 --> 00:06:21.700
第一次进入需要创建账号

00:06:21.700 --> 00:06:23.840
第一个账号就会自动成为管理员

00:06:23.840 --> 00:06:28.460
进入管理后台后

00:06:28.460 --> 00:06:29.940
前往设置身份验证

00:06:29.940 --> 00:06:31.460
把newsign apps关闭

00:06:31.460 --> 00:06:33.460
也就是不允许新用户自由注册

00:06:33.460 --> 00:06:35.800
同时暂时不要安装来源不明的

00:06:35.800 --> 00:06:37.980
第三方Tools,Functions或Pipelines

00:06:37.980 --> 00:06:39.660
接着就可以在流量器打开

00:06:39.660 --> 00:06:40.980
127.0.1

00:06:40.980 --> 00:06:42.440
网号11434

00:06:42.440 --> 00:06:44.480
-API-version

00:06:44.480 --> 00:06:46.880
确认Olama本地API正常响应

00:06:46.880 --> 00:06:48.120
回到OpenWeb UI

00:06:48.120 --> 00:06:49.640
再检查之前下载的

00:06:49.640 --> 00:06:51.760
千万3.5 4B-TU4KM

00:06:51.760 --> 00:06:53.780
是否已经出现在母型列表当中

00:06:53.780 --> 00:06:54.880
确认没有问题后

00:06:54.880 --> 00:06:57.060
在中端APP中按Ctrl-C

00:06:57.060 --> 00:06:58.420
停止OpenWeb UI

00:06:58.420 --> 00:07:00.160
接下来开放家庭局域网

00:07:00.160 --> 00:07:02.020
实际在系统设置网络中

00:07:02.020 --> 00:07:03.720
查看Mac mini的局域网IP

00:07:03.720 --> 00:07:06.040
实际操作需要替完成你自己的IP

00:07:06.040 --> 00:07:07.860
重新启动OpenWeb UI

00:07:07.860 --> 00:07:14.340
现在Mac mini本机可以继续访问127.0.0.1

00:07:14.340 --> 00:07:15.080
网号3000

00:07:15.080 --> 00:07:17.960
并使用刚才创建的管理员账号进行登录

00:07:17.960 --> 00:07:19.700
通过家庭网络里的手机

00:07:19.700 --> 00:07:21.880
电脑则可以通过Mac mini.ipd设计

00:07:21.880 --> 00:07:23.540
加段稿号3000来访问

00:07:23.540 --> 00:07:25.500
同样使用刚才的账号来登录

00:07:25.500 --> 00:07:26.900
这时候可以随便问你问题

00:07:26.900 --> 00:07:29.380
看看局域网访问和模型交用是否正常

00:07:29.380 --> 00:07:31.040
如果其他设备都无法打开

00:07:31.040 --> 00:07:32.360
依次可以清查几个地方

00:07:32.360 --> 00:07:33.600
最后提醒一下

00:07:33.600 --> 00:07:35.640
这里搭建的家庭局域网AI服务器

00:07:35.640 --> 00:07:37.400
不会把服务暴露到公网

00:07:37.400 --> 00:07:39.600
因此不需要进行路由器短口转发

00:07:39.600 --> 00:07:42.540
也不要直接把OpenWeb AI开放到互联网环境

00:07:42.540 --> 00:07:45.000
而这样配置后保持终端App不关闭

00:07:45.000 --> 00:07:46.700
AI模式运行在自己的Mac上

00:07:46.700 --> 00:07:48.940
数据只在家庭网络里进行流转

00:07:48.940 --> 00:07:52.860
同时手机平板和电脑都可以共享这一台本地AI服务器

00:07:58.028 --> 00:08:04.368
前面OpenWeb UI已经可以这张访问了,接下来我们再给整个家庭AI服务器建立一个统一的API接口。

00:08:04.368 --> 00:08:06.948
这样以后不管是N8N手机快捷指令

00:08:06.948 --> 00:08:09.348
还是其他支持OpenAI API的程序

00:08:09.348 --> 00:08:11.208
都统一连接OpenWeb UI

00:08:11.208 --> 00:08:13.108
不需要直接访问底层的奥拉玛

00:08:13.108 --> 00:08:14.148
这样的好处是

00:08:14.148 --> 00:08:17.808
模型、照顽和权限都可以在OpenWeb UI这一层统一管理

00:08:17.808 --> 00:08:19.048
后面更换模型时

00:08:19.048 --> 00:08:21.088
也不用重新修改每一个应用

00:08:21.088 --> 00:08:22.608
实际上咱们回到OpenWeb UI

00:08:22.608 --> 00:08:25.068
点击左下角头像依次进入设置

00:08:25.068 --> 00:08:27.568
身份验证找到API密钥并打开

00:08:27.568 --> 00:08:30.188
如果界面提供API密钥端点限制

00:08:30.188 --> 00:08:31.128
也一并开启

00:08:31.128 --> 00:08:32.488
然后填写这个

00:08:32.488 --> 00:08:37.368
这样生成的key就只允许访问模型列表和聊天接口

00:08:37.368 --> 00:08:39.328
接下来进入账号API MIAO

00:08:39.328 --> 00:08:42.048
点击右侧的显示创建新的API MIAO

00:08:42.048 --> 00:08:44.368
生成MIAO通常会以SK开头

00:08:44.368 --> 00:08:47.348
这个MIAO相当于访问我们家庭iF5系的密码

00:08:47.348 --> 00:08:49.328
不要直接公开或者分享出去

00:08:49.328 --> 00:08:52.648
如果后面准备长期让N8N这类的自动化工具使用

00:08:52.648 --> 00:08:55.148
建议专门创建一个普通的本地账号

00:08:55.148 --> 00:08:57.208
再用这个账号生成API MIAO

00:08:57.208 --> 00:08:59.388
不要长期使用管理员账号的MIAO

00:08:59.388 --> 00:09:02.048
因为MIAO会继续创建这个账号的权限

00:09:02.048 --> 00:09:04.868
而且一个账号通常只保留一个API密钥

00:09:04.868 --> 00:09:06.968
接着我们来测试接口是否正常

00:09:06.968 --> 00:09:09.008
打开一个新的终端APP窗口

00:09:09.008 --> 00:09:12.328
把下面的命令中的SK换成刚才生成的密钥

00:09:12.328 --> 00:09:13.588
如果接口正常

00:09:13.588 --> 00:09:16.888
终端会访问当前OpenWeb UI可以调用的模型列表

00:09:16.888 --> 00:09:20.308
这里可以顺便记一下返回结果里模型队的真实ID

00:09:20.308 --> 00:09:23.488
因为后面其他地方对用AI时就需要填写这个名称

00:09:23.488 --> 00:09:25.528
接下来再来测试聊天接口

00:09:25.528 --> 00:09:28.908
同样的记得把SK开头的这串换成刚才生成的密钥

00:09:28.908 --> 00:09:31.508
而Model后面需要填写刚才模型列表里面

00:09:31.508 --> 00:09:32.648
实际反规的ID

00:09:32.648 --> 00:09:35.108
如果你下载的是其他签问或者其他模型

00:09:35.108 --> 00:09:36.508
就替完成对应的模型

00:09:36.508 --> 00:09:39.168
如果最后反规Json你能够看到API正常

00:09:39.168 --> 00:09:41.748
就说明这一套接口已经可以正常使用了

00:09:42.008 --> 00:09:43.848
签问3.5在开启思考时

00:09:43.848 --> 00:09:45.248
反规内容里可能还会出现

00:09:45.248 --> 00:09:47.108
Reasoning Content这一类字段

00:09:47.108 --> 00:09:48.168
这是正常现象

00:09:48.408 --> 00:09:50.608
到这里我们就相当于给整个家庭

00:09:50.608 --> 00:09:52.448
AI服务器建了一个统一的入口

00:09:52.748 --> 00:09:55.008
最底层人是Olama负责运行模型

00:09:55.168 --> 00:09:56.508
上面的OpenWeb UI

00:09:56.508 --> 00:09:58.208
统一管理模型和API

00:09:58.348 --> 00:10:00.948
在网上则可以接N8N手机快点指令

00:10:00.948 --> 00:10:01.988
或者其他应用

00:10:01.988 --> 00:10:03.668
后面不管增加多少个客户端

00:10:03.668 --> 00:10:05.468
都尽量连接OpenWeb UI

00:10:05.468 --> 00:10:07.828
而不是让每台设备直接访问欧拉玛

00:10:07.828 --> 00:10:09.628
整个架构会更容易管理

00:10:14.628 --> 00:10:17.588
前面我们已经把本地AI和聊天的API都搭好了

00:10:17.588 --> 00:10:20.188
接下来就再补上一个非常熟能功能

00:10:20.188 --> 00:10:21.428
Cell文档知识库

00:10:21.428 --> 00:10:22.748
也就是REG

00:10:22.748 --> 00:10:23.948
REG可以列成

00:10:23.948 --> 00:10:25.508
先从你的资料里找内容

00:10:25.508 --> 00:10:27.068
再交给AI声称回答

00:10:27.068 --> 00:10:28.748
这样以后不管是自己的PDF

00:10:28.748 --> 00:10:29.468
说明书

00:10:29.468 --> 00:10:30.108
工作文档

00:10:30.108 --> 00:10:30.908
还是视频稿

00:10:30.908 --> 00:10:32.028
都可以放进知识库

00:10:32.028 --> 00:10:34.268
让AI尽量根据这些资料来回答

00:10:34.268 --> 00:10:36.248
而不是只靠模型本身的记忆

00:10:36.248 --> 00:10:38.988
首先进入OpenWeb UI试试里的文档页面

00:10:38.988 --> 00:10:40.888
轻入模型引擎选择Olama

00:10:40.888 --> 00:10:42.248
API MIO可以留空

00:10:42.248 --> 00:10:44.668
地址填写127.0.0.1

00:10:44.668 --> 00:10:46.028
冒号11434

00:10:46.028 --> 00:10:47.108
轻入模型输入

00:10:47.108 --> 00:10:48.828
我们在视频一开始就下载好的

00:10:48.828 --> 00:10:50.888
轻入3-embedding0.6b

00:10:50.888 --> 00:10:52.448
而这里顺便解释一下

00:10:52.448 --> 00:10:53.868
这个模型不负责聊天

00:10:53.868 --> 00:10:55.288
它的工作是把文档

00:10:55.288 --> 00:10:57.308
转完成便于检索的向量数据

00:10:57.308 --> 00:10:58.508
只要你提问以后

00:10:58.508 --> 00:10:59.728
系统才能快速找到

00:10:59.728 --> 00:11:01.148
和问题最相关的资料

00:11:01.148 --> 00:11:03.288
其他参数可以先按照这一套来设置

00:11:03.288 --> 00:11:04.628
大部分是我认的

00:11:04.628 --> 00:11:06.388
这些参数主要是在减速效果

00:11:06.388 --> 00:11:07.668
和上下文本占用之间

00:11:07.668 --> 00:11:09.208
做一个比较稳妥的平衡

00:11:09.208 --> 00:11:10.748
比如快大小可以列列成

00:11:10.748 --> 00:11:12.668
每次把文档切成多大片段

00:11:12.668 --> 00:11:14.808
快重叠则是在相邻片段之间

00:11:14.808 --> 00:11:16.008
保留的部分重复内容

00:11:16.008 --> 00:11:17.848
避免一句话刚好被重点切断

00:11:17.848 --> 00:11:19.448
TableK代表每次提问

00:11:19.448 --> 00:11:21.508
最多取回多少个相关片段

00:11:21.508 --> 00:11:22.968
这里先设置为3

00:11:22.968 --> 00:11:24.188
并不是越大越好

00:11:24.188 --> 00:11:25.568
因为塞进太多资料

00:11:25.568 --> 00:11:27.988
反而会占模型有限的上下文空间

00:11:27.988 --> 00:11:30.268
接下来我们创建一个非常简单的测试文件

00:11:30.268 --> 00:11:32.728
方便确认RIG是否真的正常工作

00:11:32.728 --> 00:11:35.848
用任意文本编定器新建一个TXT文本

00:11:35.848 --> 00:11:38.688
如果你用的是MicroOS自带的文本编辑App

00:11:38.688 --> 00:11:40.828
记得在菜单里选择制作手文本

00:11:40.828 --> 00:11:42.588
比如里面写上这些内容

00:11:42.588 --> 00:11:45.448
然后保存为家庭AI测试资料.txt

00:11:45.448 --> 00:11:46.628
回到OpenWeb UI

00:11:46.628 --> 00:11:48.528
找到左侧边来的工作空间

00:11:48.528 --> 00:11:50.068
再点击顶部的知识库

00:11:50.068 --> 00:11:51.948
最后点击右上角的创建

00:11:51.948 --> 00:11:54.148
名称填写家庭AI测试库

00:11:54.148 --> 00:11:55.408
目标可以简单写真

00:11:55.408 --> 00:11:58.648
用于测试本地RIG文档检索和应用功能

00:11:58.648 --> 00:12:00.048
知识库创建完之后

00:12:00.048 --> 00:12:02.428
再点击右上角的加号选择上传文件

00:12:02.428 --> 00:12:04.948
把刚才的TXD文件上传进去

00:12:04.948 --> 00:12:07.768
后面也可以上传带有文字层的PDF

00:12:07.768 --> 00:12:09.688
DOCX或Markdown文档

00:12:09.688 --> 00:12:10.608
上传完之后

00:12:10.608 --> 00:12:12.328
在新兑化的聊天输入框里

00:12:12.328 --> 00:12:14.688
通过警号手动附加这个知识库

00:12:14.688 --> 00:12:16.728
而我这里为了教程演示方便

00:12:16.728 --> 00:12:17.668
先手动选择

00:12:17.668 --> 00:12:19.708
因为小参数模型主动判断

00:12:19.708 --> 00:12:21.868
什么时候动用知识库有时候不够稳定

00:12:21.868 --> 00:12:23.668
然后我们可以问一个问题

00:12:23.668 --> 00:12:25.088
只依据知识库回答

00:12:25.088 --> 00:12:27.648
项目代号和设备维护时间分配是什么

00:12:27.648 --> 00:12:28.808
请给出引用

00:12:28.808 --> 00:12:30.048
正常情况下

00:12:30.048 --> 00:12:30.968
耐心等待一会儿

00:12:30.968 --> 00:12:33.448
他应该回答项目代号是70

00:12:33.448 --> 00:12:36.368
设备维护时间是每月第一周六上午10点

00:12:36.368 --> 00:12:39.068
而且回答旁边能够看到对应的资料引用

00:12:39.068 --> 00:12:42.888
那么这套最基础的REG知识库就算大奖成功了

00:12:42.888 --> 00:12:43.988
不过这样配置下来

00:12:43.988 --> 00:12:46.088
你可能会发现还有一个地方容易踩坑

00:12:46.088 --> 00:12:47.868
如果你的PDF是扫描件

00:12:47.868 --> 00:12:50.048
本身没有可以复制的文字层

00:12:50.048 --> 00:12:52.008
就不要拿它来测试REG了

00:12:52.008 --> 00:12:54.788
因为知识库首先需要能够读取里面的文字

00:12:54.788 --> 00:12:56.048
才能进行后续的处理

00:12:56.048 --> 00:12:58.308
所以这种文件就需要先经过OCR

00:12:58.308 --> 00:13:01.328
把图片里的文字设备成TXC或者Markdown

00:13:01.328 --> 00:13:03.268
再上传到知识库来进行处理

00:13:03.268 --> 00:13:07.388
接下来我们就继续把本地OCR的功能也接进来

00:13:07.388 --> 00:13:14.788
前面我们已经让AI能够读取自的文档

00:13:14.788 --> 00:13:16.988
接下来再补上图片理解和OCR

00:13:16.988 --> 00:13:19.808
也就是让这台本地AI不只能读文字

00:13:19.808 --> 00:13:20.948
还可以看图片

00:13:20.948 --> 00:13:22.868
那这里先区分两个概念

00:13:22.868 --> 00:13:25.448
普通图片理解更适合看一张图里有什么

00:13:25.448 --> 00:13:26.708
界面再显示什么

00:13:26.708 --> 00:13:28.488
再顺便识别其中的文字

00:13:28.488 --> 00:13:31.488
OCR则更专注于把图片里的文字

00:13:31.488 --> 00:13:34.128
表格或者图表内容尽可能提取出来

00:13:34.128 --> 00:13:36.968
先在OpenWeb UI里选择我们前面使用的

00:13:36.968 --> 00:13:39.348
切纹3.5 4B-KL4KM

00:13:39.348 --> 00:13:40.808
如果你的Mac配置更高

00:13:40.808 --> 00:13:42.068
也可以用9B的版本

00:13:42.068 --> 00:13:44.908
上传一张同时包含物体和文字图片

00:13:44.908 --> 00:13:45.588
然后输入

00:13:45.588 --> 00:13:46.788
先描述画面内容

00:13:46.788 --> 00:13:48.528
再逐项提取可见文字

00:13:48.528 --> 00:13:50.488
不确定的部分标注为不确定

00:13:50.488 --> 00:13:51.588
不需要自信补圈

00:13:51.588 --> 00:13:53.728
这里可以分别拿产品包装

00:13:53.728 --> 00:13:54.708
软件界面截图

00:13:54.708 --> 00:13:55.468
中文表格

00:13:55.468 --> 00:13:59.168
或者已经做好隐私透明的发票和数据照片来测试一下

00:13:59.168 --> 00:14:01.128
这样可以比较直观的判断出

00:14:01.128 --> 00:14:02.948
模型到底是理解了图片内容

00:14:02.948 --> 00:14:05.388
还是只是把里面的文字给识别出来

00:14:05.388 --> 00:14:07.468
如果你出现类似我这样的提示

00:14:07.468 --> 00:14:09.148
就前往OpenWeb UI的设置

00:14:09.148 --> 00:14:09.708
模型

00:14:09.708 --> 00:14:11.548
找到刚才你前面使用的模型

00:14:11.548 --> 00:14:12.668
进入编辑界面

00:14:12.668 --> 00:14:15.728
找到高级参数下的NUM CTX OLAMA

00:14:15.728 --> 00:14:17.468
针对我16GB的Mac mini

00:14:17.468 --> 00:14:19.088
将数字更改为8192

00:14:19.088 --> 00:14:21.168
然后重复上的操作就可以了

00:14:21.168 --> 00:14:22.908
如果我们的目标不是理解图片

00:14:22.908 --> 00:14:25.368
而是尽可能把图片里的文字给提取出来

00:14:25.368 --> 00:14:28.528
就可以使用我们前面已经下载好的GLM OCR

00:14:28.528 --> 00:14:30.048
OCR模型运行前

00:14:30.048 --> 00:14:32.288
如果较大的千万模型还占着同一印寸

00:14:32.288 --> 00:14:33.648
先可以把它停掉

00:14:33.648 --> 00:14:35.848
接下来我们准备好需要识别图片

00:14:35.848 --> 00:14:37.468
放到一个统一的文件夹中

00:14:37.468 --> 00:14:38.988
比如我这个目录下

00:14:38.988 --> 00:14:41.248
对于我们Mac仿达中的用户文件夹

00:14:41.248 --> 00:14:42.228
AI-TEST

00:14:42.228 --> 00:14:44.628
这里手动新建一个TEST的文件夹就可以了

00:14:44.628 --> 00:14:46.628
对于需要识别不同的内容图片

00:14:46.628 --> 00:14:48.668
比如普通收据表格图表

00:14:48.668 --> 00:14:50.088
都可以使用不同的命令

00:14:50.088 --> 00:14:51.768
注意命令结尾的文件名

00:14:51.768 --> 00:14:53.768
需要换成你自己图片的文件名

00:14:53.768 --> 00:14:54.868
第一次测试时

00:14:54.868 --> 00:14:56.568
建议每次只处理一张图片

00:14:56.568 --> 00:14:58.928
先确认整套工作流能够稳定运行

00:14:58.928 --> 00:15:00.948
如果遇到扫描PDF

00:15:00.948 --> 00:15:03.888
也不用一开始就折腾完整的PDF解析工具

00:15:03.888 --> 00:15:05.288
最简单办法就是

00:15:05.288 --> 00:15:07.468
先用MicOS自带的预览打开PDF

00:15:07.468 --> 00:15:09.188
把其中页导成PN器

00:15:09.188 --> 00:15:11.488
再交给GLM OCR进行处理

00:15:11.488 --> 00:15:13.668
等确认单页OCR没问题后

00:15:13.668 --> 00:15:16.208
再考虑批量处理整份文档

00:15:16.208 --> 00:15:17.988
识别出来内容还可以继续利用

00:15:17.988 --> 00:15:19.968
保存成Tek-C或者Markdown

00:15:19.968 --> 00:15:22.568
再上传到我们上一节创建的知识库

00:15:22.568 --> 00:15:24.228
然后交给签问做摘要

00:15:24.228 --> 00:15:26.128
自端整理或者检索问答

00:15:26.128 --> 00:15:28.048
那么整个流程就传起来了

00:15:28.048 --> 00:15:30.988
如果OCR出现空白重复或者乱码

00:15:30.988 --> 00:15:32.288
可以先更新OLAMA

00:15:32.288 --> 00:15:34.268
然后每次只处理一张图片

00:15:34.268 --> 00:15:35.428
图片过大时

00:15:35.428 --> 00:15:39.048
可以把长辨锁到大约1600至2200像素

00:15:39.048 --> 00:15:41.148
并优先使用PNG或者GPG

00:15:41.148 --> 00:15:43.968
同时检查原图有没有明显模糊

00:15:43.968 --> 00:15:45.068
倾斜反光

00:15:45.068 --> 00:15:47.048
这些都会直接影响识别效果

00:15:47.048 --> 00:15:49.048
好

00:15:52.515 --> 00:16:04.255
那除了文字和图片之外,本DI还有一个非常实用的场景,就是处理视频和录音。比如把会议录音转成文字,把视频自动生成字幕,或者把自己的素材库快速整理成可搜索的文本。

00:16:04.255 --> 00:16:06.175
这里我们使用Whisper.cpp

00:16:06.175 --> 00:16:08.615
它是Whisper模型C++实现的

00:16:08.615 --> 00:16:10.615
针对Apple Silicon提供Mental加速

00:16:10.615 --> 00:16:13.355
可以直接利用Mac的GPU进行本地转写

00:16:13.355 --> 00:16:15.235
首先安装需要用到的工具

00:16:15.235 --> 00:16:17.835
FMMP1G负责处理音频格式

00:16:17.835 --> 00:16:20.155
Whisper.cpp负责语音识别

00:16:20.155 --> 00:16:22.095
如果你的Mac已经安装HomeBrew

00:16:22.095 --> 00:16:23.935
可以直接输入代码来进行安装

00:16:23.935 --> 00:16:25.675
如果你仍然没有安装HomeBrew

00:16:25.675 --> 00:16:28.295
安装Whisper.cpp可以走原码编译路线

00:16:28.295 --> 00:16:29.795
不过对于普通用户来说

00:16:29.795 --> 00:16:31.795
这一步会比HomeBrew更复杂一些

00:16:31.795 --> 00:16:34.355
还需要提前安装Xcode command line tools

00:16:34.355 --> 00:16:35.695
这里就不展开了

00:16:35.695 --> 00:16:36.615
安装完整后

00:16:36.615 --> 00:16:39.135
可以通过下面两个命令来确认是否正常

00:16:39.135 --> 00:16:40.735
接下来下载Whisper模型

00:16:40.735 --> 00:16:42.195
我这里选择的是这个

00:16:42.195 --> 00:16:44.555
这是一个支持中文和多语言的模型

00:16:44.555 --> 00:16:46.815
相比完整LARGE模型体积更小

00:16:46.815 --> 00:16:48.715
同时保留了比较好的转眼效果

00:16:48.715 --> 00:16:50.155
更适合Mac本地运行

00:16:50.155 --> 00:16:53.155
我们先创建存放模型和临时文件的目录

00:16:53.155 --> 00:16:54.195
然后下载模型

00:16:54.195 --> 00:16:57.235
下载完整后再计算一次SHA-1的值

00:16:57.235 --> 00:17:01.135
方便和Whisper.cpp模型文档公开的接应值进行核对

00:17:01.135 --> 00:17:03.535
模型准备好后就可以开始处理视频

00:17:03.535 --> 00:17:06.255
假设你的视频文件位于这个文件夹

00:17:06.255 --> 00:17:09.335
也就是MicroOS用户目录的影片文件夹当中

00:17:09.335 --> 00:17:12.075
大家根据自己的实际文件存储位置进行修改

00:17:12.075 --> 00:17:17.055
首先使用FMMP1G把视频里的音频转换成Whisper更适合处理的格式

00:17:17.055 --> 00:17:18.895
这些几个参数简单介绍一下

00:17:18.895 --> 00:17:21.255
VN表示去掉视频只保留音频

00:17:21.255 --> 00:17:24.635
AR16表示转换成16000Hz的采样率

00:17:24.635 --> 00:17:26.315
AC1表示单身道

00:17:26.315 --> 00:17:31.075
PCM-S16LE则是转换成Whisper更容易处理的WAV格式

00:17:31.075 --> 00:17:34.355
接下来运行Whisper同时生成文字稿和字幕文件

00:17:34.355 --> 00:17:37.255
-m用来指定我们前面下载的Whisper模型

00:17:37.255 --> 00:17:39.915
-f指定需要转写的音频文件

00:17:39.915 --> 00:17:43.495
-lzh告诉我们模型这段文字主要内容是中文

00:17:43.495 --> 00:17:47.355
-prompt则可以提前提供一些容易识别错误的中文名词

00:17:47.355 --> 00:17:50.395
比如Mac mini,Apple Silicon,Olama和签问

00:17:50.395 --> 00:17:51.935
对于科技类视频有其有用

00:17:51.935 --> 00:17:54.175
比如这里我就加上了我的Lookup Weekly

00:17:54.175 --> 00:18:00.955
后面的-otxt-oosrt和-ovtt分别让它同时生成TXT文字稿

00:18:00.955 --> 00:18:03.295
SRT字幕和VTT字幕

00:18:03.295 --> 00:18:06.775
最后通过-off指定输出文件的位置和名称

00:18:06.775 --> 00:18:09.035
运行完成后会生成这些文件

00:18:09.035 --> 00:18:10.895
其中TXT是纯文字稿

00:18:10.895 --> 00:18:13.435
适合后续交给AI总结或者整理

00:18:13.435 --> 00:18:15.335
SRT是常见的字幕格式

00:18:15.335 --> 00:18:16.815
可以直接导入紧接软件

00:18:16.815 --> 00:18:19.735
VTT是主要用于网页播放器的字幕

00:18:19.735 --> 00:18:21.035
如果是8GB的Mac

00:18:21.035 --> 00:18:24.795
也可以先尝试这里的Large-V3-Turbo Q50

00:18:24.795 --> 00:18:25.735
电话模型

00:18:25.735 --> 00:18:28.675
如果实际转写时内存压力较大或者速度不理想

00:18:28.675 --> 00:18:30.955
再换成体积更小的small多语言模型

00:18:30.955 --> 00:18:33.435
不要下载来带EAN后制的英文专用模型

00:18:33.435 --> 00:18:35.095
因为它只针对英文优化

00:18:35.095 --> 00:18:36.415
如果需要中文转写

00:18:36.415 --> 00:18:37.695
也不要开启翻译参数

00:18:37.695 --> 00:18:39.715
否则模型会把内容翻译成英文

00:18:39.715 --> 00:18:41.315
而不是保留原始的语言

00:18:41.315 --> 00:18:42.255
那到这里呢

00:18:42.255 --> 00:18:44.415
整套本地i工作流基本已经闭环

00:18:44.415 --> 00:18:46.015
视频和录音可以通过whisper

00:18:46.015 --> 00:18:46.755
转写文字

00:18:46.755 --> 00:18:48.215
再交给前文做总结

00:18:48.215 --> 00:18:48.655
整理

00:18:48.655 --> 00:18:50.855
最后也可以存入前面搭建的知识库

00:18:50.855 --> 00:18:53.155
实现自己本地的内容管理系统

00:18:53.155 --> 00:19:00.935
前面我们已经分别完成了本地云转写

00:19:00.935 --> 00:19:03.275
OpenWebUI API和签问调用

00:19:03.275 --> 00:19:05.855
这就是使用N8N搭建一条自动化工作流

00:19:05.855 --> 00:19:07.515
上传音频或者视频后

00:19:07.515 --> 00:19:09.415
N8N自动调用Whisper来转写

00:19:09.415 --> 00:19:11.755
再把转写稿交给签问来整理

00:19:11.755 --> 00:19:15.075
最后返回摘要提纲标题和症结建议

00:19:15.075 --> 00:19:16.835
不需要每次手动复制粘贴

00:19:16.835 --> 00:19:19.115
首先把前面安装好的Whisper.cpp

00:19:19.115 --> 00:19:21.735
变成一个可以被其他程序调用的本地API

00:19:21.735 --> 00:19:24.215
先尝试允许Mac本机访问

00:19:24.215 --> 00:19:25.815
保持这个中端窗口开启

00:19:25.815 --> 00:19:28.135
再新开一个中端APP窗口进行测试

00:19:28.135 --> 00:19:30.195
如果能够正常返回转写结果

00:19:30.195 --> 00:19:32.055
Whisper API就已经运行成功

00:19:32.055 --> 00:19:34.675
后面N8N会运行在Darker容器里

00:19:34.675 --> 00:19:36.675
如果出现无法连接Whisper的情况

00:19:36.675 --> 00:19:38.475
可以按Ctrl加C停止服务

00:19:38.475 --> 00:19:39.395
再这样改

00:19:39.395 --> 00:19:40.515
这里需要特别注意

00:19:40.515 --> 00:19:43.955
Whisper server本身没有用户登陆和全线验证的功能

00:19:43.955 --> 00:19:46.035
所以使用0.0.0.0时

00:19:46.035 --> 00:19:48.375
只建议放在可信的家庭局网内

00:19:48.375 --> 00:19:49.955
不要进行路由器端口转发

00:19:49.955 --> 00:19:52.555
也不要把8178断口直接暴露到公网

00:19:52.555 --> 00:19:53.875
接下来安装N8N

00:19:53.875 --> 00:19:56.015
这里使用Docker Desktop来运行

00:19:56.015 --> 00:19:57.455
并固定N8N版本

00:19:57.455 --> 00:20:01.155
避免后续更新导致教程界面或者节点配置发生变化

00:20:01.155 --> 00:20:03.855
先从Docker官网下载安装Docker Desktop

00:20:03.855 --> 00:20:05.995
拖动到应用程序文件夹并启动

00:20:05.995 --> 00:20:07.355
确认Docker正常运行后

00:20:07.355 --> 00:20:09.535
再打开中端App输入下面的命令

00:20:09.535 --> 00:20:19.175
接下来生成一段随机的加密密钥

00:20:19.175 --> 00:20:25.175
把生成的结果替换到下面的XXX

00:20:25.175 --> 00:20:31.835
然后我们访问127.0.0.1

00:20:31.835 --> 00:20:32.895
冒号5678

00:20:32.895 --> 00:20:36.115
第一次进入需要创建N8N的本地管理员账号

00:20:36.115 --> 00:20:38.555
接下来我们来新建一条workflow工作流

00:20:38.555 --> 00:20:40.475
这套流程一共只有四个节点

00:20:40.475 --> 00:20:41.315
Webhook

00:20:41.315 --> 00:20:43.575
httprequest whisper转写

00:20:43.575 --> 00:20:45.675
httprequest签文整理

00:20:45.675 --> 00:20:47.215
respond to webhook

00:20:47.215 --> 00:20:48.875
第一个是webhook节点

00:20:48.875 --> 00:20:50.595
它相当于整条工作流的入口

00:20:50.595 --> 00:20:52.895
以后只要把视频post到这个地址

00:20:52.895 --> 00:20:54.355
工作流就会自动开始

00:20:54.355 --> 00:20:56.055
外部hook的具体设置如下

00:20:56.055 --> 00:20:58.055
没提到的设置保持不变即可

00:20:58.055 --> 00:21:10.295
第二个节点添加http request

00:21:10.295 --> 00:21:12.415
名称可以改成Whisper转写

00:21:12.415 --> 00:21:14.735
它负责把刚刚上传的音视频文件

00:21:14.735 --> 00:21:16.395
交给Mac上的Whisper server

00:21:16.395 --> 00:21:19.115
第二个节点HTTPRequest的具体设置如下

00:21:19.115 --> 00:21:20.995
没提到的设置保持不变即可

00:21:20.995 --> 00:21:24.195
值得注意的是N8MBinaryFile这一类型中

00:21:24.195 --> 00:21:27.255
InputDataFieldName需要填写WebHook节点

00:21:27.255 --> 00:21:29.415
实际收到的二进制字段名称

00:21:29.415 --> 00:21:31.075
点击前一个WebHook节点

00:21:31.075 --> 00:21:33.555
在Output的Binary中进行查看

00:21:33.555 --> 00:21:35.795
如果显示为Data那就填写为Data

00:21:35.795 --> 00:21:38.355
如果显示为Data0那就填写为Data0

00:21:38.355 --> 00:21:39.855
这个名称必须完全一致

00:21:39.855 --> 00:21:43.335
否则会出现TheItem has no binary field的报错

00:21:43.335 --> 00:21:45.895
第三个节点继续添加HTTPRequest

00:21:45.895 --> 00:21:47.495
名称改成前文整理

00:21:47.495 --> 00:21:50.615
这个节点负责把Whisper返回完整转写稿

00:21:50.615 --> 00:21:53.115
交给前面搭建好的OpenWebUI API

00:21:53.115 --> 00:21:54.995
第三个节点HTTPRequest

00:21:54.995 --> 00:21:55.915
具体设置如下

00:21:55.915 --> 00:21:57.995
没提到的设置保持不便即可

00:21:57.995 --> 00:22:10.095
接下来回到前面的JSON输入框

00:22:10.095 --> 00:22:12.295
把整个字段切换到Expression模式

00:22:12.295 --> 00:22:13.895
再粘贴下面的表达式

00:22:13.895 --> 00:22:15.135
它的逻辑很简单

00:22:15.135 --> 00:22:18.195
N8N自动读取Whisper转写节点里面的text

00:22:18.195 --> 00:22:20.795
再连同预设提示词一起发给亲吻

00:22:20.795 --> 00:22:26.035
最后添加Respond to Webhook节点

00:22:26.035 --> 00:22:29.015
它负责把整条工作流结果返回给定用者

00:22:29.015 --> 00:22:30.755
Respond with选择Json

00:22:30.755 --> 00:22:33.355
然后把Respond body切换成Expression模式

00:22:33.355 --> 00:22:34.555
粘贴下面的表达式

00:22:34.555 --> 00:22:36.515
Respond code保持200即可

00:22:45.135 --> 00:22:47.495
工作流设置完成以后

00:22:47.495 --> 00:22:48.895
先不要急着正式启用

00:22:48.895 --> 00:22:51.735
在N8N里点击Listen for Test Event

00:22:51.735 --> 00:22:54.095
让Webhook等待一次测试请求

00:22:54.095 --> 00:22:56.115
然后回到终端执行下面的命令

00:22:56.115 --> 00:22:58.815
注意要把XAI Token后面的站位内容

00:22:58.815 --> 00:23:01.455
替换成你前面实际设置的随机自书串

00:23:01.455 --> 00:23:08.815
如果整个流程正常

00:23:08.815 --> 00:23:11.155
你最终应该会得到类似这样的结果

00:23:11.155 --> 00:23:17.335
测试成功以后回到N8N的工作流程页面

00:23:17.335 --> 00:23:19.295
点击右上角的Publish发布

00:23:19.295 --> 00:23:23.095
发布后就不需要每次先点击Lessens for Test Event了

00:23:23.095 --> 00:23:26.595
正式Webhook地址也会从Webhook Test AI Video Notes

00:23:26.595 --> 00:23:28.755
变成Webhook AI Video Notes

00:23:28.755 --> 00:23:30.755
以后只要把视频传到这个接口

00:23:30.755 --> 00:23:33.075
整套流程就会自动变成Whisper

00:23:33.075 --> 00:23:35.075
在本地把视频转成文字

00:23:35.075 --> 00:23:38.975
亲吻再在本地完成摘要提纲标题和章节建议

00:23:38.975 --> 00:23:41.695
最后把转写稿和整理结果一起返回

00:23:41.695 --> 00:23:43.655
整个过程中的语音和文本内容

00:23:43.655 --> 00:23:45.695
都可以在自己的Mac上完成处理

00:23:45.695 --> 00:23:48.075
到这里整套工作流已经跑通了

00:23:48.075 --> 00:23:50.595
不过直接使用Curl调用正式WebHook时

00:23:50.595 --> 00:23:52.555
终端返回的是标准的Json

00:23:52.555 --> 00:23:54.515
所以会看到大量的写杠N

00:23:54.515 --> 00:23:56.115
引号和转译字符

00:23:56.115 --> 00:23:57.795
比如写杠N其实就是换

00:23:57.795 --> 00:23:58.775
并不是烂码

00:23:58.775 --> 00:24:02.495
只是Json保存Markdown和多项文字时的正常格式

00:24:02.495 --> 00:24:04.655
为了让最终结果更加适合阅读

00:24:04.655 --> 00:24:05.815
我们可以再用JQ

00:24:05.815 --> 00:24:08.915
把Json里的转写稿和千万之立结果提取出来

00:24:08.915 --> 00:24:10.275
如果已经安装Homebrew

00:24:10.275 --> 00:24:12.315
则可以执行Brew Install JQ

00:24:12.315 --> 00:24:13.415
安装完整后

00:24:13.415 --> 00:24:16.115
把刚才电用正式工作流命令稍微改一下

00:24:34.207 --> 00:24:36.407
哦对了如果你的Mac没有安装Homebrew

00:24:36.407 --> 00:24:38.607
也不一定非要额外安装JQ

00:24:38.607 --> 00:24:40.607
前面已经准备了Python3.11

00:24:40.607 --> 00:24:44.007
可以直接用Python自带的Json模块完成同样的处理

00:24:49.207 --> 00:24:52.207
视频最后在补一个实际使用时一定会碰到的问题

00:24:52.207 --> 00:24:55.607
Mac mini重启以后哪些东西需要重新打开

00:24:55.607 --> 00:24:58.407
我们前面搭载的模型和数据都保存在硬盘里

00:24:58.407 --> 00:25:00.407
不需要重新安装或者重新下载

00:25:00.407 --> 00:25:05.647
但Olama,OpenWebUI,WhisperServer和N8N这些运行中的服务需要重新启动

00:25:05.647 --> 00:25:07.307
建议按照下面这个顺序来

00:25:07.607 --> 00:25:09.247
首先启动最底层的Olama

00:25:09.247 --> 00:25:11.147
如果安装的是MicOS版的Olama

00:25:11.147 --> 00:25:12.847
直接打开OlamaApp即可

00:25:12.847 --> 00:25:15.747
也可以在中端里执行Open-AOlama

00:25:15.747 --> 00:25:18.267
然后可以检查Olama是否已经恢复

00:25:18.567 --> 00:25:20.967
如果能够正常返回Olama的版本信息

00:25:20.967 --> 00:25:23.267
就说明底层模型服务已经正常

00:25:23.267 --> 00:25:25.207
接下来再来启动OpenWebUI

00:25:25.207 --> 00:25:29.067
冲击后可以先确认MacMe的局域网IP地址有没有发生变化

00:25:29.067 --> 00:25:31.867
因为我们前面的启动命令里填写过这个地址

00:25:31.867 --> 00:25:33.547
如果地址没有发生变化

00:25:33.547 --> 00:25:34.767
就继续使用之前的IP

00:25:34.767 --> 00:25:35.867
如果变化了

00:25:35.867 --> 00:25:37.787
下面命令行里的也要一起替换

00:25:37.787 --> 00:25:39.647
这个中轮装口需要保持运行

00:25:39.647 --> 00:25:40.887
然后617访问

00:25:40.887 --> 00:25:42.847
127.0.0.1网号3000

00:25:42.847 --> 00:25:44.207
居于网中的其他设备

00:25:44.207 --> 00:25:45.767
仍然访问Mac mini的IP地址

00:25:45.767 --> 00:25:46.487
网号3000

00:25:46.487 --> 00:25:47.587
长期使用的话

00:25:47.587 --> 00:25:48.687
也可以在路由器里

00:25:48.687 --> 00:25:50.667
给Mac mini固定一个局网地址

00:25:50.667 --> 00:25:52.767
选择每次重建后来进行检查

00:25:52.767 --> 00:25:53.887
如果只是聊天

00:25:53.887 --> 00:25:55.467
知识库或者OpenWeb UI

00:25:55.467 --> 00:25:57.447
其实不用一直启动Whisper server

00:25:57.447 --> 00:25:59.027
只有需要运行视频转写

00:25:59.027 --> 00:26:01.027
或者后面的N8n视频工作流时

00:26:01.027 --> 00:26:01.967
再打开即可

00:26:01.967 --> 00:26:03.987
同样这个中端窗口需要保持运行

00:26:03.987 --> 00:26:05.707
可以打开另一个中端测试

00:26:05.707 --> 00:26:07.487
只要服务器能够这样响应

00:26:07.487 --> 00:26:09.707
就可以继续交给N8n来调用了

00:26:09.707 --> 00:26:11.747
接着打开Docker Desktop App

00:26:11.747 --> 00:26:13.607
因为我们创建N8n容器时

00:26:13.607 --> 00:26:16.087
已经设置了Restart Unless Stoped

00:26:16.087 --> 00:26:17.127
所以正常情况下

00:26:17.127 --> 00:26:18.487
只要Docker App启动

00:26:18.487 --> 00:26:20.627
之前的N8n容器也会自动回复运行

00:26:20.627 --> 00:26:22.807
不需要重新执行那一串Docker Run

00:26:22.807 --> 00:26:24.727
可以先检查Docker PS

00:26:24.727 --> 00:26:26.487
如果列表里能够看到N8n

00:26:26.487 --> 00:26:28.347
就说明N8N已经自动恢复

00:26:28.347 --> 00:26:29.387
如果没有启动

00:26:29.387 --> 00:26:31.687
可以手动执行Docker StartN8N

00:26:31.687 --> 00:26:32.947
然后浏览器打开

00:26:32.947 --> 00:26:35.207
127.0.0.1-5678

00:26:35.207 --> 00:26:36.947
如果能够进入N8N

00:26:36.947 --> 00:26:39.047
就说明自动化服务已经恢复正常

00:26:39.047 --> 00:26:42.167
到这里我们就从一台普通的Mac mini开始

00:26:42.167 --> 00:26:45.647
完成一套相对完整的家庭本地AI服务

00:26:45.647 --> 00:26:47.467
Olama负责运行AI模型

00:26:47.467 --> 00:26:50.447
OpenWeb UI提供对话界面和统一API

00:26:50.447 --> 00:26:53.327
Embedding和IAG负责自己的文档支援库

00:26:53.327 --> 00:26:56.187
GLM OCR处理图片和扫描件

00:26:56.187 --> 00:26:58.827
whisper.cpp负责视频录音转写

00:26:58.827 --> 00:27:01.387
再通过N8N把这些能力串成一套

00:27:01.387 --> 00:27:02.987
简单的自动化工作流

00:27:02.987 --> 00:27:05.287
这套方案其实不只是在Mac上

00:27:05.287 --> 00:27:06.507
跑了一个AI模型

00:27:06.507 --> 00:27:08.507
当对话文档图片

00:27:08.507 --> 00:27:11.027
音视频和自动化都连起来之后

00:27:11.027 --> 00:27:12.927
这台Mac mini才开始从一台

00:27:12.927 --> 00:27:13.887
跑模型的电脑

00:27:13.887 --> 00:27:16.127
变成一台可以长期放在家里

00:27:16.127 --> 00:27:18.767
由不同设备随时调用的AI服务器

00:27:18.767 --> 00:27:21.507
当然这只是一个非常技术的框架

00:27:21.507 --> 00:27:23.527
后面还可以继续加入更大的模型

00:27:23.527 --> 00:27:24.367
自己的资料库

00:27:24.367 --> 00:27:25.327
手机快据指令

00:27:25.327 --> 00:27:26.927
甚至更多自动化流程

00:27:26.927 --> 00:27:29.227
大家完全可以根据自己的Mac配置

00:27:29.227 --> 00:27:31.007
和实际需求继续往上搭

00:27:31.007 --> 00:27:33.367
先把这套技术环境稳定跑起来

00:27:33.367 --> 00:27:34.667
再逐步增加功能

00:27:34.667 --> 00:27:37.167
更适合第一次接触本地AI的各位

00:27:37.167 --> 00:27:37.627
好了

00:27:37.627 --> 00:27:39.607
那么以上就是本期视频的全部内容了

00:27:39.607 --> 00:27:41.367
如果觉得本期视频有所帮助的话

00:27:41.367 --> 00:27:42.227
还请不要忘记

00:27:42.227 --> 00:27:43.647
剪辑赛链加公主支持一下

00:27:43.647 --> 00:27:44.167
支持旅金

00:27:44.167 --> 00:27:45.547
我们下期视频再见

00:27:45.547 --> 00:27:46.087
拜拜
