如何使用Coinbase AgentKit创建Web3 AI代理

  • QuickNode
  • 发布于 2025-01-10 14:51
  • 阅读 18

本文介绍了如何使用Coinbase的AgentKit构建一个能够与区块链网络交互的AI代理,并详细说明了如何通过Twitter与用户互动。文章提供了从安装到配置、代码解析和测试的完整步骤。

概述

Coinbase 的 AgentKit 是一个强大的工具,用于构建能够与区块链网络交互、执行任务并与社交媒体平台上的用户互动的自主 AI 代理。本指南将引导你创建一个简单的 AI 代理,该代理可以管理钱包、部署代币并与 Twitter (X) 上的用户互动。

更喜欢视频教程?跟随这个视频学习如何在不到 15 分钟的时间内使用 Coinbase AgentKit 创建一个 web3 AI 代理。

订阅我们的 YouTube 频道以获取更多视频!订阅

你将做什么

  • 使用 AgentKit 构建一个能够与 Base 区块链交互的自主 AI 代理
  • 为代理添加 Twitter (X) 集成以与用户互动
  • 在 Base 网络上测试代理

你需要什么

  • 一个 QuickNode 账户
  • 开发工具
    • Node.js (>=20.x)、TypeScript 和代码编辑器(如 VS Code)
  • API 密钥
    • Coinbase CDP API 凭证
    • Twitter API(开发者账户)密钥
    • 一个 LLM(OpenAI、Claude 等)API 密钥
  • 熟悉 JavaScript/TypeScript 基础、区块链基础和 AI 工具

什么是 Coinbase AgentKit?

AgentKit 是 Coinbase 的工具包,用于将 AI 代理与区块链功能集成。它充当大型语言模型(LLMs)如 ChatGPT 与区块链操作之间的桥梁,使代理能够:

  • 管理钱包并执行交易
  • 部署代币、铸造 NFT、交易代币并与智能合约交互
  • 自主操作或响应特定输入
  • 可插入任何 AI 代理框架
  • 支持 LangChain 和任何现有的 LangChain 工具

AI 代理架构

AI 代理建立在三个主要组件之上:区块链操作、AI 决策和用户交互。

其核心是使用 Coinbase 的 AgentKit 通过 CDP SDK 处理所有区块链操作(如部署代币或管理钱包)。这一核心功能通过由 LLMs 驱动的 AI 层增强,该层决定采取哪些操作。

我们的实现的特别之处在于我们添加的 自定义 Twitter (X) 集成。虽然 AgentKit 提供了默认的区块链工具,但我们通过自定义 Twitter 工具扩展了系统,使代理能够通过社交媒体与用户互动。

代理可以以三种模式运行:自主(自行决策)、交互(响应直接命令)和 Twitter 模式(我们的自定义添加,响应社交媒体互动)。在本指南中,我们将重点关注自主模式和 Twitter 模式。

所有这些组件都由我们代码库中的 BaseAIAgent 类协调,该类充当中央控制器,在用户输入、AI 决策和区块链操作之间进行协调。这种模块化设计意味着你可以轻松添加自己的自定义工具或修改现有功能,而不会破坏核心系统。

AI 代理架构

如何设置你的 Web3 AI 代理

1. 安装 Coinbase AI AgentKit 插件

在 QuickNode 上安装插件(如 Coinbase AI AgentKit)非常简单。如果你还没有注册,可以在这里创建账户。如果你还没有创建端点,可以在点击左上角的 创建 按钮后选择 创建端点

之后,导航到仪表板上的 Marketplace 选项卡 并选择 Coinbase AI AgentKit 插件。点击 探索 按钮,然后点击 安装 按钮将插件添加到你的账户。

2. 克隆仓库并安装依赖项

我们在仓库中有一个预构建的示例项目,所以你只需要克隆它并设置环境。

git clone https://github.com/quiknode-labs/qn-guide-examples.git
cd ai/coinbase-ai-agent
npm install

