Eliza(ai16z) AI代理开发实战

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

Eliza(ai16z) AI代理开发实战
一键发币: SUI | SOL | BNB | ETH | BASE | ARB | OP | POLYGON | AVAX | FTM | OK

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

对于新手/非开发人员:你也可以尝试一下!但这可能需要多花几分钟时间,因为你需要一个 Github 帐户和一些你不熟悉的小型开发内容,但这是完全可行的(无需硬核编程)。

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

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

1、克隆仓库

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

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

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

# Create a working directory, I first created an aiagents folder

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

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

# Change into the eliza project directory
$ cd eliza/

# Checkout the latest release
# It's recommended checking out the latest release

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

# Edit the file with IDE, or use nano or vim
$ code .

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

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

$ pnpm install 

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

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

$ pnpm build

2、安装和构建 Eliza

让我们从安装开始,如果你没有正确的节点版本,可能需要重新安装(pnpm 类似于 npm,但速度更快/效率更高,但你也可以使用 npm):

$ pnpm i

现在我们构建:

$ pnpm build

这样就好了。

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

3、ai16z Eliza 的主要功能

我们能用 ai16z 的 Eliza 做什么?

在我们继续这个快速入门之前——我们可以在这里做什么?

让我们来看看主要功能,摘自 GitHub 主页:

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

4、Twitter 设置和连接

为了安全起见,我强烈建议为你的代理创建一个新的 Twitter 帐户,而不是使用你的普通帐户。

仅用于演示,我们需要将密码放在 .env 文件中,除了此演示之外,在本地保存密码是一种不好的安全做法。😁 你也可以尝试使用下面的 cookie 方法(更安全一些),但目前存在一些问题,我还没有进一步调查。

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

  • 设置一个新的 gmail 帐户。
  • 设置一个与 gmail 关联的新 X/Twitter 帐户。使用密码设置或使用 Google/X 登录。
  • ✅ 提示:如果你使用 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/X Configuration
TWITTER_USERNAME= # Account username
TWITTER_PASSWORD= # Account password
TWITTER_EMAIL=    # Account email

✅ 提示:或者……与其使用它,不如使用更安全的路线,但可能需要做更多的工作才能正常工作,方法是使用这个,通过从 Chrome 开发工具获取 cookie 并将它们放在这里:

TWITTER_COOKIES= # Account cookies

你不需要两者,无论是密码还是 cookie。

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

# Post Interval Settings (in minutes)
POST_INTERVAL_MIN= # Default: 90
POST_INTERVAL_MAX= # Default: 180
POST_IMMEDIATELY=

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

5、设置 LLM 模型配置

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

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

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

你还应该添加限制和警报

✅ 提示:对于大规模生产,OpenRouter 很容易更改为许多不同的 LLM。

但这是我对 OpenAI 所做的,我将其保存在 gpt-40-mini 上并插入我的密钥:

# AI Model API Keys
OPENAI_API_KEY= # OpenAI API key, starting with sk-

XAI_MODEL=gpt-4o-mini

6、设置 AI 代理使用的角色

进入角色配置文件。

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

角色目录在这里: eliza/characters/ ,你将在其中看到一些示例。

你会注意到它们具有某些共同元素。你可以编辑这些内容,以便为 LLM 提供一些关于如何发布帖子和互动的背景知识。

这是特朗普的,浏览一下并查看一些设置选项:

✅ 提示:所有角色组件的描述都在这里

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

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

填写完所有内容后,我还将我的 modelProvider 更改为 openai(查看文档以了解其他内容):

   "modelProvider": "openai",

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

✅ 提示:此外,完成后,我建议将所有其他角色文件移到存档目录中,并移出角色目录。我注意到代理似乎将其他文件带入内存,这在某些时候导致我出现 OpenAI 错误(太多令牌)。我还没有调查过。

7、更新 Agent 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);
    }

8、启动代理

一旦我们完成所有设置,一切就变得非常简单!

我们所要做的就是

pnpm start

在某个时候,我遇到了一个错误,我发现如果我正在使用一个代理,那么只需从 CLI 命名该代理角色即可更轻松地启动。

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

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

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

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

✅ 请记住,如果你将角色文件中的提供程序留空为 [],那么它将不会连接到 Twitter,并且只会在你的终端窗口中显示为代理活动。

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

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

我遇到的其他错误:

  • 我最初遇到的主要错误来自 OpenAI,是令牌上下文太大。删除角色目录中多余的角色文件后,此问题得到了解决。

9、高级用法

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

这里还有一些您可以探索的项目,请参阅高级

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

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

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

10、其他安全/机密建议

文档涵盖了要采取的其他机密/安全措施。文档中涵盖的内容:

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

原文链接:Create AI Agents with ai16z Eliza

DefiPlot翻译整理,转载请标明出处

免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。
通过 NowPayments 打赏