un.Block

Posted on Sep 11, 2023Read on Mirror.xyz

大语言模型如何改变加密世界

由于 LLM 的繁荣,我们最近越来越多地看到 AI + 区块链的项目。除了 LLM 和区块链的结合,我们也看到 AI 回归到区块链领域。ZKML 是其中一个流行的组合。

AI 和区块链是两种具有完全不同特性的技术。AI 需要由集中式数据中心提供的大量计算能力。区块链提供去中心化的计算和隐私,但在大规模计算和大容量存储方面表现不佳。我们仍在探索将 AI 和区块链正确结合的方式。以下是 AI + 区块链项目的概览。

This map is also used in our OFR activity

在这篇研究报告中,我们将主要关注 LLM 在加密领域的应用。由于其能够理解自然语言,LLM 是一项非常强大的技术,开发者主要从以下两个方向使用 LLM:

  • 提供准确和最新的答案,覆盖大量的上下文数据

  • 通过使用不同的代理/工具来完成特定任务

以下是构建一个用于回答用户问题的 LLM 应用的工程流程图。首先,相关的数据源被生成为嵌入并存储在向量数据库中。LLM 适配器使用用户查询和相似性搜索从向量数据库中找到相关上下文。相关的上下文被放入 Prompt 并发送到 LLM。LLM 将执行 Prompt,并使用其拥有的工具生成响应。有时,为了提高准确性和降低成本,LLM 会在特定数据集上进行调优。

LLM 应用工作流程大致可以分为三个主要阶段:

  • 数据准备和嵌入:这个阶段涉及到保留机密信息(例如,项目备忘录)以便未来访问。通常,文件被分割,通过一个嵌入模型处理,然后保存在一种称为向量数据库的特定类型的数据库中。

  • 提示符的制定和提取:当用户提交一个搜索请求(在这种情况下,是对项目信息的搜索),软件创建一个输入到语言模型的提示符序列。最终的提示符通常会融合软件开发者硬编码的提示符模板、称为少数样本(few-shot examples)的有效输出示例,从外部 API 获得的任何所需数据,以及从向量数据库中提取的相关文件。

  • 提示符的执行和推断:在提示符确定后,它们被提供给一个预先存在的语言模型(LLM)进行推断,这可能包括专有模型 API 和开源或个别微调的模型。一些开发者也可能在这个点上加入操作系统,如日志记录、缓存和验证。

我们提出了 8 个潜在方向,LLM 可以在其中帮助区块链领域:

  • 将内置的 AI/LLM 功能集成到区块链中

  • 使用 LLM 分析交易记录

  • 使用 LLM 识别潜在的机器人

  • 使用 LLM 编写代码

  • 使用 LLM 阅读代码

  • 使用 LLM 协助社群

  • 使用 LLM 跟踪市场

  • 使用 LLM 分析项目

将 AI/LLM 功能内置到区块链中

**区块链将具有内置的 AI 功能和模型。**开发者可以通过区块链访问 AI 功能,以执行诸如分类、回归、文本补全和 AIGC 等标准的机器学习任务。开发者可以通过智能合约调用这些 AI 功能。

借助这些内置功能,开发者可以使他们的智能合约更加智能和自主。分类、回归和 AIGC 是典型的 AI 任务。让我们看看这些如何在区块链领域中被使用,以及一些示例项目。

分类

分类可以用于确定地址是机器人还是真人。这可以改变当前 NFT 销售的情况。分类还可以增加 DeFi 生态系统的安全性。DeFi 智能合约可以过滤恶意交易,以防止资金损失。

回归

回归活动可用于预测。它可以用于资金和财富管理。

Numer.ai 已经使用 AI 来帮助他们管理资金。Numer 提供高质量的股市数据。数据科学家在这些数据的基础上应用机器学习来预测股市。

AIGC

很多 NFT 项目都在试图构建一个 IP 宇宙。然而,他们有限的内容无法支撑一个宇宙。如果我们可以在链上使用 AIGC,AIGC 模型可以以相对较低的成本输出无数的内容。这些生成的内容具有类似的标志性品牌风格。模型有可能输出文本、插图、音乐、人声或甚至音乐。这大大扩展了 IP 宇宙。社群参与者可以共同微调模型以符合他们的期望。微调过程也给社群带来了一种参与感。

Botto 已经使用 AIGC 模型生成艺术内容。社群通过投票选出他们最喜欢的图像,以共同微调 AIGC 模型。

