Send AI的Solana Agent套件是一个开源框架,用于构建与Solana程序和离链API相互作用的Solana-native Automous代理。这些代理商可以通过自然语言提示来获得钱包平衡,发送和传递令牌并创建新的代币。
这是对的后续行动如何使用Sendai Solana Agent套件建立AI代理。在本文中,我们将介绍如何通过添加更多的链函数(例如获取泳池贸易历史记录)来定制Solana Agent套件。
先决条件
要跟随,请确保您有以下内容:
-
IDE(例如VSCODE)
-
安装了git和一个github帐户
-
对JavaScript或打字稿的基本理解
-
带有PNPM的node.js
创建Coingecko API密钥
我们正在扩展Solana Agent套件,以支持Coingecko的更多Onchain端点。您需要一个Coingecko API密钥进行测试,但最终实现并不需要。
要获取一个Coingecko API键,请前往开发人员仪表板然后单击+添加新密钥在右上角。有关生成和设置密钥的详细说明,请参阅本指南.
安装节点和PNPM
我们使用pnpm特别是因为Solana Agent套件可以通过它管理其包装,从而确保整个项目的兼容性和一致性。要使用PNPM安装Node.js,请使用以下命令:
函数呼叫的工作方式
在跳入代码之前,让我们探索AI代理背后的核心概念。
Solana Agent套件连接到大型语言模型(LLMS),例如OpenAI和困惑。这些模型支持一个称为函数调用的功能,该功能允许AI根据其工作提示或任务使用某些工具或功能时建议使用某些工具或功能。
但是,AI实际上并未执行功能本身。取而代之的是,它返回一个结构化响应,该响应包括它要使用的函数名称以及它认为应该传递的参数。依据套件可以解释此响应并使用这些参数手动调用适当的函数。
例如,如果询问AI“以太坊的当前价格?”,它可能会返回这样的东西:
Solana Agent Kit解释了此响应,执行相应的功能,然后将结果传递回语言模型。此过程使模型能够为用户生成准确的,上下文感知的响应。
在引擎盖下,这是使用Langchain精心策划的,Langchain简化了整个代理工作流程。 Langchain处理工具调用的解析,与适当函数或工具的路由以及结果的无缝交接回到LLM,从而消除了具有外部逻辑的链接模型输出所涉及的许多复杂性。
操作是在JSON规范中定义的,该规范是模型可以选择的可用功能的菜单。如果JSON规格中未包含工具,则代理商将不知道它的存在,也不会尝试使用它。
因此,当我们谈论定制代理商套件时,我们确实在谈论两件事:
-
在JSON规范中定义新工具,以便代理人意识到它们。
-
创建当代理解释工具响应时会触发的实际处理程序功能。
克隆Solana Agent套件
首先,前往Solana Agent Kit GitHub存储库然后单击绿色<>代码按钮复制存储库URL。
然后,打开终端或命令提示并运行git克隆
导航文件系统
根据仙台文档,工具扩展位于SRC/工具/
扩展代理套件
由于我们希望添加更多的Coingecko功能,因此我们将首先创建一个新文件SRC/Tools/Coingecko。但是,如果您添加对尚不存在的新协议的支持,则需要为其创建一个新目录。
我们将从定义将获取我们的外部数据的方法开始。
获取外部数据
查看文件系统,我们可以看到代理工具包可以获取最新或趋势池,但目前缺乏检索泳池贸易历史记录的方法。让我们探索如何添加此功能。
在下面src/tools/coingecko创建一个名为的新文件get_latest_trades_by_pool.ts。在内部,让我们实现一种获取并返回数据的方法。我们需要通过Solana Agent Kit实例和泳池编辑作为参数。
接下来,我们需要在src/tools/coingecko/index.ts:
使该方法可用于代理
一旦导出,您就可以为Solana Agent Kit上课src/agent/index.ts.
该文件包含代理可以与之交互的所有可用功能,并且很大,因此最好找到定义特定协议的其他方法并在此处添加您的方法的部分。
这有助于保持代码的组织,如果您的实施是牢固的,您甚至可以向Solana Agent套件存储库将其包含在官方代码库中。
由于我们只需要返回数据,因此我们可以简单地返回我们之前定义的函数的输出,但是如果需要,您可以自由执行此功能中的任何其他操作。
定义工具
现在,Agent Kit已经可以检索任何Solana池的最新交易方法,下一步是使该功能可用于语言模型。我们通过定义Langchain工具来做到这一点。
该工具充当语言模型与我们的方法之间的桥梁。它告诉模型该工具的所谓是什么,它的作用,什么样的输入(在这种情况下,将池地址作为字符串)以及它返回的输出。它还包括当模型选择使用时在引擎盖下运行的实际功能调用。
这很重要,因为该模型不能自动知道哪些工具可用或如何使用它们,这需要清晰的说明。通过定义工具,我们为访问外部数据的结构化且安全的方式,例如流动性池上的最新交易。
我们将通过扩展Langchain来做到这一点Tool上课SRC/Langchain/coingecko/get_latest_trades_by_pool.ts。您可能需要创建CoingeCko目录和打字稿文件。
和以前一样,我们需要从协议中导出此内容index.ts文件。在撰写本文时,没有Coingecko目录或index.ts文件src/langchain因此,继续创建这些。
在index.ts内部,像这样导出您的扩展课程:
定义动作
一旦工具暴露于模型,我们还需要定义代理系统在内部如何处理此功能。这是动作进来的地方。
动作是对任务的正式定义,包括:
-
任务的名称和描述
-
示例输入和输出以帮助指导使用
-
明喻(自然语言变化),可帮助将不同的短语映射到此特定动作
-
验证模式以确保正确格式化输入
-
实际执行逻辑的处理程序函数使用代理套件
此步骤是关于使系统更强大和灵活。尽管该工具告诉LLM如何使用该方法,但该操作告诉代理何时以及为什么使用它,并确保一切在幕后顺利进行。
通过设置工具和操作,我们正在启用语言模型和基础代理基础架构,以协作并智能响应用户查询。
让我们定义一个新的动作src/action/coingecko/getcoingeckolatesttradesbypool.ts。请注意,您需要创建打字稿文件。
一旦定义了新方法的操作,我们就需要将其用于系统的其余部分 Actions/index.ts。该文件充当代理商可以执行的所有可用操作的中央注册表。
通过在这里导出我们的行动,我们从本质上告诉代理:
“嘿,您可以做一个新的事情,在这里如何找到它。”
实际上,看起来像这样:
测试功能
要测试您的实现,请在项目的根部创建.ENV文件并提供必要的凭据。
接下来,使用PNPM安装项目依赖项(PNPM安装 - 请注意,NPM无法正常工作)。之后,用pnpm运行构建.
最后,要运行应用程序,请执行测试命令PNPM运行测试。这将根据您的选择,以聊天或自动化模式运行您本地版本的Solana Agent套件。
现在,您应该能够提示代理商并使用自然语言对Solana执行编程操作,包括您添加的自定义功能。
考虑因素
在与Solana Agent套件合作时,请务必牢记以下考虑以确保顺畅的操作并最大程度地减少潜在问题:
- LLM(大型语言模型)可以幻觉数据和参数:重要的是要记住,LLM有时会产生错误或捏造的数据,通常称为幻觉。这可能包括幻觉的参数或功能不接受的参数,从而导致错误。更好的模型更有可能了解如何处理用户请求。默认情况下,代理套件将使用OpenAI 4O-Mini运行,但可以在测试/索引
-
代理商可能会调用错误的功能:有时模型难以确定要呼吁给定任务的功能。这可能会导致调用错误的功能,从而导致操作失败或意外行为。最好密切注意日志以识别代理是否试图错误地调用功能。
-
行动描述对于代理商来说可能还不够清楚:代理在很大程度上依赖于所提供的动作描述的清晰度。如果描述模糊或不清楚,则代理可能无法理解预期的任务。在某些情况下,代理可能不会按预期执行。您可能需要使用不同的措辞或描述来实现更好的结果。完善描述并迭代它们可以帮助指导代理到更准确的输出。
-
Solana Agent Kit和LLM通常是新的实验技术,这意味着可能存在尚未发现的错误,意外行为或局限性。它建议避免将代理商连接到您的主钱包或任何实时生产环境,直到您对其稳定性充满信心。这将有助于减轻使用未经测试工具引起的潜在损失或问题的风险。
如果您喜欢这篇文章,请务必在此上查看此文章 如何为加密价格预测构建简单的AI模型
No comments yet