3. 配置 API 密钥

在运行代理之前,你需要设置环境变量。项目使用 .env 文件进行配置。

复制示例环境文件:

cp .env.example .env

然后,打开 .env 并添加所需的凭证。

获取 Coinbase CDP API 密钥

Coinbase 的 CDP API 允许 AI 代理在 Base 网络上执行区块链操作。

  1. 访问 CDP 门户
  2. 如果你还没有账户,请创建一个。
  3. 生成一个 API 密钥并 保存密钥名称和私钥
  4. 将以下详细信息添加到你的 .env 文件中:
CDP_API_KEY_NAME="your-cdp-api-key-name"
CDP_API_KEY_PRIVATE_KEY="your-cdp-api-key-private-key"

更多详细信息,请参阅 Coinbase 的 CDP 文档

获取 Twitter (X) API 密钥和访问Token

为了实现社交互动,AI 代理需要访问 Twitter (X) API。

  1. 创建一个 Twitter 开发者账户并注册一个应用。
  2. 获取 API 密钥和Token:
    • 转到应用仪表板并导航到 密钥和Token 部分。
    • 复制 API 密钥、API 密钥、访问Token和访问Token密钥
  3. 编辑应用的权限:
    • 转到你的应用的 设置 选项卡。
    • 找到 用户认证设置 并点击 编辑
    • 应用权限 下,选择 读取和写入(或 读取、写入和直接消息,如果需要)。
    • 确保你的 访问Token和访问Token密钥 具有读写权限。
  4. 获取你的用户 ID:
    • 使用 X 的 用户查找 方法或第三方网站获取你的机器人的用户 ID。

将它们添加到你的 .env 文件中:

TWITTER_API_KEY="your-twitter-api-key"
TWITTER_API_SECRET="your-twitter-api-secret"
TWITTER_ACCESS_TOKEN="your-twitter-access-token"
TWITTER_ACCESS_SECRET="your-twitter-access-secret"
TWITTER_USER_ID="your-twitter-user-id"

更多详细信息,请参阅 X 的 API 文档

获取 OpenAI API 密钥

AI 代理使用 OpenAI(或其他 LLM)进行智能响应和决策。

  1. 访问 OpenAI API 密钥
  2. 如果你的账户没有余额,请添加一些余额。
  3. 生成一个 API 密钥。
  4. 将其添加到你的 .env 文件中:
OPENAI_API_KEY="your-openai-api-key"

如果你使用的是不同的 LLM,请相应地更新 API 密钥。

4. 理解代码库

在运行代理之前,让我们探索代码库以了解 AI 代理的工作原理。

agent.ts 文件是 AI 代理的核心逻辑。本节概述了其功能和关键组件。

BaseAIAgent 类负责:

  • 通过 Coinbase 的 CDP AgentKit 管理区块链交互
  • 使用 LangChain 和 OpenAI 处理 AI 驱动的响应
  • 处理 Twitter 互动,包括响应提及和发布推文
  • 管理钱包数据,确保交易和操作在会话之间持久化

初始化和配置

  • 加载区块链、AI 和 Twitter 交互所需的库。
  • 读取环境变量以获取 API 密钥。
  • 加载保存的钱包数据以持久化区块链状态。
    • 如果钱包数据存在,代理会恢复其状态。
    • 如果没有钱包数据,它会创建一个新钱包。

    // 其余代码

    let walletDataStr: string | null = null;

    // 如果存在,读取现有钱包数据
    if (fs.existsSync(WALLET_DATA_FILE)) {
      try {
        walletDataStr = fs.readFileSync(WALLET_DATA_FILE, "utf8");
      } catch (error) {
        console.error("读取钱包数据时出错:", error);
        // 继续执行,没有钱包数据
      }
    }

    // 其余代码

    // 保存钱包数据
    const exportedWallet = await this.agentkit.exportWallet();
    fs.writeFileSync(WALLET_DATA_FILE, exportedWallet);

    // 其余代码