如果我们把区块链当作数据库,我们也发现 Databend 将 AI 内置函数集成到他们的数据库中。他们提供如下功能:

  • ai_embedding_vector:为文本文档生成嵌入。

  • ai_text_completion:基于给定的提示生成文本补全。

  • cosine_distance:计算两个嵌入之间的余弦距离。

  • ai_to_sql:将自然语言指令转换为 SQL 查询。

开发者可以将这个功能应用到他们的 SQL 查询中。例如,支持以下查询:

USE <your-database>;
SELECT * FROM ai_to_sql('<natural-language-instruction>'); 

为区块链提供 AI 能力

我们看到几个项目为区块链提供 AI 功能。

Giza 正在从事 ZKML 方面的工作。它在链下生成推断证明,并在链上进行验证。目前支持与 EVM 兼容的链和 StarkNet。Giza 最近宣布了与 Yearn.finance 的合作伙伴关系。Yearn 将使用 Giza 的 AI 功能来提高其风险评估。

Modulus Labs 也在进行类似的工作。他们更多地致力于改进证明系统,以生成高性能的 AI 电路。他们发布了像棋类 AI 和 ETH 价格预测 AI 这样的演示。他们的新演示 zkMon 是世界上第一个使用零知识证明的生成对抗网络(GAN)NFT 收藏品。

使用 LLM 分析交易记录

通常,交易记录的分析是由特定的应用程序完成的,比如 Debank。人工分析交易记录是很困难的,这涉及数据收集、数据清洗和数据分析。用户需要有编码的能力。有了 LLM,我们现在有了一种新的方法。LLM 能够分析并可视化数据。因此,有了 LLM,我们可以根据自定义需求分析链上数据。 我们可以分析胜率、性能比率或任何我们想了解的信息。

RSS3 开发了一个名为 Web3 User Activity 的 ChatGPT 插件以追求这一方向。用户可以输入钱包地址、ENS 或 Lens 来查找链上活动。该插件会以人类可读的方式输出交易。然而,它无法执行像“有多少 Azuki 持有者”和“最热门的智能合约是什么”这样的复杂查询。用户还应注意插件提供的地址和标签的准确性。

DeFiLlama 也发布了一个 ChatGPT 插件。用户可以使用自然语言查询 DeFiLlama 上可用的任何数据。它还可以执行简单的过滤和排序操作。

Dune 也正在将 GPT 集成到其产品中。Dune 计划了以下功能:

  • 查询解释:使用 LLM 来解释查询

  • 查询翻译:使用 LLM 将其他 SQL 语言翻译成 DuneSQL

  • 自然语言查询:用户可以使用自然语言编写查询

  • 搜索:使用 LLM 改进搜索结果

  • 知识库向导:一个用于与文档聊天的聊天机器人

除了分析链上数据,Dune 还将 LLM 集成到其他功能中,这些我们稍后将讨论。

与 Dune 类似,Space and Time 也在致力于使用 OpenAI 将自然语言翻译成 SQL。

区块链数据是高度结构化的数据。使用自然语言直接查询数据库可能无法输出准确的结果。更好的方法是将自然语言转换成 SQL,然后执行相应的 SQL 查询。

使用 LLM 提升安全性

由于 LLM 具有逻辑和推理能力,它可以用于过滤一些恶意交易。它充当智能合约的防火墙。以下是一个特定的例子,用于阻止机器人活动。

在输入地址后,LLM 可以通过第三方插件获取所有交易数据。然后 LLM 分析这些交易记录,并输出该地址是机器人的可能性。这个功能可以插入到不欢迎机器人的 Dapps 中,比如 NFT 销售。

这里有一个通过 ChatGPT 的简单例子。ChatGPT 通过 RSS3 开发的 Web3 User Activity 插件检索账户交易记录。然后 ChatGPT 分析这些交易记录,并输出账户是机器人的可能性。

如果我们输入更多的交易记录并在与机器人相关的数据集上微调 LLM,我们可以获得更准确的结果。以下是此类应用的一个示例工作流程。我们还可以添加缓存和数据库层以提高响应速度和降低成本。

使用 LLM 编写代码

LLM 在开发中得到了广泛应用,帮助开发者更快、更好地编写代码。根据开发者的指令,LLM 可以为他们生成代码。目前,开发者仍需要为 LLM 提供详细的指令。对 LLM 来说,自动为开发者生成整个项目还是比较困难的。

