大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!

news/2025/2/12 21:07:04/文章来源:https://www.cnblogs.com/tyysoft/p/18712138

 

 

1 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!

1.1 背景

  目前AI已经大行其道,chatGPTDeepSeek等如雨后春笋般涌现出来,笔者做为一个守旧派顽固派,一直认为AI只是雕虫小技,根本没有办法和人写的代码相提并论,在chatGPT已经大火几年之后仍然一直无动于衷,只是在最近才慢慢使用了豆包查点资料,然后再接触KimiDeepSeek等AI工具和模型。

  使用AI的对话问答模式,相对原来的搜索引擎,得到的结果更精练, 不会像百度、必应之类的搜索引擎,搜索到结果后还要逐页去人工筛选,AI的回答就是干干净净你要的东西,这比搜索引擎效率高太多了!
  提要求让AI生成些小的代码片段,如:“给我写一个vbs获取文件扩展名的函数”,生成的代码质量也非常不错,直接拿来就能用,连测试代码也一并写好

总结一句话大人,时代变了,现在投降是代价最小的时候!

问题来了:目前这些AI工具,都是基于通用模型, 如果用来做一些其他业务场景的事,效果就不会太好,此时就需要训练自己的本地模型了

注意:在训练自己的本地模型前,请首先有一个概念,如果没有充足的硬件资源,请不要尝试在本地部署DeepSeek-R1模型,该模型至少需要60G的显存,GPU也是NVidia H100规格的,且是多卡分布式

使用线上+线下协作的方式,可能是普通人训练自己业务场景的最优选择

1.2 准备工作

  1. 注册硅基流动账号: 硅基流动注册

  2. 下载CherryStudio:下载CherryStudio
    注:目前常用的AI客户端只有CherryStudio工具的知识库支持训练本地素材

1.3 训练本地知识库

  比如:作者偶尔会写点EverEdit的宏脚本(js语法),由于EverEdit有自己的API,所以AI必须先学习EverEdit的API。

1.3.1 在CherryStudio中配置密钥

  配置密钥是为了能够让CherryStudio使用AI供应商(这里是硅基流动)的模型

  1. 步骤1:在siliconflow网站登录后,拷贝自己的密钥,如下图所示:

  2. 步骤2:在CherryStudio中配置密钥,如下图所示:

1.3.2 在CherryStudio中训练本地知识库

  训练本地知识库的目的:将自有业务知识消化成知识库,结合在线AI(如:DeepSeek),以解答自有业务领域的问题,而避免投入大量硬件训练完整的专有本地模型。
  比如:我偶尔要写EverEdit宏脚本,因此我要训练关于EverEdit的API的本地知识库。

  1. CherryStudio中新建本地知识库,如下图所示:

  2. 将自有业务相关的文档丢到知识库中进行消化(近似动作),如下图所示:

      消化完成后,会出现绿色的“√”符号

1.3.3 在CherryStudio中使用本地知识库(自有业务)和DeepSeek在线模型生成自有业务相关代码或答案

  1. 打开知识库开关,并选择本地知识库,如下图所示:
    CherryStudio的导航栏选择“助手”按钮,切换到助手模式