Twitter API 集成

  • 使用 API 密钥处理认证。
  • 通过监控推文和发布响应与用户互动。
this.twitterClient = new TwitterApi({
  appKey: process.env.TWITTER_API_KEY!,
  appSecret: process.env.TWITTER_API_SECRET!,
  accessToken: process.env.TWITTER_ACCESS_TOKEN!,
  accessSecret: process.env.TWITTER_ACCESS_SECRET!,
});

使用 CDP AgentKit 进行区块链操作

  • 代理配置为在 Base Sepolia 上运行。
  • 使用 Coinbase 的 CDP SDK 执行区块链任务。
const config = {
  networkId: "base-sepolia",
  cdpWalletData: walletDataStr || undefined,
};

this.agentkit = await CdpAgentkit.configureWithWallet(config);

AI 驱动的处理

  • 使用 OpenAI(GPT-4o)分析推文并确定适当的响应。
  • LangChain ReAct Agent 处理输入并决定区块链操作。
const llm = new ChatOpenAI({
  openAIApiKey: process.env.OPENAI_API_KEY!,
  modelName: "gpt-4o-mini",
});

处理 Twitter 提及

  • checkMentions 函数监控 Twitter 提及并提取相关推文。
  • AI 分析推文,确定操作并适当回复。
  • 使用 Twitter API 发布响应并与用户互动。
  private async checkMentions() {
    try {
      // 使用搜索 API 获取最近的提及
      const mentions = await this.twitterClient.v2.userMentionTimeline(
        process.env.TWITTER_USER_ID!, // 你的机器人的用户 ID
        {
          "tweet.fields": ["author_id", "referenced_tweets"],
          expansions: ["author_id"],
          max_results: 10,
          ...(this.lastProcessedMentionId && {
            since_id: this.lastProcessedMentionId,
          }),
        }
      );

      // console.log("提及:", mentions);

      // 检查提及是否存在并包含推文
      if (mentions && Array.isArray(mentions.tweets)) {
        for (const tweet of mentions.tweets) {
          // 如果是转推,跳过
          const isRetweet = tweet.referenced_tweets?.some(
            (ref: { type: string }) => ref.type === "retweet"
          );
          if (isRetweet) continue;

          const author = mentions.includes?.users?.find(
            (user: { id: string }) => user.id === tweet.author_id
          );

          if (author) {
            // 将推文 ID 传递给 handleTweet
            await this.handleTweet(tweet.text, author.username, tweet.id);
            // 在处理提及之间添加小延迟以避免速率限制
            await new Promise((resolve) => setTimeout(resolve, 1000));
          }
        }
      }
    } catch (error) {
      console.error("检查提及时出错:", error);
    }
  }

自主模式 (runAutonomousMode)

  • 定期发布具有有用见解的推文。
  • 使用加权随机选择提示(教育、社区参与、区块链相关操作)。
  • 如果需要,执行区块链交易(如部署代币)。
  async runAutonomousMode(interval = 3600) {
    while (true) {
      try {
        const thought = await this.generateAutonomousAction();

        const stream = await this.agent.stream(
          {
            messages: [\
              new HumanMessage(\
                `根据此提示创建一条引人入胜的推文: ${thought}\n\n` +\
                  `指南:\n` +\
                  `- 专注于通过信息和参与提供价值\n` +\
                  `- 仅在明确提示时执行链上操作\n` +\
                  `- 保持推文简洁友好\n` +\
                  `- 适当使用表情符号\n` +\
                  `- 在相关时包含 #Base #Web3 等标签\n` +\
                  `准备就绪后,使用 send_tweet 工具分享你的消息。`\
              ),\
            ],
          },
          this.agentConfig
        );

        for await (const chunk of stream) {
          if ("agent" in chunk) {
            console.log("自主操作:", chunk.agent.messages[0].content);
          } else if ("tools" in chunk) {
            console.log("工具执行:", chunk.tools.messages[0].content);
          }
        }

        await new Promise((resolve) => setTimeout(resolve, interval * 1000));
      } catch (error) {
        console.error("自主模式出错:", error);
        await new Promise((resolve) => setTimeout(resolve, 60 * 1000));
      }
    }
  }