一些用于代码的流行 LLM 模型包括 StarCoder、StarCoder+、Code T5、LTM、DIDACT、WizardCoder、FalCoder-7B、MPT30B。

它们都可以用于编写智能合约,但可能没有针对智能合约数据进行特别训练。因此,还有改进的空间。

目前,HuggingFace 上只有一个与智能合约相关的数据集,即 slither audited smart contracts。它包含 113k 个智能合约,可以用于文本分类、文本生成和漏洞检测。

相比于 AI 辅助系统,自动代码生成更具潜力。由于智能合约相对较短且简单,自动代码生成特别适用于智能合约。在区块链领域,LLM 可以通过几种方式帮助开发者自动编写代码:

  • 编写测试

  • 编写辅助脚本

  • 自动 Fork

  • 全自动生成代码

测试

首先,LLM 可以为编写良好的智能合约生成测试用例。已经有像 Codium 这样的项目可以自动为编写好的项目生成测试。Codium 目前支持 JS 和 TS。Codium 首先会理解代码库,并分析每个函数、文档字符串和注释。Codium 会将代码分析以注释的形式写回文件,并输出一个测试计划。用户可以选择他们喜欢的测试,Codium 将生成选定的测试。

类似地,LLM 可以用于区块链项目,特别是智能合约。通过分析合约代码和相关文档,LLM 可以生成针对特定功能或安全性需求的测试用例。这不仅提高了测试的全面性,还节省了手动编写测试用例所需的时间和努力。

其他 AI 软件也支持为选定的函数生成测试用例。

我们也可以用 ChatGPT 来复现一样的功能。

LLM 对于每个令牌(token)都分配相同的计算能力,因此在复杂任务上可能会产生不准确的结果。基于这些特点,首先请求代码分析是有道理的。这样,LLM 将花费更多的令牌/时间在这些任务上,从而输出更高质量的结果。这种方法也被称为“思维链”(Chain of Thoughts)。

为了使其适用于更长的智能合约,我们需要一个具有更大上下文的 LLM 或者某种工程设计来保留内存。这样可以确保在处理更复杂或更长代码时仍能获得高质量的分析和生成结果。

生成辅助脚本

其次,我们可以使用 LLM 自动生成一些辅助脚本,比如部署脚本

部署脚本可以减少手动部署过程中的潜在错误。这个想法与自动生成测试用例相当类似。

自动 Fork

在牛市中,有很多 Fork 项目。这些 Fork 项目团队只需从原始代码库中稍作修改。这将是 LLM 的一个很好的应用场景。LLM 可以根据团队的需求帮助开发者自动修改代码。通常只需要更改代码的特定部分,这对于 LLM 来说相对容易。

自动生成代码

如果我们再进一步呢?LLM 能否根据开发者的需求自动为他们生成智能合约?与用 JS、Rust 和 Python 编写的其他复杂软件相比,智能合约相对较短且简单。智能合约没有很多外部库,因此对 LLM 来说,弄清楚如何编写智能合约相对容易

我们已经在自动代码生成方面看到了一些进展。GPT-engineer 是其中的先驱之一。用户需要满足其需求并解决 LLM 的任何困惑。然后它开始编码。代码还包括一个可以运行整个项目的脚本。GPT-engineer 可以自动为开发者启动项目。

用户输入他们的需求,GPT-engineer 将分析需求并要求一些澄清。收集所有必要信息后,GPT-engineer 首先输出程序的设计。这包括完成此任务所需的核心类、函数和方法。然后 GPT-engineer 将为每个文件生成代码。

通过这样的 Prompt,我们可以生成一个计数器智能合约。

智能合约可以通过编译并按预期工作。这意味着通过使用 LLM 或类似的自动代码生成工具,开发者可以更快地从概念阶段转向实施阶段,同时减少因手动编码错误而导致的潜在风险。这在快速发展和高度竞争的区块链领域中尤为重要。

因为 GPT-engineer 最初是为 Python 设计的,在生成与 Hardhat 相关的代码时存在一些问题。GPT-engineer 不知道 Hardhat 的最新版本,有时会生成过时的测试和部署脚本。

如果我们的代码有错误怎么办?我们可以将代码库和控制台错误日志提供给 LLM。LLM 可以不断修改代码,直到代码能成功运行。我们看到像 flo 这样的项目在这个方向上进行工作。目前,flo 只支持 JS。

