← 返回蜂巢洞察

如何使用 Ollama 在本地运行并自定义大语言模型

在漫长的技术创新历史中,只有少数几种技术的发展像大型语言模型那样产生了如此深远的 … Read More

Socrates

在漫长的技术创新历史中,只有少数几种技术的发展像大型语言模型那样产生了如此深远的影响。大型语言模型是一种先进的人工智能系统,它们通过训练海量数据集来理解、生成和处理人类语言,从而用于写作、翻译、摘要生成以及驱动聊天机器人等各种任务。

拥有这样一个强大的离线工具,确实会带来翻天覆地的变化。这些本地化大型语言模型让你即使在离线状态下也能随时使用它们。读完本指南后,你将会了解什么是本地化大型语言模型、为什么它们如此重要,以及如何自己动手运行它们——无论是通过简单的方法,还是更技术性的途径。

本指南适合以下人群阅读,但并不限于这些人群:
– 开发者、技术文档编写人员或对新技术充满兴趣的工程师;
– 熟悉终端操作的人士;
– 曾接触过AI工具(如ChatGPT、Claude等)的人;
– 那些几乎没有本地运行大型语言模型经验的人。

目录

什么是本地化大型语言模型?

本地化大型语言模型将人工智能技术从云端带到了你的个人设备上。虽然标准的大型语言模型体积庞大,不适合在消费级设备上运行,但通过一种称为量化的技术,可以降低它们的数值精度——这就好比将一个高分辨率的视频文件压缩后,使其能够在手机上流畅播放一样。这样一来,强大的人工智能功能就可以在你的笔记本电脑上本地运行了,而无需依赖庞大的服务器集群。

在本地运行像Meta的Llama 3.3、Google的Gemma 3或阿里巴巴的Qwen系列这样的模型,不仅能确保数据隐私得到充分保护,还能避免支付订阅费用。因为这些人工智能系统运行在你的机器上,所以你能获得一个快速且具备离线功能的开发环境,你的代码也会处于你的直接控制之下。

“在本地运行”意味着什么

要了解本地运行的大型语言模型是如何在您的机器上运行的,就必须了解计算机的物理构成。当您在本地运行Llama 3或Mistral这样的模型时,您的硬件会从一台通用计算机转变为专门的AI处理设备。

这一过程依赖于四个关键硬件的紧密协作:存储设备、RAM、GPU和CPU。

存储设备(模型的永久存储空间)

在开始使用这些模型之前,首先需要下载它们。与普通应用程序不同,大型语言模型实际上是一份庞大的“权重文件”,其中包含代表AI所有知识的数值数据。

  • 文件格式:您会看到.gguf或.safetensors这类文件格式。这些文件的体积非常大:一个参数量为70亿的模型通常会占用5GB到10GB的磁盘空间。

  • SSD与HDD的区别:使用SSD是必不可少的。因为每次运行模型时,计算机都需要将数吉字节的数据加载到内存中,而传统的硬盘会导致系统等待很长时间才能完成数据读取。

VRAM与RAM(模型的工作区)

这是影响模型运行速度的最关键因素。为了让AI能够快速响应用户的指令,它的所有计算数据都必须存储在高速内存中。

  • VRAM(显存):这种内存是直接连接到显卡上的,其处理速度远高于普通系统RAM。如果模型的全部数据都能容纳在VRAM中,AI的反应速度甚至会超过人类的打字速度。

  • 系统RAM:如果模型的规模超过了GPU的处理能力,软件就会将部分数据存储到系统的普通RAM中。虽然这样可以让配置普通的计算机也能运行大型模型,但性能会大幅下降——处理速度可能会从每秒50个词降低到只有1到2个词。

GPU(数学计算引擎)

虽然CPU是计算机的“管理者”,但GPU(图形处理单元)才是真正的“数学专家”。

  • 并行计算能力:大型语言模型是通过同时执行数十亿次简单的数学运算来工作的。CPU虽然拥有几个高性能核心,但GPU却配备了数千个专为并行计算设计的小型核心。

  • 统一内存架构(苹果M1芯片):在现代的Mac电脑上(如M1/M2/M3系列),CPU和GPU会共享同一块内存。这种“统一内存”设计极大地提升了本地运行AI模型的性能,使得即使是配置较低的笔记本电脑也能处理那些通常需要高端台式机GPU才能运行的模型。

为了获得最佳的性能,请务必将您的计算机规格与所需模型对齐,确认自己是否能够顺利运行这些模型。

为什么要在本地运行大型语言模型?

在本地运行大型语言模型并不仅仅是为了满足技术爱好者的需求,对于任何希望完全掌控自己的AI系统的人来说,这都是一个明智的选择。在当地运行这类模型的主要优势包括:

  1. 离线使用:你并不受云环境的限制,无论身处何地都可以使用自己的数据。无论是在飞机上还是在偏远地区,你的AI模型都能在无需互联网连接的情况下正常运行。

  2. 隐私与数据所有权:由于没有连接到云端,因此不存在数据或提示被第三方远程利用或被用于训练其他模型的风险。

  3. 成本控制:无需每月支付订阅费或API令牌费用。只要拥有相应的硬件设备,根据你的配置,运行这些模型基本上是免费的。

  4. 定制化与实验:如果你下载了多个模型,可以随时进行切换尝试。不同的模型可以用来完成特定的任务,你还可以调整那些大型供应商通常会限制用户修改的设置。

  5. 加速开发流程:对于开发者来说,本地运行模型消除了网络延迟的问题,从而能够实现近乎即时的响应和更快速的测试循环。

需要考虑的权衡因素

本地大型语言模型也存在一些需要考虑的权衡因素:

  • 硬件要求:为了获得流畅的性能,你需要配备性能良好的硬件——具体来说,需要一块拥有足够VRAM的GPU(通常建议8GB以上),或者一台搭载Apple Silicon处理器的Mac电脑(M1/M2/M3系列)。

  • 性能限制:虽然本地模型的性能正在不断提升,但它们可能仍然无法与像GPT-4这样规模庞大、耗资数十亿美元的云集群相比,在“推理能力”上达到同样的水平。

  • 初始设置难度

    >并非所有情况都适合“即插即用”。如果你想使用某些特定功能,就需要花费一些时间来配置软件、下载模型文件,并解决可能出现的环境问题。

尽管存在这些权衡因素,但能够拥有这样一种工具并能够自主控制它,仍然在日常生活中带来了巨大的便利。

