使用 ai16z 创建 AI Agent

csjcode 发布于 2025-02-21 阅读 2339

本文介绍了如何使用 ai16z 的 Eliza 框架创建一个 AI Agent,特别是针对 Twitter 平台的集成。文章详细讲解了 Eliza 的安装、配置、主要功能、Twitter 连接设置、LLM 模型配置以及如何自定义 AI 角色。此外,还提供了高级用法、安全建议、参考资料以及故障排除等内容,帮助读者快速上手并构建自己的 AI Agent。

创建一个 AI 代理,使用 ai16z Eliza Typescript/Python 库学习 AI 代理领域 — 详细步骤

这是我的上一篇 AI 开发技巧文章的第二部分, 详细介绍了 AI 代理的新趋势,深入探讨了用例和当前场景以及可用的开发库

如果你没有看过,请查看这里:AI 代理 + 加密货币:下一个热门技术热潮?

? AI 代理 + 加密货币:下一个热门技术热潮? \ \ AI 代理炒作周期在 AI/开源开发者和加密货币社区中变得紧张 \ \ medium.com

在本文中,我们将安装并构建一个使用 Eliza AI 框架的 AI 代理, 详细介绍其主要功能、与 Twitter 的集成、LLM 模型配置以及自定义 AI 角色。

⚠️ 更新(2025 年 2 月 19 日): 他们更改了他们的 github 帐户,我正在尝试修复文章中的所有链接,它们应该在下面修复,但是如果你遇到损坏的链接,主仓库是https://github.com/elizaOS/eliza

对于新手/非开发者: 你也可以尝试这个! 但是这可能需要更长的时间,因为你需要一个 Github 帐户和一些你不太熟悉的少量开发内容,但这完全没问题(没有硬核编程)。

到最后,你将为你自己的 Twitter、Telegram 或 Discord 创建自己的自主 AI 代理。 发挥创意! 你是老大! AI 代理可以用于商业、营销、社交/社区营销、金融和交易、回答客户问题等!

让我们深入研究 ai16z 的 Eliza框架, 它使用 Typescript 和 Python,并用 15-20 分钟创建一个 AI 代理。

  1. 入门
  2. (可选) 如果你需要 Node 23+,进行小修复
  3. 安装和构建 Eliza
  4. ai16z Eliza 的主要功能
  5. Twitter 设置和连接
  6. 设置 LLM 模型配置
  7. 设置 AI 代理使用的角色
  8. 高级用法
  9. 其他安全/秘密建议
  10. 开发教程参考
  11. 问题排查

⚠️ 更新(2025 年 2 月 19 日): 他们更改了他们的 github 帐户,我正在尝试修复文章中的所有链接,它们应该在下面修复,但是如果你遇到损坏的链接,主仓库是https://github.com/elizaOS/eliza

入门

准备好你的 VSCode、Cursor 或任何你正在使用的 IDE。

我们将详细检查特性, 但让我们通过在 5 分钟内安装和构建来获得一个“快速胜利”。

我们需要从 Eliza github 目录克隆。

## 创建一个工作目录,我首先创建了一个 aiagents 文件夹

$ mkdir aiagents
$ cd aiagents/
$ git clone https://github.com/elizaOS/eliza.git

接下来,我们要下载最新版本

## 更改为 eliza 项目目录
$ cd eliza/

## 检出最新版本
## 建议检出最新版本

$ git checkout $(git describe --tags --abbrev=0)

## 使用 IDE 编辑文件,或使用 nano 或 vim
$ code .

git checkout 的输出,版本可能因你执行此操作的时间而异

现在我们需要从 package.json 安装(你应位于 eliza/ 目录中):

$ pnpm install

这将安装我们需要的所有软件包。

接下来,我们将需要构建以确保安装正确。

$ pnpm build

⚠️ (可选) 我在我的 node 环境中遇到的 2 个小错误

如果这对你来说很好,请跳过此步骤,但这是我第一次运行它时实际上遇到了一些小错误。