如果我们想提高智能合约生成的准确性,我们可以通过一些新的提示来改进 GPT-engineer。我们可以采用测试驱动的开发,并要求 LLM 确保程序通过某些测试,这样我们可以更好地约束生成的程序。

使用 LLM 阅读代码

由于 LLM 能很好地理解代码,我们可以使用 LLM 编写开发者文档。LLM 也可以跟踪代码更改以更新文档。我们在上次的研究 深入分析 ZKRUs 上的开发者体验 的结尾讨论了这种方法。

阅读文档是传统的方式。与代码聊天是一种新方法。用户可以询问有关代码的任何问题,LLM 将回答用户的问题。LLM 可以为开发者解释代码,帮助他们快速理解链上的智能合约。LLM 也可以帮助没有代码经验的人理解智能合约。

我们已经在 Web2 世界中看到了这种趋势。许多副驾驶工具都具有代码解释功能。

Etherscan 也展示了其新功能,用户可以利用 LLM 的能力与代码进行聊天。

考虑到理解代码的能力,那么审计呢? 在论文 你还需要手动智能合约审计吗? 的实验中,LLM 在识别漏洞方面达到了 40% 的命中率,超过了随机基线。然而,它们也有较高的假阳性率。作者建议,合适的 Prompt 是关键。

除了提示外,限制也可能是以下原因:

  • 当前的 LLM 并没有专门为这个目的进行训练。训练数据可能不涉及智能合约代码库和相应的审计报告。

  • 通常最严重的漏洞是由不同函数组成的逻辑问题。目前的 LLM 受到令牌数量的限制。LLM 不能解决具有非常长上下文的问题,并提高逻辑能力。

这些问题并不难解决。大型审计公司拥有数千份可用于微调 LLM 的审计报告。具有大令牌限制的 LLM 正在推出。Claude 有 100k 的令牌限制,新发布的 LTM-1 有高达 500 万的令牌限制。通过解决这两个问题的努力相结合,我们可能会看到 LLM 更好地识别漏洞。LLM 可以协助审计师并加速审计过程。这可能会逐步发生。可能有一个发展轨迹:

  1. 帮助审计师组织语言并格式化报告。这确保了在同一家审计公司下的语言一致性。不同的团队可能有不同的首选词。

  2. 帮助审计师识别和验证潜在的漏洞。

  3. 自动生成审计草案报告。

使用 LLM 帮助社群

治理是社群中的关键部分。社群成员有权为他们喜欢的提案投票。这些提案将塑造产品的未来。

对于重要的提案,有大量的背景信息和围绕这些提案的社群辩论。所有社群成员在投票前都很难了解这个背景。LLM 可以帮助社群成员快速了解他们选择的影响,并帮助他们投票。

另一个潜在的应用是 Q&A 机器人。我们已经看到基于项目文档的 Q&A 机器人。我们可以更进一步,建立一个更大的知识数据库。我们可以插入不同的媒体和来源,比如演示文稿、播客、Github、Discord 聊天和 Twitter Space。Q&A 机器人不仅会存在于文档搜索栏中,还可以出现在 Discord 上以立即支持社群成员,或者出现在 Twitter 上以传播项目的愿景并回答任何问题。

AwesomeQA 目前正在这个方向上工作。它实现了三个功能:

  • 使用 ChatGPT 集成来回答社群成员的问题

  • 基于他们的消息获取关于社群的数据驱动洞察,如 FAQ 分析

  • 发现哪些消息是重要的,比如未解决的问题

当前 Q&A 机器人面临的难题是如何从向量数据库中准确地获取相关上下文,并将这些上下文提供给 LLM。例如,如果用户针对多个元素提出多个特性的筛选条件,机器人可能无法从向量数据库中检索到相关的上下文。

更新向量数据库是另一个问题。当前的解决方案是重建向量数据库或通过命名空间更新向量数据库。将命名空间附加到嵌入相当于给数据附加标签。这可以帮助开发者以后容易地找到并更新相应的嵌入。

解决这些问题需要一种更智能的检索和更新机制,可能涉及使用更先进的数据结构或算法,以便更有效地与 LLM 协作。这样,Q&A 机器人就能更准确地解答用户的复杂问题,同时也能更容易地进行内容更新和维护。

使用 LLM 跟踪市场