如何搭建本地大型语言模型

有很多方法可以获取和搭建本地大型语言模型,但在本指南中,我们将使用Ollama这一用户友好的工具。通过它,你可以将私密且安全的AI技术直接应用到自己的电脑上。你将学习如何通过一个命令来下载并部署高性能模型,根据自己的CPU/GPU配置对它们进行优化,并利用强大的Modelfile系统来“定制”符合自己需求的AI模型。

我们将会涵盖以下内容:

  • 基础知识:了解Ollama是如何将你的电脑变成一个强大的AI计算平台的。

  • 安装与设置:在不到五分钟的时间内完成整个搭建过程。

  • 模型管理:学习如何查找、下载并运行像Llama 3或Mistral这样的模型。

  • 定制化操作:编写你的第一个Modelfile文件,为你的AI模型指定具体的功能或“个性”。

完成这些步骤后,你将会拥有一套完全独立的人工智能工作站,它能够进行复杂的推理运算,而无需向云端传输任何数据。

什么是Ollama?

Ollama是一款免费的开源工具,它使得在自家硬件上运行大型语言模型变得像打开网页浏览器一样简单。它消除了人工智能研究通常伴随的技术复杂性,为你提供了一种简洁明了的方式来与人工智能模型进行交互、管理甚至自定义这些模型。

在Ollama出现之前,在本地运行人工智能相关程序是一件非常麻烦的事情。你需要在网上寻找合适的“权重”文件,搭建复杂的编码环境,还要担心硬件是否会出故障。但现在,再也不需要花费数小时来配置软件了——Ollama会自动完成这一切。它会自动检测你的显卡,并为你调整相应的设置。

Ollama的工作原理

Ollama遵循一种简单的“思维模型”,这种模型模仿了你使用手机应用程序或流媒体服务播放音乐的方式。

模型库

Ollama维护着一个庞大的“模型库”,其中包含了诸如Llama 3、Mistral和Gemma等预先打包好的人工智能模型。你无需担心文件格式的问题,只需从列表中选择一个模型名称,Ollama就会将其下载到你的设备上。

本地运行引擎

一旦获取到了所需的模型,Ollama就会充当运行引擎的角色。它会启动该模型,将其加载到计算机的内存中,然后开始进行数学运算。Ollama会智能地利用你的显卡来提升运行速度,但如果你只有普通的CPU,它也同样可以正常工作。

命令行界面

Ollama采用了命令行界面来进行操作。虽然这个说法听起来有些技术性,但实际上就是意味着你可以在终端窗口中输入简单的指令来控制Ollama。想要与某个模型进行对话?只需告诉它开始运行即可;想查看自己下载了哪些模型?只需要请求它列出这些模型的列表。

如何安装Ollama

请访问Ollama的下载页面。对于Windows和Mac系统,只需点击下载按钮即可。

