Eliza(ai16z) AI代理开发实战
在本文中,我们将使用 Eliza AI 框架安装和构建 AI 代理,详细介绍其主要功能、与 Twitter 的集成、LLM 模型配置以及自定义 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翻译整理,转载请标明出处
免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。