监控 Twitter 提及 (pollMentions)

  • 在后台运行,每 20 分钟检查一次 Twitter 是否有新提及。
  • 使用 checkMentions() 处理推文并触发响应。
async pollMentions(interval = 1200) {
    // 每 20 分钟检查一次
    console.log("开始轮询提及...");

    while (true) {
      await this.checkMentions();
      await new Promise((resolve) => setTimeout(resolve, interval * 1000));
    }
  }

5. 运行测试

为了确保 Twitter 集成正常工作,你可以运行测试:

npm run test

此测试并未涵盖所有功能,但确保 Twitter 集成按预期工作。如果你计划在生产环境中使用此代码,我们建议创建更多测试以确保全面覆盖。

6. 从 QuickNode 多链水龙头获取 ETH

为了与 Base 测试网交互,你的 AI 代理需要在网络上有一些测试 ETH。

Coinbase 的 AgentKit 能够自动从 Coinbase 的水龙头获取一些测试 ETH,但如果你需要更多,可以使用 QuickNode 多链水龙头 然后将其转移到你的代理的钱包。请注意,使用 EVM 水龙头需要以太坊主网上的 0.001 ETH 余额。你还可以通过推文或登录你的 QuickNode 账户来获得奖励!

7. 运行 AI 代理

代理可以根据其操作方式以多种模式运行。

自主模式(完全自动化的区块链和 Twitter 机器人)

此模式允许代理定期发布推文、监控区块链事件并自动执行交易。

npm run start:autonomous

Twitter 模式(监控和响应提及)

此模式监听 Twitter 提及并与用户互动。

npm run start:mentions

交互模式(命令行控制)

此模式允许你通过命令行与代理交互。然而,我们不在此指南中涵盖此模式。

8. 在 Twitter 上测试代理

一旦代理运行,你可以通过向代理的 Twitter Handle发布推文来测试其功能。代理应根据其 AI 决策逻辑响应你的推文。

确保代理以 Twitter 模式运行(npm run start:mentions)以接收和响应推文。

你可以在下面看到我们的测试推文、响应以及代理执行的区块链操作:

  • 推文: @MyQuickAgent 你好吗?如果可以,你能发送一些 USDC 到 0xsergen.eth
  • 响应: @0xsergen 嘿!刚刚给你发送了 1 USDC。享受吧!🚀
  • 区块链操作: 向 0xsergen.eth 发送了 1 USDC

Twitter 测试

下一步

此时,你的区块链 AI 代理应该已经运行。你现在可以:

  • 扩展 AI 能力 – 通过使用 LangChain 和自定义提示微调其 AI 逻辑来增强代理的响应。有关更多详细信息,请参阅 Coinbase 的 添加代理能力 文档。
  • 部署到生产环境 – 在云服务器或无服务器基础设施上运行代理,以保持其 24/7 运行。
  • 改进 Twitter (X) 互动 – 实施高级情感分析,以根据用户情绪定制响应。
  • 多平台扩展 – 将代理的能力扩展到 Twitter 之外的 Discord、Telegram 或 Web3 dApps。

结论

在本指南中,你构建了一个 Web3 AI 代理,该代理无缝集成了 Coinbase 的 CDP SDK、AI 驱动的决策和实时 Twitter 互动。该项目展示了 AI 和区块链如何协同工作,以创建在 Web3 中智能高效运行的自主代理。

扩展此项目的可能性是无限的。现在是时候迭代、创新并突破 AI 驱动的区块链自动化的界限了。

如果你需要帮助或想分享你正在构建的内容,请在我们的 DiscordTwitter 上告诉我们。

其他资源

以下是一些有用的链接,以扩展你的知识并探索更多

  • 原文链接: quicknode.com/guides/ai/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。