Ollama下载页面的截图,显示了macOS、Linux和Windows系统的下载选项,其中Windows选项选择了PowerShell安装命令(irm https://ollama.com/install.ps1 | iex),并且还有一个“下载适用于Windows”的按钮(需要Windows 10或更高版本系统)。

对于Linux系统,请运行以下命令:

curl -fsSL https://ollama.com/install.sh | sh

下载完成后,请打开该文件,按照安装说明进行操作即可完成安装。

在Windows和Mac系统中,安装完成后,Ollama的原生桌面应用程序应该会自动打开。

Ollama桌面应用程序界面的截图,显示了侧边栏中的“新建聊天”和“设置”选项,一个带有Llama图标的空白聊天区域,消息输入框,以及当前选定的模型“llama2:7b”。

对于那些觉得命令行界面令人望而却步的人来说,这种图形用户界面无疑非常有用;使用Ollama并不需要具备编程技能。你无需输入命令,只需通过一个外观与普通聊天应用毫无区别的界面来管理模型并开始对话即可。

如何下载大型语言模型

如前所述,Ollama拥有一个包含多种规格和用途的大型语言模型的丰富资源库。要将某个模型下载到你的电脑上,只需使用“pull”命令后跟上该模型的名称即可。例如:

ollama pull gemma3:1b

要查看你已下载或拥有的模型,可以使用“list”命令,如下所示:

ollama list

如何运行你下载的大型语言模型

现在你的电脑上已经安装好了该大型语言模型。要使用它,只需使用“run”命令后跟上模型的名称即可。例如:

ollama run gemma3:1b

模型将会被加载出来,之后你就可以向它发送指令了。

Windows命令提示符中显示“ollama run gemma3:1b”已成功执行的截图,提示信息为“输入内容(/?可获取帮助),说明模型已准备好接收输入。” height=

要退出该模型,可以按Ctrl + d键,或者输入/bye命令。
你还可以执行其他操作,比如删除模型、复制模型、查看模型的详细信息等等。输入“ollama help”即可查看所有这些命令。

在深色背景下的命令行界面中显示“ollama”的帮助信息,标题为“大型语言模型运行工具”。其中包含了“使用方法”和“可用命令”两大板块,列出了“serve”、“create”、“show”、“run”、“stop”、“pull”和“list”等命令,并对每个命令进行了简要说明。屏幕底部还展示了“标志选项”,包括“-h, --help”、“--verbose”和“--version”等选项。’ height="400" loading="lazy" src="https://cdn.hashnode.com/uploads/covers/6349de767b9ff550634412bf/a30f393e-0b88-40db-b5ef-e0e1e30acc43.png" style="display:block;margin:0 auto" width="600"/></p>
<h2>如何使用Modelfile自定义Ollama中的本地模型</h2>
<p>Ollama最强大的功能之一就是允许用户通过<strong>Modelfile</strong>来自定义本地模型的行为。与将模型视为固定的黑箱不同,Modelfile使你能够定义模型应该以何种方式响应指令、扮演什么角色以及如何生成文本,而无需重新训练或微调模型。</p>
<p>正因为如此,Modelfile非常适合用于创建可重复使用、针对特定任务设计的本地模型,例如技术文档编写工具、代码审核系统、研究辅助工具,甚至是基于角色的智能助手等。</p>
<h2>什么是Modelfile?</h2>
<p>Modelfile是一种纯文本配置文件,Ollama会利用它根据现有的模型创建新的模型。该文件描述了基础模型在运行时应该如何被封装、接收指令以及进行配置。</p>
<p>本质上,模型文件的作用就是:</p>
<ul>
<li>
<p>以一个基础模型为起点</p>
</li>
<li>
<p>应用一系列指令</p>
</li>
<li>
<p>生成一个新的、具有特定名称的模型,这个模型可以像其他普通模型一样被使用</p>
</li>
</ul>
<p>模型文件并不会修改底层模型的权重。相反,它们定义了模型的行为规则:模型应该如何被引导、如何生成文本,以及如何响应用户的输入。</p>
<h3>模型文件的语法与结构</h3>
<p>模型文件是以行为基础的、采用声明式格式编写的。每一条指令都定义了模型行为的某个具体方面。</p>
<p>一个最简单的模型文件如下所示:</p>
<pre><code class="language-markdown">FROM llama3

SYSTEM """
你是一名高级技术作家。</param>

PARAMETER temperature 0.2
</code></pre>
<ul>
<li>
<p><strong>FROM</strong>:这是模型文件的基础部分。它指定了系统应该从哪个基础模型(例如lama3)中继承智能和分词功能。</p>
</li>
<li>
<p><strong>SYSTEM</strong>:这部分用于设置模型的“永久性”行为规则。通过指定“高级技术作家”这一角色,我们可以确保模型生成的每条回复都保持专业且结构清晰的语气,而无需在每次提示中都明确说明这一点。</p>
</li>
<li>
<p><strong>PARAMETER</strong>:这些参数用于调整模型的生成设置,例如随机性或上下文相关性的程度。在这个例子中,我们使用“temperature 0.2”这个参数来降低模型的“创造性”,使其生成的内容更加确定性和精确性,这样就能确保输出内容的一致性与准确性。</p>
</li>
</ul>
<p>高级用户还可以使用《模板》来自定义提示格式,并通过添加《消息》指令来包含特定的对话历史记录,不过对于这种基本设置来说,这些功能并不是必需的。</p>
<p><strong>快速参考表:</strong></p>
<table style="min-width:75px">
<colgroup>
<col style="min-width:25px/>
<col style="min-width:25px/>
<col style="min-width:25px"/></colgroup>
<tbody>
<tr>
<td>
<p><strong>指令</strong></p>
</td>
<td>
<p><strong>作用</strong></p>
</td>
<td>
<p><strong>示例</strong></p>
</td>
</tr>
<tr>
<td>
<p><strong>FROM</strong></p>
</td>
<td>
<p><strong>必需项。</strong>用于指定基础模型。</p>
</td>
<td>
<p>FROM llama3</p>
</td>
</tr>
<tr>
<td>
<p><strong>SYSTEM</strong></p>
</td>
<p>用于设定模型的角色和行为规则。</p>
</td>
<td>
<p>SYSTEM “你是一个乐于助人的助手。”</p>
</td>
</tr>
<tr>
<td>
<p><strong>PARAMETER</strong></p>
</td>
<td>
<p>用于调整模型的生成参数,如随机性或上下文相关性。</p>
</td>
<td>
<p>PARAMETER temperature 0.2</p>
</td>
</tr>
<tr>
<p><strong>TEMPLATE</strong></p>
</td>
<p>用于规定用户/系统的提示信息应该如何格式化。</p>
</td>
<p>TEMPLATE “{{ .System }}\nUser: {{ .Prompt }}”</p>
</td>
</tr>
<tr>
<p><strong>STOP</strong></p>
</td>
<td>
<p>用于指定结束模型响应的标记字符。</p>
</td>
<td>
<p>STOP “</s>”</p>
</td>
</tr>
<tr>
<p><strong>MESSAGE</strong></p>
</td>
<p>用于向模型中添加特定的对话历史记录。</p>
</td>
<p>MESSAGE user “Hello!”</p>
</td>
</tr>
</tbody>
</table>
<h2>如何自定义模型</h2>
<p>使用模型文件来创建模型时,Ollama会按照以下步骤进行操作:</p>
<ul>
<li>
<p>加载指定的基础模型</p>
</li>
<li>
<p>应用系统级别的指令</p>
</li>
<li>
<p>配置生成参数</p>
</li>
<li>
<p>将结果注册为新的本地模型</p>
</li>
</ul>
<p>在本文中,您将使用自己选择的任何本地大语言模型来创建一个技术写作助手。您可以使用之前下载的模型,或者下载另一个您认为更适合这个用途的模型。</p>
<ol>
<li>
<p>准备开发环境:创建一个名为<code>my-writing-assistant</code>的文件夹,然后在其所在的IDE或文本编辑器中打开它。</p>
</li>
<li>
<p>创建模型文件:在该文件夹中创建一个名为Modelfile的文件,并在其中填写以下内容:</p>
</li>
</ol>
<pre><code class="language-markdown">FROM llama3 

SYSTEM """
你是一名高级技术写作专家。
请撰写清晰简洁的解释性文本。
适当使用标题和项目符号。
避免使用营销语言。</code>

PARAMETER temperature 0.2
PARAMETER top_p 0.9
PARAMETER repeat Penalty 1.1
PARAMETER num_ctx 4096
</code></pre>
<ol>
<li>
<p>创建模型:在IDE中打开终端;如果使用的文本编辑器没有内置终端,那就打开命令提示符,进入my-writing-assistant目录,然后运行以下命令:</p>
<pre><code class="language-plaintext">ollama create tech-writer -f Modelfile
</code></pre>
<p>您应该会看到如下类似的反馈信息:</p>
<p><img alt=

  • 运行模型:您可以像使用其他Ollama模型一样,通过run命令来运行这个模型:

    ollama run tech-writer
    

    命令行界面的截图,显示“ollama run tech-writer”命令正在执行。命令下方会出现一个交互式提示框,上面写着“>>>>> 发送消息(/?可获取帮助)”,这说明自定义模型已经可以正常使用了。’ height=”400″ loading=”lazy” src=”https://cdn.hashnode.com/uploads/covers/6349de767b9ff550634412bf/ea8bb6a7-b64d-422c-9f52-6526ed1c8496.png” style=”display:block;margin:0 auto” width=”600″/></p>
<p>尝试输入一些基于文档的提示内容,看看模型的表现是否与Modelfile中设定的内容完全一致。</p>
</li>
</ol>
<p>您还可以使用<strong>桌面应用程序</strong>来与自己下载并修改后的模型进行交互。只需打开该应用程序,从聊天框的下拉菜单中选择所需的模型,然后开始发送提示信息即可。</p>
<p><img alt="白色主题的聊天界面截图,其中聊天框的下拉菜单处于展开状态。” height="400" loading="lazy" src="https://cdn.hashnode.com/uploads/covers/6349de767b9ff550634412bf/896cd707-0695-494c-b8a8-b70ded37ce10.png" style="display:block;margin:0 auto" width="600"/></p>
<h2>模型文件能做什么与不能做什么</h2>
<p>模型文件功能强大,但了解其适用范围非常重要。</p>
<p>它们能够:</p>
<ul>
<li>
<p>自定义模型的行为</p>
</li>
<li>
<p>确保提示语的一致性</p>
</li>
<li>
<p>调整模型的生成特性</p>
</li>
<li>
<p>创建可重复使用的本地模型</p>
</li>
</ul>
<p>而它们不能:</p>
<ul>
<li>
<p>重新训练或微调模型权重</p>
</li>
<li>
<p>为模型添加新知识</p>
</li>
<li>
<p>改变模型的架构结构</p>
</li>
</ul>
<p>模型文件决定了模型的响应方式,但并不能改变模型所掌握的知识内容。</p>
<h2>结论</h2>
<p>如今,在本地运行大型语言模型已不再只是研究人员或高端设备的专属权限。借助Ollama与模型文件,你可以下载功能强大的模型,在自己的设备上运行它们,并根据实际需求调整它们的行为模式。</p>
<p>在本指南中,我们介绍了什么是本地大型语言模型、它们为何重要、Ollama如何简化设置流程,以及模型文件如何帮助你控制提示语的语气、结构及生成参数。这样一来,你就无需使用通用的聊天机器人,而是可以构建出更具针对性、专为特定任务设计的辅助工具。</p>
<p>更重要的是,在本地运行模型会彻底改变你与人工智能交互的方式。你不再只是被动地使用API,而是能够真正理解并操控这个系统本身。随着人工智能不断影响软件、商业及日常工具的发展,通过实际操作本地模型,你能更清晰地预见这项技术的发展方向。要了解这种变化,最好的办法就是亲自进行实验,下载模型文件并进行相应的调整。</p>
 </div> <section class="mt-12 border-t border-slate-200 pt-10 dark:border-slate-800"><h2 class="text-xl font-bold text-slate-900 dark:text-white">相关文章</h2><div class="mt-6 grid gap-6 md:grid-cols-2"><article class="group flex h-full flex-col overflow-hidden rounded-3xl border border-slate-200 bg-white shadow-sm transition hover:-translate-y-0.5 hover:shadow-md dark:border-slate-800 dark:bg-slate-900"> <a href="/articles/model-packaging-tools-every-mlops-engineer-should-know" class="relative block aspect-[16/10] overflow-hidden bg-slate-900"> <div class="absolute inset-0 bg-gradient-to-br from-blue-600 via-cyan-700 to-slate-900"> <div class="absolute inset-0 bg-[radial-gradient(circle_at_20%_80%,rgba(255,255,255,0.2),transparent_45%)]"></div> </div>   <div class="absolute inset-0 flex flex-col justify-end p-5"> <span class="inline-flex w-fit rounded-full px-3 py-1 text-xs font-semibold bg-blue-50 text-blue-700 dark:bg-blue-950/50 dark:text-blue-200">技术实践</span>  </div> </a> <div class="flex flex-1 flex-col p-5"> <p class="flex items-center gap-2 text-sm text-slate-500 dark:text-slate-400"> <svg width="1em" height="1em" viewBox="0 0 24 24" class="h-4 w-4" data-icon="tabler:calendar">   <use href="#ai:tabler:calendar"></use>  </svg> <time datetime="Tue Apr 07 2026 04:20:16 GMT+0800 (China Standard Time)">2026年4月6日</time>  </p> <h3 class="mt-3 text-lg font-bold leading-snug text-slate-900 dark:text-white"> <a href="/articles/model-packaging-tools-every-mlops-engineer-should-know" class="transition hover:text-violet-600 dark:hover:text-violet-300">每个机器学习工程师都应该了解的模型打包工具</a> </h3> <p class="mt-3 flex-1 text-sm leading-7 text-slate-600 dark:text-slate-300">大多数机器学习项目的失败,并非因为模型本身存在问题,而是因为模型部署过程中的相关 &hellip; Read More</p> <a href="/articles/model-packaging-tools-every-mlops-engineer-should-know" class="mt-4 inline-flex items-center gap-1 text-sm font-semibold text-violet-600 transition hover:text-violet-700 dark:text-violet-300">
阅读全文
<svg width="1em" height="1em" class="h-4 w-4 transition group-hover:translate-x-0.5" data-icon="tabler:arrow-right">   <symbol id="ai:tabler:arrow-right" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 12h14m-6 6l6-6m-6-6l6 6"/></symbol><use href="#ai:tabler:arrow-right"></use>  </svg> </a> </div> </article><article class="group flex h-full flex-col overflow-hidden rounded-3xl border border-slate-200 bg-white shadow-sm transition hover:-translate-y-0.5 hover:shadow-md dark:border-slate-800 dark:bg-slate-900"> <a href="/articles/how-to-run-an-llm-locally-to-interact-with-your-documents" class="relative block aspect-[16/10] overflow-hidden bg-slate-900"> <div class="absolute inset-0 bg-gradient-to-br from-blue-600 via-cyan-700 to-slate-900"> <div class="absolute inset-0 bg-[radial-gradient(circle_at_20%_80%,rgba(255,255,255,0.2),transparent_45%)]"></div> </div>   <div class="absolute inset-0 flex flex-col justify-end p-5"> <span class="inline-flex w-fit rounded-full px-3 py-1 text-xs font-semibold bg-blue-50 text-blue-700 dark:bg-blue-950/50 dark:text-blue-200">技术实践</span>  </div> </a> <div class="flex flex-1 flex-col p-5"> <p class="flex items-center gap-2 text-sm text-slate-500 dark:text-slate-400"> <svg width="1em" height="1em" viewBox="0 0 24 24" class="h-4 w-4" data-icon="tabler:calendar">   <use href="#ai:tabler:calendar"></use>  </svg> <time datetime="Thu Jan 29 2026 13:40:07 GMT+0800 (China Standard Time)">2026年1月29日</time>  </p> <h3 class="mt-3 text-lg font-bold leading-snug text-slate-900 dark:text-white"> <a href="/articles/how-to-run-an-llm-locally-to-interact-with-your-documents" class="transition hover:text-violet-600 dark:hover:text-violet-300">如何在本地上运行大语言模型以便与您的文档进行交互</a> </h3> <p class="mt-3 flex-1 text-sm leading-7 text-slate-600 dark:text-slate-300">大多数人工智能工具都要求你将提示语和文件发送到第三方服务器上。但如果你的数据包含 &hellip; Read More</p> <a href="/articles/how-to-run-an-llm-locally-to-interact-with-your-documents" class="mt-4 inline-flex items-center gap-1 text-sm font-semibold text-violet-600 transition hover:text-violet-700 dark:text-violet-300">
阅读全文
<svg width="1em" height="1em" viewBox="0 0 24 24" class="h-4 w-4 transition group-hover:translate-x-0.5" data-icon="tabler:arrow-right">   <use href="#ai:tabler:arrow-right"></use>  </svg> </a> </div> </article><article class="group flex h-full flex-col overflow-hidden rounded-3xl border border-slate-200 bg-white shadow-sm transition hover:-translate-y-0.5 hover:shadow-md dark:border-slate-800 dark:bg-slate-900"> <a href="/articles/intro-to-yelp-web-scraping-using-python" class="relative block aspect-[16/10] overflow-hidden bg-slate-900"> <div class="absolute inset-0 bg-gradient-to-br from-blue-600 via-cyan-700 to-slate-900"> <div class="absolute inset-0 bg-[radial-gradient(circle_at_20%_80%,rgba(255,255,255,0.2),transparent_45%)]"></div> </div>   <div class="absolute inset-0 flex flex-col justify-end p-5"> <span class="inline-flex w-fit rounded-full px-3 py-1 text-xs font-semibold bg-blue-50 text-blue-700 dark:bg-blue-950/50 dark:text-blue-200">技术实践</span>  </div> </a> <div class="flex flex-1 flex-col p-5"> <p class="flex items-center gap-2 text-sm text-slate-500 dark:text-slate-400"> <svg width="1em" height="1em" viewBox="0 0 24 24" class="h-4 w-4" data-icon="tabler:calendar">   <use href="#ai:tabler:calendar"></use>  </svg> <time datetime="Tue Jun 23 2020 14:04:46 GMT+0800 (China Standard Time)">2020年6月23日</time>  </p> <h3 class="mt-3 text-lg font-bold leading-snug text-slate-900 dark:text-white"> <a href="/articles/intro-to-yelp-web-scraping-using-python" class="transition hover:text-violet-600 dark:hover:text-violet-300">使用 Python 对 Yelp Web 擦除的介绍</a> </h3> <p class="mt-3 flex-1 text-sm leading-7 text-slate-600 dark:text-slate-300">和许多拥有与计算机编程无关的学位的程序员一样,我从2019年开始一直在努力自学编 &hellip; Read More</p> <a href="/articles/intro-to-yelp-web-scraping-using-python" class="mt-4 inline-flex items-center gap-1 text-sm font-semibold text-violet-600 transition hover:text-violet-700 dark:text-violet-300">
阅读全文
<svg width="1em" height="1em" viewBox="0 0 24 24" class="h-4 w-4 transition group-hover:translate-x-0.5" data-icon="tabler:arrow-right">   <use href="#ai:tabler:arrow-right"></use>  </svg> </a> </div> </article><article class="group flex h-full flex-col overflow-hidden rounded-3xl border border-slate-200 bg-white shadow-sm transition hover:-translate-y-0.5 hover:shadow-md dark:border-slate-800 dark:bg-slate-900"> <a href="/articles/dynamic-partition-pruning-in-spark-3-0" class="relative block aspect-[16/10] overflow-hidden bg-slate-900"> <div class="absolute inset-0 bg-gradient-to-br from-blue-600 via-cyan-700 to-slate-900"> <div class="absolute inset-0 bg-[radial-gradient(circle_at_20%_80%,rgba(255,255,255,0.2),transparent_45%)]"></div> </div>   <div class="absolute inset-0 flex flex-col justify-end p-5"> <span class="inline-flex w-fit rounded-full px-3 py-1 text-xs font-semibold bg-blue-50 text-blue-700 dark:bg-blue-950/50 dark:text-blue-200">技术实践</span>  </div> </a> <div class="flex flex-1 flex-col p-5"> <p class="flex items-center gap-2 text-sm text-slate-500 dark:text-slate-400"> <svg width="1em" height="1em" viewBox="0 0 24 24" class="h-4 w-4" data-icon="tabler:calendar">   <use href="#ai:tabler:calendar"></use>  </svg> <time datetime="Sat May 30 2020 14:00:24 GMT+0800 (China Standard Time)">2020年5月30日</time>  </p> <h3 class="mt-3 text-lg font-bold leading-snug text-slate-900 dark:text-white"> <a href="/articles/dynamic-partition-pruning-in-spark-3-0" class="transition hover:text-violet-600 dark:hover:text-violet-300">Spark 3.0 中的动态分区修剪</a> </h3> <p class="mt-3 flex-1 text-sm leading-7 text-slate-600 dark:text-slate-300">随着 Spark 3.0 的发布,实施了重大改进,使 Spark 的执行速度更快 &hellip; Read More</p> <a href="/articles/dynamic-partition-pruning-in-spark-3-0" class="mt-4 inline-flex items-center gap-1 text-sm font-semibold text-violet-600 transition hover:text-violet-700 dark:text-violet-300">
阅读全文
<svg width="1em" height="1em" viewBox="0 0 24 24" class="h-4 w-4 transition group-hover:translate-x-0.5" data-icon="tabler:arrow-right">   <use href="#ai:tabler:arrow-right"></use>  </svg> </a> </div> </article></div></section> </article> <div class="w-full shrink-0 lg:w-56"> <aside class="w-full min-w-0 space-y-8 lg:sticky lg:top-24"> <section> <h2 class="text-sm font-semibold tracking-wide text-slate-900 dark:text-white">内容栏目</h2> <ul class="mt-3 flex flex-col gap-1"> <li> <a href="/articles/category/industry" class="block truncate rounded-lg px-2.5 py-1.5 text-sm font-medium transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300"> 行业洞察 </a> </li><li> <a href="/articles/category/technology" class="block truncate rounded-lg px-2.5 py-1.5 text-sm font-medium transition bg-violet-50 text-violet-700 dark:bg-violet-950/50 dark:text-violet-300"> 技术实践 </a> </li><li> <a href="/articles/category/product" class="block truncate rounded-lg px-2.5 py-1.5 text-sm font-medium transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300"> 产品动态 </a> </li> </ul> </section> <section> <h2 class="text-sm font-semibold tracking-wide text-slate-900 dark:text-white">文章分类</h2> <ul class="mt-3 flex flex-col gap-1"> <li> <a href="/articles/categories/%E5%AE%89%E5%85%A8" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="安全"> 安全 </a> </li><li> <a href="/articles/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="操作系统"> 操作系统 </a> </li><li> <a href="/articles/categories/product" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="产品方案"> 产品方案 </a> </li><li> <a href="/articles/categories/%E4%BA%A7%E5%93%81%E8%BF%90%E8%90%A5" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="产品运营"> 产品运营 </a> </li><li> <a href="/articles/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition bg-violet-50 font-medium text-violet-700 dark:bg-violet-950/50 dark:text-violet-300" title="大数据"> 大数据 </a> </li><li> <a href="/articles/categories/da-shu-ju" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="大数据"> 大数据 </a> </li><li> <a href="/articles/categories/printorder" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="电商打单"> 电商打单 </a> </li><li> <a href="/articles/categories/%E6%95%85%E9%9A%9C%E9%A2%84%E8%AD%A6" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="故障预警"> 故障预警 </a> </li><li> <a href="/articles/categories/%E6%9E%B6%E6%9E%84" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="架构"> 架构 </a> </li><li> <a href="/articles/categories/openapi" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="开放平台"> 开放平台 </a> </li><li> <a href="/articles/categories/uncategorized" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="默认"> 默认 </a> </li><li> <a href="/articles/categories/allsite" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="全渠道OMS+WMS"> 全渠道OMS+WMS </a> </li><li> <a href="/articles/categories/hotnews" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="热点关注"> 热点关注 </a> </li><li> <a href="/articles/categories/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="人工智能"> 人工智能 </a> </li><li> <a href="/articles/categories/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="软件开发"> 软件开发 </a> </li><li> <a href="/articles/categories/%E6%95%B0%E6%8D%AE%E5%BA%93" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="数据库"> 数据库 </a> </li><li> <a href="/articles/categories/%E7%A7%BB%E5%8A%A8" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="移动"> 移动 </a> </li><li> <a href="/articles/categories/%E4%B8%93%E5%AE%B6%E8%A7%82" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="专家观"> 专家观 </a> </li><li> <a href="/articles/categories/expertpoint" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="专家观点"> 专家观点 </a> </li><li> <a href="/articles/categories/iot" class="block truncate rounded-lg px-2.5 py-1.5 text-sm transition text-slate-600 hover:bg-slate-50 hover:text-violet-700 dark:text-slate-300 dark:hover:bg-slate-900 dark:hover:text-violet-300" title="IoT"> IoT </a> </li> </ul> </section> <section> <h2 class="text-sm font-semibold tracking-wide text-slate-900 dark:text-white">文章标签</h2> <ul class="mt-3 flex flex-wrap gap-1.5"> <li class="max-w-full"> <a href="/articles/tags/%E6%95%B0%E6%8D%AE" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="数据"> 数据 </a> </li><li class="max-w-full"> <a href="/articles/tags/strong" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="strong"> strong </a> </li><li class="max-w-full"> <a href="/articles/tags/data" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="data"> data </a> </li><li class="max-w-full"> <a href="/articles/tags/code" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="code"> code </a> </li><li class="max-w-full"> <a href="/articles/tags/span" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="span"> span </a> </li><li class="max-w-full"> <a href="/articles/tags/ai" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="AI"> AI </a> </li><li class="max-w-full"> <a href="/articles/tags/li" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="li"> li </a> </li><li class="max-w-full"> <a href="/articles/tags/%E6%95%B0%E6%8D%AE%E5%BA%93" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="数据库"> 数据库 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E6%A8%A1%E5%9E%8B" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="模型"> 模型 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E4%BD%BF%E7%94%A8" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="使用"> 使用 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="人工智能"> 人工智能 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E4%B8%AD" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="中"> 中 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E6%9C%8D%E5%8A%A1" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="服务"> 服务 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E4%BC%9A" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="会"> 会 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E6%8A%80%E6%9C%AF" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="技术"> 技术 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E7%B3%BB%E7%BB%9F" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="系统"> 系统 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E5%AE%89%E5%85%A8" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="安全"> 安全 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E7%94%A8%E6%88%B7" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="用户"> 用户 </a> </li><li class="max-w-full"> <a href="/articles/tags/em" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="em"> em </a> </li><li class="max-w-full"> <a href="/articles/tags/%E4%BB%A3%E7%A0%81" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="代码"> 代码 </a> </li><li class="max-w-full"> <a href="/articles/tags/%E4%BB%A3%E7%A0%81%EF%BC%8C%E4%BC%9A%E7%9A%84%E3%80%82" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="代码,会的。"> 代码,会的。 </a> </li><li class="max-w-full"> <a href="/articles/tags/nbsp" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="nbsp"> nbsp </a> </li><li class="max-w-full"> <a href="/articles/tags/ltr" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="ltr"> ltr </a> </li><li class="max-w-full"> <a href="/articles/tags/variable" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="variable"> variable </a> </li><li class="max-w-full"> <a href="/articles/tags/iot" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="iot"> iot </a> </li><li class="max-w-full"> <a href="/articles/tags/%E8%AE%BE%E5%A4%87" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="设备"> 设备 </a> </li><li class="max-w-full"> <a href="/articles/tags/href" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="href"> href </a> </li><li class="max-w-full"> <a href="/articles/tags/kafka" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="kafka"> kafka </a> </li><li class="max-w-full"> <a href="/articles/tags/python" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="python"> python </a> </li><li class="max-w-full"> <a href="/articles/tags/%E4%BA%91" class="inline-flex max-w-full truncate rounded-full px-2.5 py-1 text-xs font-medium transition bg-slate-100 text-slate-600 hover:bg-violet-50 hover:text-violet-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-violet-950/40 dark:hover:text-violet-300" title="云"> 云 </a> </li> </ul> </section> </aside> </div> </div> </div>  </main>  <footer class="relative not-prose border-t border-slate-200/80 bg-gradient-to-b from-slate-50 to-white dark:border-slate-800 dark:from-slate-950 dark:to-slate-900"> <div class="relative mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 intersect-once intersect-quarter intersect-no-queue motion-safe:md:opacity-0 motion-safe:md:intersect:animate-fade"> <div class="grid grid-cols-12 gap-10 py-12 md:gap-8 md:py-14 lg:gap-12"> <!-- Brand + WeChat --> <div class="col-span-12 lg:col-span-4"> <a class="inline-block" href="/" aria-label="返回首页"> <span class="inline-flex items-end gap-3 self-center whitespace-nowrap"> <img src="data:image/png;base64,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" alt="Cheeli" width="108" height="32" loading="eager" decoding="async" class="block h-8 w-auto shrink-0 invert hue-rotate-180 dark:invert-0 dark:hue-rotate-0"> <span class="relative pb-px pl-3 text-[15px] font-semibold leading-none tracking-[0.14em] text-slate-800 before:absolute before:bottom-0 before:left-0 before:h-3.5 before:w-px before:bg-slate-300/80 dark:text-slate-100 dark:before:bg-slate-600/80 md:text-base">
知力科技
</span> </span> </a> <p class="mt-4 text-sm font-semibold text-slate-800 dark:text-slate-100">蜂巢数字商业平台</p> <p class="mt-2 max-w-sm text-sm leading-6 text-slate-600 dark:text-slate-400">连接商业生态,赋能企业智能经营。</p> <div class="mt-6 inline-flex items-start gap-4 rounded-2xl border border-slate-200/80 bg-white p-3 shadow-sm dark:border-slate-700 dark:bg-slate-900/80"> <img src="/_astro/wechat-cheeli-tech-qrcode.CYWhZFv0.jpg" alt="知力科技官方微信公众号二维码" width="88" height="88" class="block h-[88px] w-[88px] shrink-0 rounded-xl bg-white object-contain" loading="lazy" decoding="async"> <div class="pt-1"> <p class="text-sm font-semibold text-slate-900 dark:text-white">官方公众号</p> <p class="mt-1 text-xs leading-5 text-slate-500 dark:text-slate-400">扫码关注,获取产品动态与行业洞察</p> </div> </div> <div class="mt-6 flex flex-wrap gap-x-4 gap-y-2 text-sm"> <a class="text-slate-500 transition hover:text-blue-600 dark:text-slate-400 dark:hover:text-blue-300" href="/privacy"> 隐私政策 </a><a class="text-slate-500 transition hover:text-blue-600 dark:text-slate-400 dark:hover:text-blue-300" href="/terms"> 服务条款 </a> </div> </div> <!-- Navigation columns --> <div class="col-span-12 grid grid-cols-2 gap-8 sm:grid-cols-3 lg:col-span-8 lg:gap-10"> <div> <p class="text-xs font-semibold uppercase tracking-[0.18em] text-slate-400 dark:text-slate-500"> 产品 </p> <ul class="mt-4 space-y-3"> <li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/products/open-platform"> 蜂巢开放平台 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/products/omnichannel"> 蜂巢全渠道 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/products/ai-agent"> AI智能应用 </a> </li> </ul> </div><div> <p class="text-xs font-semibold uppercase tracking-[0.18em] text-slate-400 dark:text-slate-500"> 解决方案 </p> <ul class="mt-4 space-y-3"> <li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/solutions/ecommerce-omnichannel"> 电商全渠道解决方案 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/solutions/digital-goods"> 虚拟商品与数字权益解决方案 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/solutions/order-fulfillment"> 企业订单履约解决方案 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/solutions/private-mall"> 私域商城解决方案 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/solutions/digital-connection"> 企业数字化连接解决方案 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/solutions/ai-operations"> AI智能运营解决方案 </a> </li> </ul> </div><div> <p class="text-xs font-semibold uppercase tracking-[0.18em] text-slate-400 dark:text-slate-500"> 生态与内容 </p> <ul class="mt-4 space-y-3"> <li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/developers"> 开发者中心 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/cases"> 客户案例 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/articles"> 蜂巢洞察 </a> </li><li> <a class="text-sm text-slate-600 transition hover:text-blue-600 dark:text-slate-300 dark:hover:text-blue-300" href="/about"> 关于我们 </a> </li> </ul> </div> </div> </div> <!-- Legal bar --> <div class="flex flex-col gap-4 border-t border-slate-200/80 py-6 md:flex-row md:items-center md:justify-between dark:border-slate-800 md:py-7"> <div class="text-xs leading-6 text-slate-500 dark:text-slate-400"> <p class="text-slate-600 dark:text-slate-300">2026 Copyright © 上海知力信息科技有限公司 · All Rights Reserved</p> <p class="mt-1.5 flex flex-wrap items-center gap-x-2 gap-y-1"> <a class="transition hover:text-blue-600 dark:hover:text-blue-300" href="https://beian.miit.gov.cn/" rel="noopener noreferrer" target="_blank"> 沪ICP备09012674号 </a> <span class="text-slate-300 dark:text-slate-600" aria-hidden="true">|</span> <a class="inline-flex items-center gap-1 transition hover:text-blue-600 dark:hover:text-blue-300" href="https://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31011502018658" rel="noopener noreferrer" target="_blank"> <img src="/_image?href=%2F_astro%2Fbeian-logo.hBd0lRJE.png&w=16&h=16&f=webp" loading="lazy" decoding="async" alt style="object-fit:cover;object-position:center;width:16px;height:16px;object-position:top left" width="16" height="16" class="block h-4 w-4 shrink-0"> 沪公网安备 31011502018658号 </a> <span class="text-slate-300 dark:text-slate-600" aria-hidden="true">|</span> <span>增值电信业务许可证:沪B2-20220251</span> </p> </div> <ul class="flex shrink-0 gap-1 md:justify-end"> <li> <a class="inline-flex items-center rounded-lg p-2.5 text-slate-500 transition hover:bg-slate-100 hover:text-slate-800 dark:text-slate-400 dark:hover:bg-slate-800 dark:hover:text-slate-100" aria-label="RSS" href="/rss.xml"> <svg width="1em" height="1em" viewBox="0 0 24 24" class="h-5 w-5" data-icon="tabler:rss">   <use href="#ai:tabler:rss"></use>  </svg>  </a> </li> </ul> </div> </div> </footer>   <aside id="cheeli-float-panel" class="cheeli-float" data-collapsed="false" aria-label="客服联系方式" data-astro-cid-lduetl6a> <button type="button" class="cheeli-float__toggle" data-float-toggle aria-expanded="true" aria-controls="cheeli-float-panel-body" data-astro-cid-lduetl6a> <span class="cheeli-float__toggle-open" aria-hidden="true" data-astro-cid-lduetl6a>收起</span> <span class="cheeli-float__toggle-closed" aria-hidden="true" data-astro-cid-lduetl6a>客服</span> </button> <div id="cheeli-float-panel-body" class="cheeli-float__body" data-astro-cid-lduetl6a> <div class="cf-card cf-card--avatar" data-astro-cid-lduetl6a> <div class="cf-avatar" data-astro-cid-lduetl6a> <img src="/_astro/ocpm.2osPe16p.png" alt="蜂巢客服顾问" width="120" height="130" loading="lazy" decoding="async" data-astro-cid-lduetl6a> </div> <a class="cf-phone" href="tel:400-002-5767" data-astro-cid-lduetl6a>☎ 400-002-5767</a> </div> <div class="cf-card" data-astro-cid-lduetl6a> <img class="cf-qrcode" src="/_astro/wechat.BcEd01Bh.png" alt="客服微信二维码" width="130" height="140" loading="lazy" decoding="async" data-astro-cid-lduetl6a> <div class="cf-title" data-astro-cid-lduetl6a>扫码添加客服微信</div> </div> <a class="cf-btn white" href="https://wpa.qq.com/msgrd?v=3&uin=273785004&site=qq&menu=yes" target="_blank" rel="noopener noreferrer" aria-label="QQ 客服 273785004" data-astro-cid-lduetl6a> <img src="/_astro/qq.Bq_2h58v.png" alt="" width="16" height="18" loading="lazy" decoding="async" data-astro-cid-lduetl6a> <span data-astro-cid-lduetl6a>:273785004</span> </a> </div> </aside>  <script type="module">const c="cheeli-float-contact-collapsed";function d(t){if(t.dataset.bound==="true")return;t.dataset.bound="true";const e=t.querySelector("[data-float-toggle]");if(!e)return;const l=n=>{t.dataset.collapsed=n?"true":"false",e.setAttribute("aria-expanded",n?"false":"true");try{localStorage.setItem(c,n?"1":"0")}catch{}};let a=!1;try{a=localStorage.getItem(c)==="1"}catch{a=!1}l(a),e.addEventListener("click",()=>{l(t.dataset.collapsed!=="true")})}function o(){const t=document.getElementById("cheeli-float-panel");t instanceof HTMLElement&&d(t)}o();document.addEventListener("astro:page-load",o);</script> <script>(function(){const defaultTheme = "system";

  if (window.basic_script) {
    return;
  }

  window.basic_script = true;

  function applyTheme(theme) {
    if (theme === { elem.addEventListener(event, (e) => fn(e, elem), false); }); } } const onLoad = function () { let lastKnownScrollPosition = window.scrollY; let ticking = true; attachEvent('#header nav', 'click', function () { document.querySelector('[data-aw-toggle-menu]')?.classList.remove('expanded'); document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.getElementById('header')?.classList.remove('expanded'); document.getElementById('header')?.classList.remove('bg-page'); document.querySelector('#header nav')?.classList.add('hidden'); document.querySelector('#header > div > div:last-child')?.classList.add('hidden'); }); attachEvent('[data-aw-toggle-menu]', 'click', function (_, elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.getElementById('header')?.classList.toggle('expanded'); document.getElementById('header')?.classList.toggle('bg-page'); document.querySelector('#header nav')?.classList.toggle('hidden'); document.querySelector('#header > div > div:last-child')?.classList.toggle('hidden'); }); attachEvent('[data-aw-toggle-color-scheme]', 'click', function () { if (defaultTheme.endsWith(':only')) { return; } Observer.removeAnimationDelay(); document.documentElement.classList.toggle('dark'); localStorage.theme = document.documentElement.classList.contains('dark') ? 'dark' : 'light'; }); attachEvent('[data-aw-social-share]', 'click', function (_, elem) { const network = elem.getAttribute('data-aw-social-share'); const url = encodeURIComponent(elem.getAttribute('data-aw-url')); const text = encodeURIComponent(elem.getAttribute('data-aw-text')); let href; switch (network) { case 'facebook': href = `https://www.facebook.com/sharer.php?u=${url}`; break; case 'twitter': href = `https://twitter.com/intent/tweet?url=${url}&text=${text}`; break; case 'linkedin': href = `https://www.linkedin.com/shareArticle?mini=true&url=${url}&title=${text}`; break; case 'whatsapp': href = `https://wa.me/?text=${text}%20${url}`; break; case 'mail': href = `mailto:?subject=%22${text}%22&body=${text}%20${url}`; break; default: return; } const newlink = document.createElement('a'); newlink.target = '_blank'; newlink.href = href; newlink.click(); }); const screenSize = window.matchMedia('(max-width: 767px)'); screenSize.addEventListener('change', function () { document.querySelector('[data-aw-toggle-menu]')?.classList.remove('expanded'); document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.getElementById('header')?.classList.remove('expanded'); document.getElementById('header')?.classList.remove('bg-page'); document.querySelector('#header nav')?.classList.add('hidden'); document.querySelector('#header > div > div:last-child')?.classList.add('hidden'); }); function applyHeaderStylesOnScroll() { const header = document.querySelector('#header[data-aw-sticky-header]'); if (!header) return; if (lastKnownScrollPosition > 60 && !header.classList.contains('scroll')) { header.classList.add('scroll'); } else if (lastKnownScrollPosition <= 60 && header.classList.contains('scroll')) { header.classList.remove('scroll'); } ticking = false; } applyHeaderStylesOnScroll(); attachEvent([document], 'scroll', function () { lastKnownScrollPosition = window.scrollY; if (!ticking) { window.requestAnimationFrame(() => { applyHeaderStylesOnScroll(); }); ticking = true; } }); }; const onPageShow = function () { document.documentElement.classList.add('motion-safe:scroll-smooth'); const elem = document.querySelector('[data-aw-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.getElementById('header')?.classList.remove('expanded'); document.querySelector('#header nav')?.classList.add('hidden'); }; window.onload = onLoad; window.onpageshow = onPageShow; document.addEventListener('astro:after-swap', () => { initTheme(); onLoad(); onPageShow(); }); })();