写点什么

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

  • 2025-02-13
    福建
  • 本文字数:2391 字

    阅读完需:约 8 分钟

1.1 背景


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


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


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


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


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


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


1.2 准备工作


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



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


1.3 训练本地知识库


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


1.3.1 在CherryStudio中配置密钥


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


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



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



1.3.2 在CherryStudio中训练本地知识库


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


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



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


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


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


打开知识库开关,并选择本地知识库,如下图所示:


CherryStudio的导航栏选择“助手”按钮,切换到助手模式



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



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

用户提出问题让 AI 解答



出现问题,让 AI 修正



还有问题,继续让 AI 修正



注:后面还有很多让 AI 修正的步骤,这里不一一列举。


最终 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;
复制代码


脚本执行后的效果


对齐前:



脚本执行列对齐后:



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


文章转载自:tyysoft

原文链接:https://www.cnblogs.com/tyysoft/p/18712138

体验地址:http://www.jnpfsoft.com/?from=001YH

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!_人工智能_不在线第一只蜗牛_InfoQ写作社区