在界面的底部聊天窗口中选择本地知识库

  1. 提出问题并解答,如下图所示

    1. 用户提出问题让AI解答
    2. 出现问题,让AI修正
    3. 还有问题,继续让AI修正

      注:后面还有很多让AI修正的步骤,这里不一一列举。
    4. 最终AI生成的代码
    // 获取当前文档对象
    var doc = App.ActiveDoc;// 获取文档内容
    var text = doc.Text;// 获取用户输入的分隔符,默认使用“,”
    var delimiter = App.ShowInputBox("请输入分隔符(默认按','分隔):", "分隔符输入");
    if (!delimiter) {delimiter = ",";
    }// 获取制表符宽度
    var tabWidth = doc.TabStop;// 按换行符拆分文档内容
    var lines = text.split("\n");
    var columns = [];
    for (var i = 0; i < lines.length; i++) {columns.push(lines[i].split(delimiter));
    }// 计算字符串的显示宽度(中文字符占2,中文符号“和”占1,英文字符占1,Tab键按制表符宽度计算)
    function getDisplayWidth(str) {var width = 0;for (var i = 0; i < str.length; i++) {var char = str.charAt(i); // 使用 str.charAt(i) 获取字符if (char === "\t") {// 计算 Tab 宽度,对齐到下一个制表符位置 [^1]width += tabWidth - (width % tabWidth);} else if (char === "“" || char === "”") {width += 1; // 中文符号“和”占1个宽度} else {var charCode = str.charCodeAt(i);if (charCode >= 0 && charCode <= 127) {width += 1; // 英文字符或半角字符} else {width += 2; // 中文字符或全角字符}}}return width;
    }// 计算每列的最大显示宽度
    var maxWidths = [];
    for (var i = 0; i < columns.length; i++) {for (var j = 0; j < columns[i].length; j++) {var width = getDisplayWidth(columns[i][j]);if (!maxWidths[j] || width > maxWidths[j]) {maxWidths[j] = width;}}
    }// 生成对齐后的文本(在分隔符后面多填充1个空格)
    var alignedText = "";
    for (var i = 0; i < columns.length; i++) {for (var j = 0; j < columns[i].length; j++) {var cell = columns[i][j];// 添加单元格内容alignedText += cell;// 在分隔符后面填充空格(多填充1个空格)if (j < columns[i].length - 1) {var cellWidth = getDisplayWidth(cell);var padding = "";for (var k = 0; k < maxWidths[j] - cellWidth; k++) {padding += " ";}alignedText += delimiter + " " + padding; // 分隔符后多填充1个空格}}if (i < columns.length - 1) {alignedText += "\n";}
    }// 将对齐后的内容写回文档
    doc.Text = alignedText;
    1. 脚本执行后的效果
      对齐前:

      脚本执行列对齐后:

    哇!是不是很整齐!这都是AI自己写的脚本哦!


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来源自豆包AI,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/882736.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【洛谷P1196】银河英雄传说[NOI2002]

今天学习提高版的并查集 洛谷200题纪念! 首先我们看题目 P1196 [NOI2002] 银河英雄传说 题目背景 公元 \(5801\) 年,地球居民迁至金牛座 \(\alpha\) 第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展。 宇宙历 \(799\) 年,银河系的两大…

P3826 [NOI2017] 蔬菜 题解

Description 有 \(n\) 种蔬菜,对于所有的满足条件 \(d\times x_i \leq c_i\) 的正整数 \(d\) ,有 \(x_i\) 个单位的蔬菜将在 第 \(d\) 天结束时变质。 特别地,若 \((d - 1)\times x_i \leq c_i < d\times x_i\) ,则有 \(c_i - (d - 1)\times x_i\) 单位的蔬菜将在第 \(d…

什么是token?token是用来干嘛的?

从事计算机行业的朋友都听说过token这么个东西,尤其是deepseek爆火后api(大家都知道什么意思吧),但是其他行业的人就很少了解到token,下面就给大家来详细介绍一下token是什么意思?token是用来干嘛的这一块的内容,希望能帮助到大家。token是什么意思? 作为计算机术语时,…

uniapp 开发app流程

准备: DCLOUD开发者账号、IOS开发者账号、高德地图开发者账号 1、在DCLOUD平台创建【应用】在应用中设置【各平台信息】,安卓的包名自己写一个,ios BundleId在ios开发者账号中获取,本教程以安卓为主,ios方面的问题暂时忽略记住这个列表中的 安卓的包名 和 ISO的域名/Bundl…

智能驾驶中的 感知 模块介绍

在自动驾驶系统中,感知技术是核心基础之一。感知技术为车辆提供环境信息,使其能够实现对周围环境的理解、分析与决策,从而保证安全性和高效性。通常大家对感知的介绍停留在“眼睛”的作用,但这样的解释太宽泛了例如感知到底是什么?由哪些模块组成?输入输出有什么含义?数…

AI行为识别摄像机

AI行为识别摄像机具备24小时不间断的视频监控能力,可以随时捕捉现场动态,确保无死角覆盖。通过训练好的模型,该设备能够对不同的人类活动进行分类和判断,从而有效区分正常与异常行为。例如,在商场中,当检测到顾客有异常举动时,系统会立即发出警报。相比于传统监控设备,…

【笔记】多项式Ⅰ:

前言 这一节用于讲解拉格朗日插值法(Lagrange Polynomial)和快速傅里叶变换(Fast Fourier Transform),但是含有前置知识,因此有大量学过的知识可以直接跳过,存在大量证明会放出相应的链接。 多项式 基本概念 我们将形如 \(\textstyle{\sum a_nx^n}\) 的有限项相加式子成…

睡岗智能识别摄像机

睡岗智能识别摄像机具备24小时不间断的视频监控能力,可以随时查看现场情况,并记录所有视频数据。通过深度学习算法,该设备能够分析视频流中的人物行为,准确判断是否存在“睡岗”现象。一旦检测到异常情况,系统会自动向管理人员发送警报信息,以便迅速处理。所有录像资料都…

微分信号作用量

微分信号传递函数 \[G(s) = \frac{Ts}{Ts+1} \]阶跃响应 单位阶跃函数\(u(t)\) 的拉普拉斯变化为 \(U(s)=\frac{1}{s}\) \[Y(s)=G(s)U(s)=\frac{T}{Ts+1} \]对\(Y(s)\) 进行拉普拉斯反变换,得到微信信号的阶跃响应曲线 \[y(t) = e^{-\frac{t}{T}}u(t) \]对\(y(t)\) 进行积分,可…

非车间人员进入识别监控系统

非车间人员进入识别监控系统的核心是 YOLOX 深度学习算法,非车间人员进入识别监控系统通过现场监控摄像机覆盖了车间及周边的各个关键区域,当系统检测到非车间人员进入时,会迅速触发告警流程。首先,系统会在现场通过语音提醒装置发出语音警告,要求其立即离开。同时,系统会…

用AI绘制CAD气温曲线图

此文章视频讲解地址 https://www.bilibili.com/video/BV1JtKjenEhF 需求 根据气温的JSON数据,用AI自动生成CAD格式的气温曲线DWG图 数据准备 用deepseek获取了北京市最近一个月的气温json数据AI对话 首先进入唯杰地图云端管理平台 选择与唯杰地图AI对话需求描述 1、要弹出一个…

攻防世界-RE-BABYRE

这道题目比较有趣,首先我们分析它是一个不套壳的程序,然后直接用IDA打开他的加密逻辑也很直观:flag一定十个长度为14的字符串 judge在这里是一个函数指针,指向judge数组的第一位可是当我们点击judge却无法查看它的程序逻辑。 我们注意到在上面有这样一段程序for ( i = 0; i…