每天都有很多事情发生。市场变化多端,KOL 发布新观点和新思想。新闻简报和产品电子邮件涌入您的邮箱。LLM 可以为您筛选最重要的观点和新闻。它还可以总结内容以缩短您的阅读时间,并帮助您跟上市场节奏

minmax.ai 正在关注新闻。他们提供了特定主题最近新闻的摘要,以及该主题的情感分析。

Boring reports 从新闻中去除了耸人听闻的内容,专注于基本细节,帮助读者做出正确的决策。

机器人咨询是最热门的领域之一。LLM 可以提升机器人咨询的使用率。基于股票信息作为上下文,LLM 可以提供交易建议并帮助用户管理他们的投资组合

Numer.ai 这样的项目使用 AI 来预测市场并操作基金。也有由 LLM 管理的投资组合。用户可以在 Robinhood 上关注这些投资组合。

Composer 结合了交易算法与 AI。AI 根据用户的洞见构建特定的交易策略。然后 AI 会自动回测这些交易策略。如果用户对策略满意,Composer 可以自动为用户执行策略。

使用 LLM 分析项目

分析项目涉及阅读大量材料和编写长篇研究论文。LLM 可以读写短段落。如果我们能将其能力扩展到更长的段落,是否意味着 LLM 在某种程度上可以输出一些项目研究?很可能是的。**我们可以输入白皮书、文档或活动演示,让 LLM 分析项目和创始人。**由于令牌的限制,我们可以先编写论文的大纲。然后根据获取的来源更新每一节。

像 BabyAGI 这样的项目已经在这个方向上进行工作。下面是 BlockAGI(BabyAGI 的一个变种)的一个示例输出。

由于令牌限制和模型复杂性,这种方法可能需要多次迭代和人工验证。但随着模型的改进和更大的令牌限制,LLM 可能会成为一个非常有用的工具,用于快速生成项目分析和研究报告。这不仅可以加速研究过程,还可以提供更多角度和深度的分析。

LLM 也可以基于 Twitter 和公开演讲来分析创始人的个性。例如,Tweet 分析器获取最近的推文,并使用 LLM 来分析人物。这种分析可以提供关于创始人领导风格、沟通方式或者对项目方向的见解等方面的有用信息,进而帮助投资者或社群成员更全面地了解项目和团队。

总结

这里有 8 个具体方向,LLM 在不久的将来可以帮助区块链社群:

  1. 将内置的 AI/LLM 功能整合到区块链中

  2. 利用 LLM 分析交易记录

  3. 采用 LLM 提升安全性

  4. 使用 LLM 快速、安全地编写代码

  5. 利用 LLM 阅读代码

  6. 用 LLM 协助社群

  7. 实施 LLM 跟踪市场

  8. 应用 LLM 分析项目

LLM 可以惠及加密领域的所有成员,包括项目所有者、分析师和工程师。创始人可以使用 LLM 自动化文档和 Q&A 任务。工程师可以用 LLM 更快、更安全地编写代码。分析师可以更容易地研究项目。

从长远来看,我们也发现 LLM 在 GameFi 中有潜在的应用机会。LLM 可以生成更有趣的任务,并在游戏内扮演不同的角色。游戏世界将会感觉更真实、更有趣。

LLM 不仅可以整合到现有项目中,还为新入行者提供了机会。例如,在链上数据分析领域已有顶级参与者。Dune 可以整合 LLM 以提升用户体验。然而,LLM 也为新入行者创造了机会。这些新人可以将 LLM 置于产品设计的中心。

Web2 和 Web3 世界在 LLM 应用方面确实有一些共同的用例,但它们可能会以不同的方式实施产品。由于我们在 Web3 世界中使用的数据与 Web2 世界中的数据不同,LLM 的知识库在 Web2 和 Web3 中也可能有所不同。

由于 LLM 的兴起,我们看到 AIxBlockchain 越来越受欢迎。然而,许多 AIxBlockchain 在短期内并不实用。区块链和 ZK 不能提供大量的计算能力来训练和推断一些复杂的模型。小型模型没有足够的能力解决复杂任务。更实用的方法是 LLM 在区块链领域的应用。

LLM 社群正在努力提高令牌限制和响应准确性。区块链社群需要解决的是数据源和数据管道。经过清洗的数据可以用于微调 LLM,以提高区块链上下文下的准确性。数据管道可以将更多与区块链相关的应用整合到 LLM 中,并开发更多针对加密货币的代理。