构建模型

要让一切跑起来,需要准备几个部分。

我从 Hugging Face 下载 Qwen 模型和 llama.cpp 源代码,构建中间模型,最后将它转换成 llama.cpp 使用的 GGUF 格式。过程虽然涉及一些技术步骤,但并不复杂。最费时间的是下载 18 GB 数据。

然后,我启动 llama_server,在浏览器里打开它……

它就在那里。

一个带聊天框的网页。

我给自己搭了一个聊天机器人。

这件事既酷,又没那么有意思。

毕竟我已经有 ChatGPT,它的知识和能力要强得多。


与它交谈

当然,我首先开始问它各种问题。

我问了一些常识问题。它了解历史人物(例如 Rudolf Steiner)、地理、科学,还有编程……

答案是:它懂得相当多。

光是这一点就已经很令人惊讶。它没有查询 Google,也没有调用网上的巨型 AI 服务。模型和它所知道的东西,就在我自己的电脑里。

然后,我问它是否知道 Patrick Loeber 的 AI 贪吃蛇教程。

它知道我在说什么。

这引起了我的注意。

Patrick Loeber 的项目对我来说很熟悉。我自己的 Snake Lab 项目,正是从研究让 AI 学会玩贪吃蛇的实验发展而来的。所以,我不再只是问模型一些冷知识,而是开始和它聊我真正了解的主题。

它居然能给出有见地的回应。

真酷。


接下来呢?

问题是,我手里仍然只是一个聊天机器人。

我可以提问,它可以回答。这很了不起,但并不是我真正感兴趣的事情。

我想在程序代码里使用 LLM。

于是我写了一个很粗糙的对话循环。

当时并没有什么宏伟计划。我只是想写一个程序:向模型发送提示词,获取回复,然后用这个回复做点事情。

这就引出了一个重要的工程问题:

我应该让它做什么?

显然,我的答案是:

让它为数字写俳句。


随机数字俳句

程序生成一个随机数,再连同“为这个数字写一首俳句”的提示一起发送给 LLM。

模型写出俳句。

程序将结果写入日志文件。

A new age starts today
Apollo touches the moon's face
New world begins to shine

1970

接着,它又生成一个数字。

再一个。

再一个。

很快,我就拥有了一台本地运行大语言模型的电脑,模型在那里沉思随机整数,并为它们写诗。

说不上有什么实际用途。

但它能用。

真正重要的并不是俳句,而是这个循环:

  1. 我的程序生成输入。
  2. 程序构造提示词。
  3. 程序把提示词发送给 LLM。
  4. LLM 生成回复。
  5. 程序捕获回复。
  6. 重复这个过程。

这是我第一次不再只是与 AI 聊天。

而是把 AI 放进了程序内部。


结论

我的第一个本地 LLM 实验没有产生任何实际价值。

它只是在为随机数字写俳句。

但那个小实验回答了我真正关心的问题。

我可以在本地运行 LLM,从自己的软件与它通信,把信息交给它,获取回复,记录回复,再重复整个过程,而无须一直坐在聊天窗口前。

那时候,我还没有 Ax3l。

甚至连完整的构想都还没有。

我只有一个循环。

以及一个写满俳句的日志文件。


链接