文章/教程 solagent.rs 使用入门

zTgx · 2025年03月12日 · 7 次阅读

一、引言

在 Solana 区块链开发领域,构建功能强大的交易代理至关重要,它能助力我们高效完成诸如查询余额、获取交易吞吐量(TPS)以及关闭空代币账户等诸多操作。solagent.rs 恰似一个功能完备的工具宝库,为开发者们提供了便捷途径来实现这些需求。本教程将紧密围绕给定代码,阐释如何运用 solagent.rs 打造一个 Solana 交易代理,并全方位剖析其中每一个步骤的作用。

二、环境准备

  1. 安装 Rust 开发环境
    • 首先,打开终端,输入以下命令检查 Rust 是否已经安装: bash rustc --version
    • 倘若未安装,可径直访问 Rust 官方网站,依照页面指引逐步完成安装流程。
  2. 添加项目依赖
    • 开启项目的 Cargo.toml 文件,加入如下必要依赖:
[dependencies]
anyhow = "1.0"
solagent-core = "0.1.6"
solagent-rig-solana = "0.1.2"
solagent-wallet-solana = "0.1.3"

三、代码详解

(一)导入必要的模块

use std::{env, sync::Arc};

use anyhow::Result;
use solagent_core::{
    rig::{
        agent::Agent,
        providers::{self, openai::CompletionModel},
    },
    ConfigBuilder, SolanaAgentKit;
};
use solagent_rig_solana::{
    close_empty_token_accounts::CloseEmptyTokenAccounts, get_balance::GetBalance, get_tps::GetTps,
};
use solagent_wallet_solana::Wallet;
  • std::{env, sync::Arc}
  • solagent_core:作为 Solagent 的核心模块,它封装了代理构建、配置生成等一系列核心功能,是整个 Solagent.rs 工具链正常运转的关键支撑。
  • solagent_rig_solana:此模块聚焦于 Solana 区块链特有的操作,包含了关闭空代币账户、精准获取余额以及实时监测交易 TPS 等实用工具,为开发者与 Solana 区块链的深度交互提供了便利。
  • solagent_wallet_solana::Wallet:专门负责处理 Solana 钱包相关的繁杂操作,钱包创建、密钥管理,确保钱包功能的安全与稳定。

(二)创建 Solana 代理函数

pub fn create_solana_agent() -> Result<Agent<CompletionModel>> {
    // 从环境变量中获取 Solana 私钥并创建钱包实例
    let wallet = Wallet::from_env("SOLANA_PRIVATE_KEY").expect("SOLANA_PRIVATE_KEY");
    // 从环境变量中获取 Solana RPC URL
    let rpc_url = env::var("SOLANA_RPC_URL").expect("SOLANA_RPC_URL");
    // 使用默认配置构建器创建配置
    let config = ConfigBuilder::default().build();

    // 创建 Solana 代理套件实例
    let solana_agent_kit = SolanaAgentKit::new(wana, &rpc_url, config);
    let solana_agent_kit = Arc::new(solana_agent_kit);

    // 创建关闭空代币账户工具实例
    let close_acc = CloseEmptyTokenAccounts::new(solana_agent_kit.clone());
    // 创建获取余额工具实例
    let balance = GetBalance::new(solana_agent_kit.clone());
    // 创建获取 TPS 工具实例
    let tps = GetTps::new(solana_agent_kit.clone());

    // 创建 OpenAI 客户端实例,使用 Ollama 服务
    let client = providers::openai::Client::from_url("ollama", "http://localhost:11434/v1");
    // 创建代理实例
    let agent = client
     .agent("llama3.2")
     .preamble("You are an solana trading agent here to help the user.")
     .max_tokens(1024)
     .tool(close_acc)
     .tool(balance)
     .tool(tps)
     .build();

    Ok(agent)
}

1. 获取钱包和 RPC URL

let wallet = Wallet::from_env("SOLANA_PRIVATE_KEY").expect("SOLANA_PRIVATE_KEY");
let rpc_url = env::var("SOLANA_RPC_URL").expect("SOLANA_RPC_URL");

2. 构建配置

let config = ConfigBuilder::default().build();
  • 此处借助 ConfigBuilder 的默认配置构建器,如同按照一套精心设计的标准模板,快速搭建起一个适用于 Solana 代理的基础配置对象。这个配置对象将在后续的代理创建与运行过程中,规范各项参数,确保系统的稳定性与一致性。

3. 创建 Solana 代理套件

let solana_agent_kit = SolanaAgentKit::new(wallet, &rpc_url, config);
let solana_agent_kit = Arc::new(solana_agent_kit);
  • 首先,利用 SolanaAgentKit::new 函数,将前面获取的钱包实例、RPC 网址以及配置对象巧妙融合,精心打造出一个功能完备的 Solana 代理套件实例。集成了钱包操作、网络交互、配置管理等多项核心功能。

4. 创建工具实例

let close_acc = CloseEmptyTokenAccounts::new(solana_agent_kit.clone());
let balance = GetBalance::new(solana_agent_kit.clone());
let tps = GetTps::new(solana_agent_kit.clone());
  • 分别运用 CloseEmptyTokenAccounts::newGetBalance::newGetTps::new 函数,以克隆后的 Solana 代理套件为基石,逐一创建出关闭空代币账户、获取余额以及获取 TPS 的专业工具实例。这些工具实例如同训练有素的特种兵,各自具备独特的技能,能够精准地执行对应的区块链操作任务。

5. 创建 OpenAI 客户端和代理 (ollama)

let client = providers::openai::Client::from_url("ollama", "http://localhost:11434/v1");
let agent = client
 .agent("llama3.2")
 .preamble("You are an solana trading agent here to help the user.")
 .max_tokens(1024)
 .tool(close_acc)
 .tool(balance)
 .tool(tps)
 .build();

6. 返回代理实例

Ok(agent)
  • 经过一系列复杂而精妙的构建过程,最终将这个功能完备、配置合理的代理实例作为函数的返回值优雅送出,为后续的业务逻辑调用提供有力支持。

四、使用示例

#[tokio::main]
async fn main() {
    match create_solana_agent() {
        Ok(agent) => {
            // 这里可以使用代理进行具体的操作
            println!("Solana agent created successfully!");
        }
        Err(e) => {
            eprintln!("Failed to create Solana agent: {}", e);
        }
    }
}

GitHub: https://github.com/zTgx/solagent.rs

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号