Создание агентов ИИ с помощью ai16z Eliza
Создайте AI-агента, чтобы узнать о пространстве AI-агента с помощью библиотеки ai16z Eliza Typescript/Python — Пошаговая инструкция
🔥 Агенты ИИ + криптовалюта: следующее увлечение горячими технологиями?
Цикл ажиотажа вокруг агентов ИИ становится все интенсивнее в сообществе разработчиков ИИ/ПО с открытым исходным кодом и криптосообществе
В этой статье мы рассмотрим установку и сборку AI-агента с помощью фреймворка Eliza AI, подробное описание его основных функций, интеграцию с Twitter, настройку модели LLM и кастомизацию персонажей AI.
Для новичков/не-разработчиков: Вы тоже можете попробовать! Но это может занять на несколько минут больше времени, так как вам нужна учетная запись на Github и некоторые незначительные вещи для разработчиков, к которым вы не привыкли, но это вполне выполнимо (без сложного программирования).
В конце концов, вы создадите своего собственного автономного агента искусственного интеллекта для Twitter, Telegram или Discord. Будьте креативны! Вы босс! Агенты ИИ могут использоваться для бизнеса, маркетинга, социального/общественного маркетинга, финансов и торговли, ответов на вопросы клиентов и многого другого!
Давайте углубимся в Eliza framewor k от ai16z, который использует Typescript и Python, а также создадим AI Agent за 15–20 минут.
- Начало работы
- (необязательно) Незначительное исправление, если вам нужен Node 23+
- Установка и сборка Eliza
- Основные особенности ai16z Eliza
- Настройка и подключение к Twitter
- Настройка конфигурации модели LLM
- Настройка персонажа, используемого агентом ИИ
- Расширенное использование
- Дополнительные рекомендации по безопасности/секретам
- Справочники по учебным пособиям для разработчиков
- Устранение неполадок
Начало работы
Подготовьте VSCode, Cursor или любую другую интегрированную среду разработки, с которой вы работаете.
Мы подробно рассмотрим функции, но давайте получим «быструю победу», просто установив и собрав за 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, version может отличаться в зависимости от того, когда вы это сделаете:
Теперь нам нужно установить из package.json (вы должны быть в директории eliza/ ) с:
$ pnpm install
Это установит все необходимые нам пакеты.
Далее нам нужно будет выполнить сборку, чтобы убедиться, что установка работает правильно.
$ pnpm build
⚠️ (необязательно) 2 незначительные ошибки, которые у меня были в среде узла
Пропустите это, если это сработало нормально для вас, но в первый раз, когда я запустил это, я на самом деле получил пару незначительных ошибок.
WARN Unsupported engine: wanted: {“node”:”23.3.0"} (current: {“node”:”v21.7.3",”pnpm”:”9.12.3"})
Вам нужно использовать как минимум узел 23.3 Ошибка может варьироваться, если вы используете macOS, Windows или Linux.
Итак, чтобы решить эту проблему в MacOS:
- У меня уже был установлен nvm, но если у вас его нет, вам следует установить его, он позволяет легко переключаться между версиями node.js и обновлять его и доступен на macOS, Windows или Linux
- Мне просто нужно было бежать:
$nvm installOutput: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 sha256sumChecksums matched!Now using node v23.3.0 (npm v10.5.0)
(необязательно, если ошибки) У меня была еще одна небольшая ошибка, заключающаяся в том, что nvm на моем ноутбуке не был настроен в моей текущей среде bash shell, и у меня был конкурирующий node.js, также установленный глобально, который мне пришлось удалить. Я удалил глобальный, и проблема с оболочкой была легко решена, отредактировав мой код bashrc в IDE и добавив этот код в ~/.bashrc~/.bashrc
export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
- ⚠️ Также — Перезапустите окно терминала, если вы делаете какую-либо конфигурацию окружения nvm, node или bash или устанавливаете изменения версии, чтобы изменения вступили в силу. ⚠️
$ nvm use 23Now using node v23.3.0 (npm v10.5.0)$ node -vv23.3.0
И... Мы вернулись к тому, чтобы доводить дело до конца.
🥰 Спасибо за прочтение! … 🔥 Пожалуйста, похлопайте и поделитесь этой статьей, спасибо! 🚀
Установка и сборка Eliza
Начнем с установки, возможно, вам придется переделать, если у вас не была правильная версия узла (pnpm похож на npm, но быстрее/эффективнее, но вы можете использовать npm):
$ pnpm i
$ pnpm build
Давайте сделаем небольшой крюк, чтобы напомнить о том, зачем мы все это делаем.
Основные особенности ai16z Eliza
Что мы можем сделать с Элизой от ai16z?
Прежде чем мы продолжим этот быстрый старт — что мы можем здесь сделать?
Давайте рассмотрим основные функции, перефразировав их с главной страницы GitHub:
- «Полнофункциональные коннекторы Discord, Twitter и Telegram; Прямой доступ к API». Эти интеграции обеспечивают бесперебойную коммуникацию и взаимодействие с популярными социальными платформами и платформами обмена сообщениями, такими как Discord, Twitter и Telegram. Автоматизируйте задачи, отправляйте обновления и взаимодействуйте с искусственным интеллектом в режиме реального времени на этих платформах. Вы также можете отредактировать код, поскольку он имеет открытый исходный код для того, что вы хотите, например, вы можете отправить в AWS.
- «Поддержка нескольких агентов и комнат». Упрощает совместное взаимодействие с ИИ, позволяя нескольким агентам ИИ работать в общих средах или «комнатах». Можно создавать отдельных персонажей с разными характерами, возможно, они проводят мозговой штурм каких-то идей! Язанимаюсь сложными задачами, требующими сотрудничества между несколькими ИИ или между пользователями и ИИ.
- «Легко принимайте документы и взаимодействуйте с ними». Предоставляет простой способ загрузки, анализа и запроса документов, позволяя пользователям использовать агент искусственного интеллекта для извлечения аналитических сведений, обобщения содержимого или ответов на вопросы.
- «Извлекаемая память и хранилище документов». Система памяти, которая сохраняет предыдущие взаимодействия, и хранилище документов для хранения и вызова информации. Это облегченная система памяти, но ее достаточно, чтобы хотя бы убедиться, что память там есть. Эта функция улучшает контекстно-зависимые ответы и позволяет пользователям эффективно просматривать или повторно использовать прошлые данные.
- «Высокая расширяемость — создавайте свои собственные действия и клиентов». Поддерживает кастомизацию, позволяя разработчикам создавать новые действия (специализированные задачи) и клиенты (уникальные пользовательские интерфейсы), что делает платформу адаптируемой к конкретным рабочим процессам и потребностям. Модульная система плагинов доступна и расширяется. Вы можете легко изменить это, чтобы создать новые пользовательские интерфейсы и пользовательские задачи, поскольку это; с использованием редактируемого открытого исходного кода.
- "Поддерживает множество моделей Llama, OpenAI, Anthropic, Grok и другие." Платформа обеспечивает совместимость как с локальными, так и с облачными моделями искусственного интеллекта. Пользователи могут выбирать модели, которые лучше всего соответствуют их требованиям к производительности, конфиденциальности или стоимости, включая популярные варианты, такие как GPT от OpenAI и Claude от Anthropic.
- Продвинутый: «Встроенная система памяти RAG, обработка документов, анализ мультимедиа и возможности автономной торговли».
Настройка и подключение к Twitter
Для безопасности я НАСТОЯТЕЛЬНО рекомендую создать новую учетную запись Twitter для вашего оператора, а не использовать обычную.
Только для демонстрации нам нужно поместить пароль в файл .env, что является плохой практикой безопасности для локального использования, за исключением этой демонстрации. 😁 Вы можете попробовать использовать метод cookie также ниже (немного более безопасный), но в настоящее время с ним есть некоторые проблемы, и я не исследовал их дальше.
Используйте этот временный метод только для тестовой демонстрации. ПОВТОРИТЕ, не храните постоянно свой пароль Twitter в виде обычного текста в локальном файле .env, ОСОБЕННО пароль существующей или более крупной учетной записи Twitter или долгосрочной... это угроза безопасности для этой учетной записи в Twitter.
- Настройте новую учетную запись Gmail.
- Создайте новую учетную запись X/Twitter, связанную с gmail. Либо настройка с паролем использует логин Google/X.
- ✅ СОВЕТ: Если вы использовали Google/X social... для установки пароля: вам придется установить новый пароль, и выйти из системы X и при повторном входе использовать "Забыли пароль" и он пройдет его настройку.
Хорошо, теперь у вас есть новый агент искусственного интеллекта 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 ConfigurationTWITTER_USERNAME= # Account usernameTWITTER_PASSWORD= # Account passwordTWITTER_EMAIL= # Account email
✅ СОВЕТ: ИЛИ... Вместо того, чтобы использовать это, более безопасным способом, но требующим дополнительной работы для правильной работы, является использование этого, путем получения файлов cookie из инструментов разработки Chrome и размещения их здесь:
TWITTER_COOKIES= # Account cookies
Вам не нужны ни пароль, ни файлы cookie.
Вы также можете настроить интервал разноски в том же файле.
# Post Interval Settings (in minutes)POST_INTERVAL_MIN= # Default: 90POST_INTERVAL_MAX= # Default: 180POST_IMMEDIATELY=
Далее давайте выясним, какие модели ИИ мы используем.
Настройка конфигурации модели LLM
В том же файле .env найдите раздел с различными конфигурациями поставщика ИИ.
Я использую OpenAI, но вы можете использовать много других методов и LLM, это очень настраиваемо. Например, некоторые используют Anthropic Claude, другие используют Gaia, у которой есть бесплатная конечная точка API, а третьи используют OpenRouter, который является промежуточной платформой API для LLM, поэтому вы можете переключать их.
В платформе OpenAI я создал ключ API именно для этого проекта (создайте ключ проекта под заголовком проекта).
✅ СОВЕТ: Для крупномасштабного производства OpenRouter хорошо подходит для легкого переключения на множество различных LLM.
Но вот что я сделал с OpenAI, я оставил его на gpt-40-mini и вставил свой ключ:
# AI Model API KeysOPENAI_API_KEY= # OpenAI API key, starting with sk-XAI_MODEL=gpt-4o-mini
Настройка персонажа, используемого агентом ИИ
Перейдите в файлы конфигурации персонажа.
Нам нужно скопировать и создать новый файл персонажа.
Каталог символов находится здесь: eliza/characters/
Вы уже увидите некоторые примеры там.
Вы заметите, что у них есть определенные общие элементы. Вы можете отредактировать их, чтобы дать LLM некоторое представление о том, как должны создаваться сообщения и взаимодействия.
Вот вариант Трампа, просмотрите его и взгляните на некоторые варианты настроек:
✅ СОВЕТ: Описание всех компонентов персонажа находится здесь: https://ai16z.github.io/eliza/docs/core/characterfile/
Скопируйте этот файл в новый файл для персонажа, которого вы хотите создать, а затем удалите все стоковые персонажи и добавьте свои собственные.
✅ СОВЕТ: Вы можете использовать ChatGPT или другой искусственный интеллект, чтобы помочь вам заполнить это!
Как только вы все заполнили, я также изменил свой modelProvider на openai (проверьте документацию для других) “modelProvider”: “openai”,
"modelProvider": "openai",
✅ СОВЕТ: Если вы оставите его в виде пустого массива, он просто откроет чат на вашем терминале, это хорошо для тестирования и отладки.[]
✅ СОВЕТ: Кроме того, когда закончите, я рекомендую переместить все остальные файлы персонажей в архивную директорию и из директории символов. Я заметил, что агент, казалось, записывал других в память, и в какой-то момент это вызывало ошибку OpenAI для меня (слишком много токенов). Я еще не исследовал это.
🥰 Спасибо за прочтение! … 🔥 Пожалуйста, похлопайте и поделитесь этой статьей, спасибо! 🚀
Обновление файлов Typescript агента
Теперь нам нужно обновить файлы typescript, чтобы убедиться, что вызывается правильный символ.
tbh, я еще не играл с этим так много по состоянию на (14 декабря) кажется, что есть много вариантов, но я просто заставил это работать и углубился в некоторые другие аспекты... Так что это может быть хорошей областью для самостоятельного изучения.
Я могу вам сказать, что я делал, и это в основном было связано с видео Надера Дабита... Для этой статьи я посмотрел 3 разных видео, сделал это сам и добавил свой опыт и советы!
Вот обновления файлов, которые я сделал, как предложено в видео Надера Дабита:
Агент/Источник/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,
Затем нам нужно импортировать это в основной index.ts — добавьте это в конце импорта примерно в строке 50mainCharacter
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
Вы должны увидеть некоторые диагностические сообщения в интерфейсе командной строки, такие как:
✅ Помните, что если вы оставили провайдера в файле символов пустым, то он не будет подключаться к Twitter, а просто будет отображаться как активный агент в окне вашего терминала.[]
✅ Это создает ТОЛЬКО локальный сервер, вам нужно держать интерфейс командной строки открытым, чтобы он постоянно работал, если вы выключите свой ноутбук или окно командной строки, он перестанет работать.
✅ В рабочей среде вы можете развернуть его в сервисе хостинга приложений, таком как Vercel, или в облаке, чтобы он мог работать независимо в облаке.
Другие ошибки, которые я получил:
- Основная ошибка Изначально я получил письмо от OpenAI, потому что контекст токена был слишком большим. Эта проблема была устранена при удалении лишних файлов символов в каталоге символов.
Одним из агентов искусственного интеллекта, который я создал для маркетинговых идей, является 🤖1DayOS, и он все еще нуждается в тонкой настройке, вместо того чтобы делать это, как я писал эту статью😁!!! https://x.com/1DayOSAI
Приведенное выше краткое руководство должно дать хорошее начало!
Расширенное использование
Документация дает несколько советов по продвинутому использованию, так как мы сделали только основы для начала работы.
Вот еще несколько предметов, которые вы можете изучить, см. Дополнительно:
- Служба обработки видео: интеграция расширенных возможностей обработки видео, включая автоматическую загрузку, транскрипцию и извлечение субтитров, для обогащения мультимедийных взаимодействий.
- Обработка изображений: используйте для сложного анализа изображений с поддержкой локальной и облачной обработки, ускорения CUDA и извлечения кадров GIF, что позволяет создавать подробные описания изображений.
ImageDescriptionService
- Интеграция с блокчейном Solana: Внедрите комплексные функции блокчейна, такие как операции с токенами и системы оценки доверия, что позволит вашим агентам беспрепятственно взаимодействовать с блокчейном Solana.
- Генерация речи: реализуйте возможности преобразования текста в речь для обеспечения динамических звуковых ответов, повышая вовлеченность пользователя за счет слухового взаимодействия.
- Обработка PDF: Предоставьте своим агентам возможность анализировать и извлекать текст из PDF-документов, упрощая работу с документной информацией.
- Расширенное управление памятью: используйте извлекаемую систему памяти для хранения и вызова контекстной информации, что позволяет агентам поддерживать непрерывность и актуальность взаимодействий.
Автономная система торговли криптовалютой Eliza также предлагает несколько расширенных функций, у нас не было времени подробно проверить это, но она выглядит потрясающе для трейдеров и финансовых приложений:
- Поставщик токенов: Управляет информацией о токенах и рыночными данными, обеспечивая точные и актуальные данные о торговле.
- Исполнение свопов: облегчает обмен токенами с помощью агрегатора Jupiter, обеспечивая эффективные и экономичные сделки.
- Система книги ордеров: Ведет учет ордеров на покупку и продажу, что позволяет эффективно отслеживать и управлять торговыми позициями.
- Размер позиции: Рассчитывает соответствующие размеры сделок на основе ликвидности и рыночных условий, в соответствии с заранее определенными уровнями риска.
- Валидация токенов: оценивает токены на риски безопасности и жизнеспособность рынка, гарантируя, что торгуются только надежные активы.
- Управление торговлей: Осуществляет надзор за исполнением и мониторингом сделок, обеспечивая соблюдение стратегий и параметров риска.
- Анализ рынка: Собирает и анализирует рыночные данные для принятия обоснованных торговых решений, повышая оперативность реагирования системы на динамику рынка.
Дополнительные рекомендации по безопасности/секретам
В документации описаны дополнительные секреты/меры безопасности, которые необходимо предпринять: https://ai16z.github.io/eliza/docs/guides/secrets-management/
- Переменные среды: используйте иерархическую систему, в которой приоритет отдается секретам, специфичным для символов, а не глобальным переменным среды, обеспечивая гибкое и безопасное управление конфигурацией.
- Секреты, специфичные для персонажа: определяйте уникальные секреты в файлах персонажей, чтобы адаптировать конфигурации для отдельных агентов, повышая настройку и безопасность.
- Безопасное хранение: реализуйте решения для зашифрованного хранения конфиденциальных данных, таких как учетные данные базы данных и ключи блокчейна, защищая нехранимую информацию.
- Ротация секретов: Установите автоматизированные процессы для регулярного обновления секретов, снижая риск несанкционированного доступа из-за устаревших учетных данных.
- Управление доступом: определение и применение политик для ограничения доступа к конфиденциальной информации, гарантируя, что только авторизованные компоненты или отдельные лица могут получить определенные секреты.
Рекомендации по руководству для разработчиков, которые я рекомендую
Вот некоторые ресурсы, которые могут помочь вам углубиться в детали и решить проблемы:
- Ai16z Eliza Документация
- Ai16z Eliza FAQ
- Ai16z Eliza Детали конфигурации
- Школа разработки AI-агентов
- Пример: AI-агент 1DayOS
Обновление (15.12.24) — Больше уроков и справочной информации
Часть моего исследования была основана на этих уроках... Я пропустил несколько + документы + мои собственные пробы и ошибки... для исследования этой статьи.
- ai16z — Шоу — Школа разработки агентов ИИ (часть 1-1) [2024–11–26]
- ai16z — Шоу — Школа разработки агентов ИИ (часть 1-2) [2024–11–26]
- ai16z — Шоу — Школа разработки агентов ИИ 2
- ai16z — Shaw — AI Agent Dev School 3
- ai16z — Shaw — AI Agent Dev School 4 (5 часов)
- ai16z — Что вы сделали на этой неделе? #5
- Как создать социального AI-агента за 15 минут с помощью возможностей X, Telegram и Onchain | Полная репетиторияl
🚀 [ примечание: упс!! я забыл, 😅что Нейдер также упомянул "15 минут" в своем названии (как и мое изначально)... Я намеренно не использовал похожее название, должно быть, подсознательно, убрал его из заголовка 😅 ]
- Создание простого агента ИИ с помощью фреймворка Eliza от ai16z — включает пример Open Router
Устранение неполадок
Вот некоторые ошибки, с которыми я работал, ничего серьезного, в основном связанных с моим окружением или ошибками, но это может вам помочь.
- Опечатка в любом файле, скорее всего, приведет к ошибке сборки, поэтому агент AI не сможет перезапуститься, а файл, вызвавший ошибки, скорее всего, будет в журнале вывода CLI. Ошибки могут произойти из-за опечаток в index.ts, файле символов или других. Однажды я что-то закомментировал, но это привело к ошибке.
- Node.js установленная версия должна быть правильной — по состоянию на 14 декабря 2024 года это как минимум 23.3, но, очевидно, может измениться, когда вы прочитаете это, посмотрите документацию (и подробно описано выше в статье)
- Убедитесь, что Node.js правильно настроен в вашей системе. Я также подробно описал это выше в статье — вам нужна правильная версия, а затем установить ее и убедиться, что она не конфликтует с другой версией узла, всегда проверяйте терминал и перезапускайте окно терминала, если вносите node.js изменения конфигурации.
node -v
- Введите ошибки. Переключение ветвей без перестроения может привести к ошибкам типа. Запуск и повторный запуск и
pnpm cache clean pnpm installpnpm build
- Ошибка аркосе капчи. Вы можете получить ошибку капчи Аркосе. Я делал это пару раз, и, кажется, это происходит, когда Twitter хочет подтвердить вас. Обычно, если вы меняете свой IP, как бы вы это ни делали, например. включение/выключение VPN и т.д., что часто решает проблему. Если это не так, то вам, возможно, придется выйти из системы во всех экземплярах Twitter и войти в систему вручную из браузера. Затем повторите попытку.