本文深入探讨了大型语言模型(LLM)在处理原始链上数据时面临的固有挑战,指出了链上数据的非表格化、时间依赖性和语义不一致性如何导致LLM输出的错误。文章提出了一套核心工程原则和分层架构,用于将原始链上数据转化为“AI就绪”的数据,确保LLM输出的确定性、可复现性和可验证性,从而提升AI在区块链应用中的可靠性。
大型语言模型并非天生不适合链上用例——事实上,市面上许多加密产品的主要部分都是用LLM构建的。
然而,当LLM只能在区块链层面访问和处理链上数据时,问题就开始浮现。这并非语言模型本身的问题,而是链上数据给LLM分析和决策带来了许多复杂性,最终会导致任何产品都无法使用。
原始形式的链上数据违反了现代LLM管道中的许多常见假设:即数据是自然表格化的、时间稳定的、语义一致的,并且在没有额外上下文的情况下可以安全查询的。区块链是只追加事件日志,具有不断演变的schemas、链重组和依赖于解释的含义。即使是最先进的LLM也无法仅仅通过提示来解决这些结构上的不匹配。
为了安全可靠地处理链上数据,AI系统和LLM需要AI就绪的区块链数据:确定性的、可重新计算的、时间感知的数据抽象,这些抽象使假设明确,结果可验证。没有这个基础,输出可能看起来连贯——但它们将缺乏实际生产所需的保证。
原始链上数据不适用于LLM。
LLM需要AI就绪的链上数据才能准确执行——这些数据必须经过协调、标准化并保持时间上的一致性,以便LLM能够安全且确定性地对其进行推理。
大多数数据系统以结构化表格的形式暴露信息,这些表格代表了状态的稳定视图。区块链则不然。从本质上讲,区块链是只追加的交易和事件日志。它们记录的是状态转换,而不是派生状态本身。
诸如账户余额、代币供应量、协议总锁定价值(TVL)或用户活动等概念并非直接存储在链上——它们是通过解释一段时间内的事件序列来计算的。
这种区别对于基于LLM的系统至关重要。当LLM查询传统数据库时,它通常与一个已经表达了清晰实体和指标的数据集进行交互。而对于链上数据,原始来源只包含低级事件,例如转账、合约调用和发出的日志。重建有意义的状态需要确定性转换:解码合约事件、应用代币标准、核算内部交易以及聚合跨区块的更改。
如果没有这个结构化解释层,看似简单的问题,如“钱包的余额是多少?”或“协议昨天处理了多少交易量?”就会变得模糊不清。不同的管道可能会以略微不同的方式解释相同的底层事件,导致结果不一致。
在传统数据系统中,schemas通常通过显式迁移和版本控制来管理。表格以受控方式演变,所有更改都会被文档化,以便下游系统能够适应。
| Schema不稳定性:数据结构随时间变化的事实。<br>语义漂移:当字段或事件保留相同结构,但其含义发生变化时发生的情况。 |
链上系统远没有那么严格。智能合约可以通过代理模式进行升级,新的事件可以引入,协议也经常修改现有字段的使用方式。
因此,链上数据中相同的结构模式并不总是意味着语义相同。一个简单的例子是标记为“amount”的字段——这在一个合约中可能代表存款,在另一个合约中代表发行的份额,在第三个合约中代表债务偿还。即使在同一个协议内部,事件的解释也可能因版本或治理升级而改变。即使在某个上下文中看起来代表用户的地址,在另一个上下文中可能实际上对应着一个多重签名(multisig)。
所有这些都给与区块链交互带来了挑战。模型倾向于跨重复结构进行泛化,假设相似的数据具有相似的含义。而在链上数据中,这种假设往往是不正确的。准确的解释需要正确类型的加密数据基础设施,将原始事件锚定到稳定的语义定义——将合约输出与随时间变化的一致实体、操作和指标相关联。没有这一步,结构正确的查询仍然可能产生反映错误底层含义的答案。
在区块链系统中,每条数据都相对于特定的时间点存在。
钱包余额、协议指标和合约状态不是作为静态值存储的。相反,它们是截至给定区块所有事件的累积结果。与传统数据库不同,没有独立于链历史的“当前”值。
这对使用区块链数据具有实际影响——诸如“该用户的余额是多少?”或“该协议处理了多少交易量?”等问题,只有与特定的区块高度、时间戳或确定性快照关联时才有意义。随着新区块的添加、链重组的发生或管道重新计算历史数据,值可能会发生变化。
在使用LLM和区块链数据进行构建时,将时间视为一等变量至关重要。明确将查询和响应限定在某个区块或快照中,可确保输出是可重现、可验证的,并与区块链的实际状态保持一致。
在使用LLM构建时,了解与区块链数据交互时可能出现的故障模式至关重要。这些问题并非模型本身固有的——它们源于原始链上事件与LLM管道期望之间的不匹配假设。
当AI系统通过编程方式消费区块链数据时,数据质量也变得至关重要。生产系统需要经过标准化、验证和独立验证的数据集。例如,驱动Allium基础设施的数据集是根据真实区块链数据进行验证的,偏差极低,并经过SOC 1和SOC 2控制审计。没有这些保证,LLM输出可能看起来连贯,但却悄然纳入了不正确或不完整的数据。
实际上,AI使用链上数据最常见的问题分为三类:幻觉指标、不可重现的答案和静默错误,这些错误看似合理但缺乏验证。
当LLM直接查询原始链上数据时,即使是看似合理的结果,在仔细检查时也可能实质上不正确。这在余额、代币转账或协议流方面更常发生,因为底层事件在聚合成有意义的指标之前需要解释。或者在另一种情况下,如果系统整体聚合外部交易,内部合约转账或封装代币可能会被忽略。
如果没有一个从原始事件中重建状态的确定性层,LLM可能会报告与现实不符的金额。幻觉指标并非随机错误,它们可预测地源于不完整或误解的事件序列。解决它们需要管道在向模型暴露数据之前,标准化事件、核算内部流并执行一致的代币标准。
由于区块链事件是持续添加的,同样的查询可能会根据执行时间和方式产生不同的结果。区块链是只追加的,但在短期内并非真正不可变——链重组可以改变最近的区块,并且随着索引逻辑的变化或改进,管道可能会回填或重新计算历史数据。
对于LLM而言,这带来了可重现性挑战。从部分索引数据或不完整事件日志派生的指标可能会随着底层管道的更新而改变。
不可重现的答案并非模型错误。它们是将未处理的数据流暴露给假设确定性输出的系统所导致的结果。
当LLM产生的输出看起来连贯且合理,但实际上事实不正确或不完整,却没有明显的问题指示时,就会出现静默错误。这些错误在链上数据中尤其阴险,因为原始事件日志可以隐藏不立即可见的关键细节,例如内部转账、多步骤协议交互或合约逻辑的变化。
举例来说,LLM可能会报告钱包的总代币持有量,而没有考虑到封装资产或锁定在质押合约中的代币。结果看起来合理,但却错误地表示了区块链的真实状态。与明显的错误或幻觉不同,静默错误很难检测,因为输出在格式和语言上都符合预期模式。
这些错误强调了确定性管道、标准化和验证层的重要性。通过从原始事件重建状态、核算协议流并明确验证结果,可以最大限度地减少静默错误。
在区块链数据上构建可靠的LLM系统,需要的不仅仅是巧妙的提示。
解决方案在于工程:创建结构化、确定性的管道,将原始事件日志转换为可重现、可验证的抽象。通过使用遵循一系列核心原则的区块链数据平台(如Allium),开发人员可以确保输出一致、可解释,并与链的实际状态保持一致。这些原则对于减轻幻觉、不可重现的答案和静默错误至关重要。
暴露给LLM的每个指标都应能从底层区块链事件中无歧义地推导出来。这意味着不能有黑盒聚合、仪表板或逻辑隐藏的预计算摘要。相反,每个值——无论是钱包余额、协议TVL还是代币流——都应该有一个确定性计算路径,可以在任何时间点重播,没有任何变化。
可重新计算的指标提供三个关键优势:
例如,钱包的余额应该通过聚合截至给定区块的所有相关转账和代币交互来计算,而不是依赖快照或外部浏览器数据。同样,流动性、质押或奖励累积等协议级指标应从事件历史中重建,确保LLM输出基于确定性派生事实,而非启发式或近似值。
此原则是所有后续工程实践的基础:如果指标不能完全重新计算,那么在其之上构建的一切——时间范围查询、标准化和面向LLM的API——都将变得不可靠。
在区块链系统中,所有数据本质上都依赖于时间。余额、协议指标和合约状态仅相对于特定的区块或时间戳存在。为确保可靠性,暴露给LLM的每个查询都应明确限定在时间戳、区块高度或确定性快照内。
时间范围查询提供多项优势:
例如,询问“上周五协议的总锁定价值(TVL)是多少?”应该引用与该日期对应的特定区块时的状态,而不是查询最新数据并试图推断历史值。通过明确时间,LLM可以生成确定性、可验证且与链上实际状态保持一致的响应。
语义标准化是指在将原始事件暴露给LLM之前,将其映射到稳定、明确定义的实体、操作和指标的过程。
原始链上事件通常不一致、模糊或协议特定。同一事件类型在不同合约或版本中可能代表不同的操作,而外观相同的字段根据上下文可能具有不同的含义。
标准化确保:
实际上,封装代币的转账可能需要解封装并归因于底层资产,然后才能计入协议的总交易量。同样,改变事件语义的合约升级必须予以考虑,以使历史数据仍然有意义。
如果没有语义标准化,LLM可能会产生看似合理但不一致或误导性的输出,因为外观相似的事件可能代表根本不同的经济行为。
链上事件是低级信号,而非直接答案。为了构建可靠的LLM系统,将原始数据提取与解释和聚合分离至关重要。提取涉及以确定性、可重新计算的形式收集和存储所有相关事件,而解释则应用协议逻辑、标准化和计算来派生有意义的指标。
这种分离提供多项优势:
协议的交易量或质押奖励不应直接从区块链中实时计算。相反,所有相关事件应首先以原始形式摄取和存储,然后确定性逻辑生成LLM消费的可解释输出。这确保了指标一致、可重现,并与链的实际状态保持一致。
允许语言模型安全地与区块链数据交互的系统通常遵循分层架构,该架构保留原始事件、标准化语义并确保所有派生指标保持可验证和时间感知。
像Allium这样的加密数据平台使用MCP,在实时数据和历史数据之上进行构建,而不是试图规避基于历史SQL构建的缺点。使用Allium的AI代理能够通过查找正确的端点而无需进行大量试错,从而减少完成任务所需的查询量,从而整体加快构建速度。
| 层 | 功能 | LLM系统的可靠性保证 |
|---|---|---|
| 原始数据层 | 精确存储网络生成的区块链数据:区块、交易、日志和踪迹。 | 每个答案都可以追溯到规范的链上事件。没有底层事件记录就没有派生指标。 |
| 标准化和归因层 | 将原始事件转换为结构化数据集,如代币转账、协议交互和标记实体。 | 查询基于一致的定义而非合约特定的事件格式,减少结果的歧义。 |
| 查询和服务层(面向LLM) | 暴露稳定表格、指标和时间范围查询接口,供应用程序和AI系统使用。 | 防止不安全或未定义的查询,同时确保答案在特定区块高度或时间范围内可重现。 |
| 验证和重放层 | 从原始数据重新计算指标,并在数据更新时检查输出的差异。 | 检测静默错误,并确保历史结果即使在回填或链重组后仍保持一致。 |
在构建允许LLM安全地与区块链数据交互的系统时,应着重对比无效方法与经验证的最佳实践。避免依赖浏览器快照或预计算仪表板作为真实来源,避免不指定区块高度的查询,或假设原始事件已经语义一致。这些捷径常常导致幻觉指标、不可重现的答案或静默错误。
相反,一流系统——例如在Allium构建的管道——以原始事件作为规范来源,将协议交互标准化为一致的实体和操作,并通过时间范围的、确定性查询暴露指标。
验证和重放层确保输出可重现并与底层区块链状态保持一致。遵循这些实践可使LLM输出可靠、可解释且可扩展,为AI驱动的区块链产品奠定坚实基础。
为什么LLM不能直接处理原始链上数据?
原始链上数据是只追加的事件日志,具有不断演变的schemas和语义漂移。AI和LLM期望稳定、表格化且语义一致的输入,因此向它们提供未处理的事件常常导致幻觉、静默错误或不可重现的答案。
LLM能否仅通过提示解决这些问题?
不。提示无法解决数据中根本性的结构不匹配。可靠的输出需要工程管道来实施链上事件的重新计算、标准化和验证。
为什么基于MCP构建的加密数据基础设施比基于历史SQL构建“更好”?
基于历史SQL构建的加密数据系统更适合一次性分析工作和探索。如果一个团队希望使用AI代理来构建加密产品,那么基于MCP构建的加密数据基础设施更可取——它同时使用实时和历史数据,这非常适合创建实时仪表板、生产应用程序和自动化工作流。
什么是“时间范围”查询,为什么它很重要?
时间范围查询明确引用区块高度、时间戳或确定性快照。这确保了输出一致、可重现,并与区块链的实际状态保持一致,从而防止因链重组或管道回填引起的错误。
为什么区块链schemas被认为是不稳定的?
智能合约可以升级,新事件可以引入,或现有字段可以在不同协议版本中被重新利用。这种schema不稳定性意味着外观相同的字段可能随时间带有不同的含义,LLM在没有标准化的情况下可能会误解。
链重组如何影响LLM输出?
链重组会暂时用新区块替换最近的区块。如果没有时间范围查询和确定性管道,重组前计算的指标可能会静默改变,导致历史答案不一致或误导性。
实现LLM可靠输出和AI利用区块链数据的路径,并非在于精心设计巧妙的提示,而在于工程化数据管道。确定性、时间感知且标准化的链上就绪数据确保指标可验证、查询可重现,并且AI驱动的系统可以安全扩展。
通过在清晰的抽象之上构建,而不是在原始事件之上,团队可以专注于AI能做什么,而不是不断纠正它所误解的。
- 原文链接: allium.so/blog/how-to-us...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!