WARN Unsupported engine: wanted: {“node”:”23.3.0"} (current: {“node”:”v21.7.3",”pnpm”:”9.12.3"})

你至少需要使用 node 23.3。 如果你使用的是 macOS、Windows 或 Linux,则错误可能会有所不同。

因此,要解决 macOS 上的此问题:

  • 我已经安装了 nvm,但如果你没有安装,则应 安装它,它允许你轻松切换 node.js 版本并更新它,并且可在 macOS、Windows 或 linux 上使用
  • 我只需要运行:
 $nvm install

Output:
Downloading and installing node v23.3.0...
Downloading https://nodejs.org/dist/v23.3.0/node-v23.3.0-darwin-arm64.tar.xz...
Computing checksum with sha256sum
Checksums matched!
Now using node v23.3.0 (npm v10.5.0)

(可选,如果出现错误) 我确实有另一个小错误, 即我笔记本电脑上的 nvm 未在我的当前 bash shell 环境中设置,并且我还有一个竞争的 node.js 也全局安装了,我必须删除它。 我删除了全局的那个,并且通过在我的 IDE bashrc 代码 ~/.bashrc 中编辑并在 ~/.bashrc 中添加此代码可以轻松解决 shell 问题

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
  • ⚠️ 此外 - 如果你对 nvm、node 或 bash 环境配置或安装版本进行了任何更改,请重新启动终端窗口,以便更改生效。 ⚠️

$ nvm use 23
Now using node v23.3.0 (npm v10.5.0)

$ node -v
v23.3.0

并且... 我们又回到了完成事情的状态。

? 感谢阅读! … ? 请鼓掌并分享这篇文章,谢谢! ?

安装和构建 Eliza

让我们从安装开始,如果你没有正确的 node 版本,你可能需要重做(pnpm 就像 npm 但更快/更高效,但你可以使用 npm):

$ pnpm i

现在我们构建

$ pnpm build

所以这很好。

让我们快速绕道一下,提醒我们为什么要这样做。

ai16z Eliza 的主要功能

我们可以用 ai16z 的 Eliza 做什么?

在我们继续进行快速入门之前 - 我们可以在这里做什么?

让我们查看主要功能,从主要 GitHub 页面释义:

  • “功能齐全的 Discord、Twitter 和 Telegram 连接器;直接 API 访问”。 这些集成允许与流行的社交和消息平台(如 Discord、Twitter 和 Telegram)进行无缝通信和交互。 自动化任务、发送更新以及在这些平台上与 AI 实时交互。 你还可以编辑代码,因为它是开源的,可以满足你的需求,例如,你可以发送到 AWS。
  • “多代理和房间支持。” 通过允许多个 AI 代理在共享环境或“房间”中运行来促进协作 AI 交互。 你可以创建具有不同个性的单独角色,也许他们正在集思广益! 我为需要多个 AI 之间或用户与 AI 之间协作的复杂任务提供解决方案
  • “轻松摄取和与你的文档交互。” 提供了一种直接的方式来上传、分析和查询你的文档,允许用户使用 AI 代理来提取见解、总结内容或回答问题。
  • “可检索的内存和文档存储。” 保留以前的交互的内存系统和一个用于存储和回忆信息的文档存储库。 这是一个轻量级的内存系统,但至少足以确保存在一些内存。 此功能增强了上下文感知响应,并允许用户有效地重新访问或重用过去的数据。
  • “高度可扩展 - 创建你自己的操作和客户端。” 通过允许开发人员创建新操作(专门的任务)和客户端(独特的用户界面)来支持自定义,使平台适应特定的工作流程和需求。 一个模块化的插件系统可用并且正在扩展。 你可以轻松地修改它以创建新的 UI 和自定义任务,因为它正在使用可编辑的开源代码。
  • “支持许多模型 Llama、OpenAI、Anthropic、Grok 等。” 该平台确保与本地托管和基于云的 AI 模型兼容。 用户可以选择最适合其性能、隐私或成本要求的模型,包括 OpenAI 的 GPT 和 Anthropic 的 Claude 等流行的选项。
  • 高级: “内置的 RAG 内存系统、文档处理、媒体分析和自主交易功能。”

Twitter 设置和连接

出于安全考虑,我强烈建议为你的代理创建一个新的 Twitter 帐户,而不是使用你的常规帐户。

仅用于演示,我们需要将密码放入 .env 文件中,不是 好的安全做法,除非用于本次演示。? 你也可以尝试使用下面的 cookie 方法(更安全一点),但是目前存在一些问题,我尚未进一步调查。

仅将此临时方法用于测试演示。 重复不要将你的 Twitter 密码以纯文本形式永久存储在本地 .env 文件中,尤其是现有或更大的 Twitter 帐户或长期使用的密码... 这对于该 Twitter 帐户来说存在安全风险。

  1. 设置一个新的 gmail 帐户。
  2. 设置与 gmail 关联的新 X/Twitter 帐户。 使用密码或 Google/X 登录进行设置。
  3. 提示:如果你使用了 Google/X 社交... 设置密码:你将必须设置新密码,并注销 X,然后在重新登录时使用“忘记密码”,它将引导你完成设置。

好的,现在你有一个新的 AI 代理 gmail 和 X/Twitter 帐户,并且密码已设置

接下来,我们必须设置机器人以能够自动登录到 Twitter。

将你的 .env.example 文件复制到 .env

cp .env.example .env

仅在 .env 中进行更改, 这是 Eliza 代理软件使用的配置文件(不是 .env.example)。 此外,请确保此 .env 位于你的 .gitignore 文件中(它应该已经在其中),这样你就不会错误地将它与你的密码一起提交到 github。

在此部分中,对于 X/Twitter,你只需在 .env 文件中编辑这些内容:TWITTER_USERNAME、TWITTER_PASSWORD、TWITTER_EMAIL

## Twitter/X 配置
TWITTER_USERNAME= # 帐户用户名
TWITTER_PASSWORD= # 帐户密码
TWITTER_EMAIL=    # 帐户电子邮件

提示或者... 相反,一种更安全的方法,但可能需要更多的工作才能使其正确工作,即通过从 Chrome 开发工具获取 cookie 并将其放在此处来使用此方法:

TWITTER_COOKIES= # 帐户 cookie

你不需要两者都使用,可以使用密码或 cookie。

你还可以在同一文件中调整发布间隔。

## 发布间隔设置(以分钟为单位)
POST_INTERVAL_MIN= # 默认值:90
POST_INTERVAL_MAX= # 默认值:180
POST_IMMEDIATELY=

接下来,让我们连接我们正在使用的 AI 模型。

设置 LLM 模型配置

在同一 .env 文件中,找到包含各种 AI 提供商配置的部分。

我正在使用 OpenAI,但你可以使用许多其他方法和 LLM,它是非常可配置的。 例如,有些人使用 Anthropic Claude,另一些人使用具有免费 API 端点的 Gaia,还有一些人使用 OpenRouter,它就像 LLM 的中介 API 平台,因此你可以切换它们。

在 OpenAI 平台中,我为此项目创建了一个 API 密钥(从 项目 标题下创建项目)。

  • 你还应该添加限制和警报

OpenAI 限制和警报

提示:对于大规模生产,OpenRouter 非常适合轻松更改为许多不同的 LLM。

但这就是我使用 OpenAI 所做的,我将其保留在 gpt-40-mini 上并插入了我的密钥:

## AI 模型 API 密钥
OPENAI_API_KEY= # OpenAI API 密钥,以 sk- 开头

XAI_MODEL=gpt-4o-mini

设置 AI 代理使用的角色

进入角色配置文件。

我们需要复制并创建一个新的角色文件。

角色目录位于此处:eliza/characters/

你将看到一些已经在其中的示例。

你会注意到它们有一些共同的元素。 你可以编辑这些内容,以便为 LLM 提供一些关于如何进行帖子和交互的背景信息。

这是 Trump 的一个,扫描一下并查看一些设置选项:

提示:所有角色组件的说明都在这里:https://ai16z.github.io/eliza/docs/core/characterfile/

将该文件复制到一个新文件中,用于你要创建的角色,然后删除所有库存角色内容并添加你自己的内容。

提示:你可以使用 ChatGPT 或其他 AI 来帮助你填写此内容!

一旦你填写完所有内容,我还将我的 modelProvider 更改为 openai(查看其他文档)“modelProvider”: “openai”,

    "modelProvider": "openai",

提示:如果你将其保留为空数组 [],它将只在你的终端上打开一个聊天,这对于测试和调试很有用。

提示:此外,完成后,我建议将所有其他角色文件移动到存档目录,并从角色目录中删除。 我注意到代理似乎将其他角色记住了,并且它在某个时候导致了我的 OpenAI 错误(Token太多)。 我尚未对此进行调查。

? 感谢阅读! … ? 请鼓掌并分享这篇文章,谢谢! ?

更新代理 Typescript 文件

现在我们必须更新 typescript 文件以确保调用正确的角色。

老实说,我还没有玩过很多(截至 12 月 14 日),似乎有很多选项,但我只是让它工作并进入了其他方面... 所以这可能是一个很好的领域来探索更多。

我可以告诉你我做了什么,它主要与 Nader Dabit 视频 相关... 在本文中,我观看了 3 个不同的视频,自己完成了它并添加了我自己的经验和技巧!

以下是我所做的文件更新,正如 Nader Dabit 的视频中所建议的那样:

agent/src/mainCharacter.ts

import {
    Character,
    ModelProviderName,
    defaultCharacter,
    Clients,
} from "@ai16z/eliza";

export const mainCharacter: Character = {
    ...defaultCharacter,
    name: "your_character_name",
    modelProvider: ModelProviderName.OPENAI,
    clients: [Clients.TWITTER],
    // Add more customizations here
};

你将需要查看类型提示和文档以输入你的提供程序,我的提供程序是 modelProvider: ModelProviderName.OPENAI,

然后我们需要将此 mainCharacter 导入到主 index.ts 中 - 在大约第 50 行的导入末尾添加此行

agent/src/index.ts

import { mainCharacter } from "./mainCharacter";

在此部分中,将 defaultCharacter 替换为 mainCharacter(应该在第 188 行左右)

    if (loadedCharacters.length === 0) {
        elizaLogger.info("No characters found, using default character");
        loadedCharacters.push(mainCharacter);
    }

在第 481 行左右,将 defaultCharacter 替换为 let characters = [mainCharacter];

  let characters = [mainCharacter];

    if (charactersArg) {
        characters = await loadCharacters(charactersArg);
    }

启动代理

一旦我们完成了所有这些操作,它就非常简单了!

我们所要做的就是

pnpm start

在某个时候,我遇到了一个错误,我发现如果我正在使用一个代理,那么通过命名该代理角色从 CLI 启动它会更容易。

因此,如果你在使正确的角色工作时遇到任何问题:

pnpm start --characters="characters/mycharactername.character.json"

mycharactername.character.json 替换为你的角色名称文件。 这可以确保你被定向到正确的角色。

你应该在 cli 中看到一些诊断消息,例如:

记住,如果你将字符文件中的提供程序留空[] ,那么它将不会连接到 twitter,它只会显示为你的终端窗口中处于活动状态的代理。

✅ 这将创建一个仅限本地的服务器,你需要保持 cli 打开才能使其持续运行,如果你关闭笔记本电脑或 cli 窗口,它将停止运行。

对于生产, 你可以将其部署到应用程序托管服务(如 Vercel)或云托管,以便它可以在云中独立运行。

我遇到的其他错误:

  • 我最初遇到的主要错误来自 OpenAI,是Token上下文太大了。 当删除字符目录中无关的角色文件时,此问题已解决。

我为营销创意创建的 AI 代理之一是 ?1DayOS,并且仍然需要进行微调,而不是这样做,我正在写这篇文章?!!!! https://x.com/1DayOSAI

1DayOS 营销代理 - https://x.com/1DayOSAI

上面的快速入门教程应该能很好地开始!

高级用法

该文档提供了一些高级用法的技巧,因为我们只完成了入门的基础知识。

以下是你还可以探索的更多项目,请参阅 高级

  • 视频处理服务:集成高级视频处理功能,包括自动下载、转录和字幕提取,以丰富多媒体交互。
  • 图像处理:利用 ImageDescriptionService 进行复杂的图像分析,支持本地和云处理、CUDA 加速和 GIF 帧提取,从而实现详细的图像描述。
  • Solana 区块链集成:集成全面的区块链功能,例如Token操作和信任评分系统,使你的代理能够与 Solana 区块链无缝交互。
  • 语音生成:实施文本到语音功能以提供动态音频响应,通过听觉交互增强用户参与度。
  • PDF 处理:使你的代理能够分析和提取 PDF 文档中的文本,从而促进基于文档的信息处理。
  • 高级内存管理:利用可检索的内存系统来存储和调用上下文信息,使代理能够在交互中保持连续性和相关性。

Eliza 的自主加密货币交易系统还提供了几个高级功能,我没有时间详细检查这一点,但对于交易者和金融应用程序来说,它看起来很棒:

  • Token提供程序:管理Token信息和市场数据,确保准确和最新的交易输入。
  • 交换执行:使用 Jupiter 聚合器促进Token交换,从而实现高效且具有成本效益的交易。
  • 订单簿系统:维护买卖订单的记录,从而可以有效地跟踪和管理交易头寸。
  • 头寸规模:根据流动性和市场状况计算适当的交易规模,与预定义的风险水平保持一致。
  • Token验证:评估Token的安全性风险和市场可行性,确保只交易可信的资产。
  • 交易管理:监督交易的执行和监控,确保遵守策略和风险参数。
  • 市场分析:收集和分析市场数据以告知交易决策,从而增强系统对市场动态的响应能力。

其他安全/秘密建议

该文档涵盖了要采取的其他秘密/安全措施:https://elizaos.github.io/eliza/docs/guides/secrets-management/

文档中涵盖的内容:

  • 环境变量:利用分层系统,该系统优先考虑特定于角色的机密信息,而不是全局环境变量,从而确保灵活且安全的配置管理。
  • 特定于角色的机密信息:在角色文件中定义唯一的机密信息,以定制单个代理的配置,从而增强定制和安全性。
  • 安全存储:为敏感数据(如数据库凭据和区块链密钥)实施加密存储解决方案,保护静态信息。
  • 密钥轮换:建立自动流程以定期更新密钥,从而降低因凭据过期而导致未经授权访问的风险。
  • 访问控制:定义和实施策略以限制对敏感信息的访问,确保只有授权组件或个人才能检索特定密钥。

我建议的开发教程参考

以下是一些可以帮助你深入了解更多细节并解决问题的资源:

更新(24 年 12 月 15 日)— 更多教程和背景信息

我的部分研究来自这些教程... 我跳过了几个教程 + 文档 + 我自己的试验和错误... 来研究这篇文章。

[? 注意:哎呀!!! ?我忘记 Nader 还在他的标题中提到了“15 分钟”(因为我的标题最初是这样)... 我_不是_ _故意_使用相似的标题,一定是潜意识的,从标题中删除了 ?]

问题排查

以下是我解决的一些错误,没有什么大问题,主要与我自己的环境或错误有关,但这些可能会帮助你。

  • 任何文件中的拼写错误都可能导致构建错误,因此 AI 代理无法重新启动,并且导致错误的文件可能位于你的 cli 输出日志中。 错误可能来自 index.ts、角色文件或其他文件中的拼写错误。 有一次我注释掉了一些东西,但这导致了一个错误。
  • 安装的 Node.js 需要是正确的版本 - 截至 2024 年 12 月 14 日,至少是 23.3,但显然在你阅读本文时可能会发生变化,请查看文档(并在上面的文章中详细说明)
  • 确保你在系统上正确设置了 Node.js。 我也在上面的文章中详细说明了这一点 - 你需要正确的版本,然后安装它并确保它不会与另一个 node 版本冲突,始终在你的终端中使用 node -v 进行检查,并在进行 node.js 配置更改时重新启动你的终端窗口。
  • 类型错误。 在没有重新构建的情况下切换分支可能会导致类型错误。 运行 pnpm cache clean 并重新运行 pnpm installpnpm build
  • Arkose 验证码错误。 你可能会收到一个 Arkose 验证码错误。 我做过几次,似乎是 Twitter 想要验证你的时候。 通常,如果你切换你的 IP,无论你怎么做,例如,打开/关闭 VPN 等。这通常可以解决问题。 如果没有,那么你可能需要注销所有 Twitter 实例,然后从浏览器手动登录。 然后重试。

暂时就这样,我希望你喜欢这篇文章。

我们将在这个充满魅力且快速增长的领域做更多的事情。

? 感谢阅读! … ? 请鼓掌并分享这篇文章,谢谢! ?

SystemsArchitect.io 商店 查看我的云工程电子书, 所有这些电子书对于部署 Solana 应用程序和支持离链应用程序/云基础设施的 AI 代理也可能很有用:

https://store.systemsarchitect.io/

? AI 代理 + 加密货币:下一个热门技术热潮? \ \ AI 代理炒作周期在 AI/开源开发者和加密货币社区中变得紧张 \ \ medium.com

关于我

我是一名云架构师、高级开发人员和技术负责人,喜欢使用创新解决方案解决高价值挑战。

每当 Chris St. John 发布文章时,都会收到一封电子邮件。 \ \ 每当 Chris St. John 发布文章时,都会收到一封电子邮件。 通过注册,你将创建一个 Medium 帐户(如果你还没有这样做)... \ \ medium.com

我总是乐于讨论项目。 如果你需要帮助,有机会或只是想聊天,你可以通过 csjcode at gmail 与我联系。

我在软件开发领域工作了 20 多年,既有 企业 环境,如 NIKE 和最初的 MP3.com,也有像 FreshPatents、SystemsArchitect.io、API.cc 和 Instantiate.io 这样的 初创公司

我的经验范围从 云电子商务、API 设计/实施、 无服务器、用于开发的 AI 集成、内容管理、前端 UI/UX 架构 和登录/身份验证。 我会举办技术讲座、教程并分享架构软件的文档。 之前还持有 AWS 解决方案架构师认证。

云电子书商店— 以超值的价格查看云架构师和工程书籍,“云指标”(800 多页)和“云审计”(800 多页)等 — https://store.systemsarchitect.io

云指标指南“榕树书”(完整版,800 多页) \ \ 云指标指南(“榕树书”)- 促销价 - 19.99 美元 云指标指南(“榕树书”)包含超过... \ \ store.systemsarchitect.io

削减云成本! #1 终极云成本节省指南(适用于 AWS 云的 850 多页) \ \ “这本电子书为你提供了最详细和全面的指南,可用于削减你的 AWS 云成本并保持... \ \ store.systemsarchitect.io

云审计最佳实践:21 项必备 AWS 服务(850 多页) \ \ 本云最佳实践指南旨在帮助你为你的应用程序和云执行多种类型的云审计... \ \ store.systemsarchitect.io

? AI 开发技巧 #6:AI 生成复杂的数据库查询和列表

分步说明:从我们的数据库模式中 AI 生成的更复杂的查询

AI 开发技巧 #6:AI 生成复杂的数据库查询和查询列表 \ \ 分步说明:从我们的数据库模式中 AI 生成的更复杂的查询 \ \ medium.com

  • 原文链接: medium.com/ai-dev-tips/c...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论