Transcription
Привет, мир! В сегодняшнем уроке мы научимся заставлять агентов Fetch AI общаться друг с другом.
Агенты Fetch AI могут общаться локально или удаленно. Я покажу вам примеры на Python.
Перед тем как начать, хочу подчеркнуть, что цель моих уроков не в том, чтобы вы кодировали параллельно со мной. По этой причине я всегда загружаю полный код на свой профиль GitHub, ссылку вы можете найти в описании ниже.
Теперь перейдем к делу. Если вы не смотрели мой предыдущий урок по Fetch AI, пожалуйста, сделайте это, потому что этот урок является его улучшенной версией.
В предыдущем уроке мы рассмотрели некоторые основы, такие как создание агента. Это обязательно, потому что сегодня мы будем использовать эти знания, чтобы заставить двух агентов общаться друг с другом.
Существует два типа общения: локальное и удаленное. Мы рассмотрим оба.
Сначала установите Python SDK U agent, выполнив команду pip install wagin.
Давайте посмотрим, как работает локальное общение. У нас есть импорты вверху, затем у нас есть класс для сообщения, который позволит нам отправлять и получать сообщения.
В этом примере у нас есть два агента: Алиса и Боб. У каждого есть уникальный seed. У Алисы есть задача on message, которая назначает ей следующую работу: когда она получает сообщение от Боба, мы хотим, чтобы она напечатала сообщение Боба и отправила ответное сообщение обратно Бобу.
В отличие от Алисы, у Боба есть две задачи: on interval и on message. Задача on interval назначает Бобу следующую работу: мы хотим, чтобы Боб отправлял сообщение Алисе каждые 4 секунды. Задача on message назначает Бобу следующую работу: когда он получает сообщение от Алисы, мы хотим, чтобы он напечатал сообщение Алисы.
Вы можете спросить, почему у Алисы только одна задача, а у Боба две. Это простая логика: мы хотим, чтобы и Алиса, и Боб отвечали, когда получают сообщение, поэтому оба должны ждать, когда придет сообщение.
Именно поэтому оба имеют текст сообщения TKS, но только один из них должен начать разговор. Это Боб, кто начинает разговор, и поэтому у него есть задача on interval.
Внизу мы используем класс bureau, который собирает всех агентов и организует их выполнение.
Давайте запустим этот пример локального общения. Каждые 4 секунды Боб начинает разговор, приветствуя Алису. Алиса сообщает, что получила сообщение от Боба, отвечает, приветствуя Боба, и Боб сообщает, что получил сообщение от Алисы. Это работает отлично! Алиса и Боб общаются локально.
Давайте остановим этот пример и посмотрим, как работает удаленное общение.
Первое, что отличается, это то, что теперь у нас есть два скрипта на Python: один для Алисы и один для Боба. Ранее у нас были Алиса и Боб в одном скрипте.
Если мы посмотрим на код Алисы или Боба, мы увидим, что основа идентична. У Алисы только одна задача, а у Боба две задачи. Различия следующие:
Во-первых, мы не используем bureau, потому что у нас только один агент для скрипта Python.
Во-вторых, нам нужно дать Бобу адрес Алисы, потому что теперь они не общаются локально. Имейте в виду, что мы сейчас смотрим, как работает удаленное общение. Кстати, мы узнали, как получить адрес Алисы в предыдущем уроке по Fetch AI.
В-третьих, и самое большое различие между локальным и удаленным общением: нам нужно использовать контракты Almanac. Контракты Almanac являются основой Fetch AI. Almanac — это смарт-контракт, разработанный и развернутый на блокчейне Fetch AI, который предоставляет нам способ заставить агентов общаться удаленно.
Проще говоря, если мы хотим, чтобы Алиса и Боб могли общаться удаленно, нам нужно зарегистрировать их в контрактах Almanac, каждый в своем собственном контракте. Как только ваш агент зарегистрирован в контракте Almanac, он начинает жить в сети Fetch AI.
Давайте продолжим разбор кода. Чтобы зарегистрировать Алису и Боба в контрактах Almanac, нам нужно предоставить конечную точку для обоих. Установка конечных точек не была необходима, когда Алиса и Боб общались локально.
Конечная точка — это адрес, на который другие агенты могут отправлять сообщения и на который конкретный агент будет слушать. Важно установить разные порты: Алиса будет слушать на порту 8000, а Боб — на порту 801.
Теперь вы можете немного запутаться, как этот код регистрирует Алису или Боба в контракте Almanac. Пакет agent заботится об этом. Весь процесс начинается с выполнения этой функции run. Эта функция запускает агента, но, что более важно, регистрирует агента в Almanac, когда код инициализируется.
Давайте запустим этот пример удаленного общения. Нам нужно запустить обоих агентов: Алису и Боба. Сначала запустим Алису, а затем Боба.
Я уже запускал Алису и Боба ранее, так что вы можете видеть, что они уже зарегистрированы в контракте Almanac. Когда вы запускаете их в первый раз, вы увидите консоль, сообщающую, что регистрация в контракте Almanac в процессе.
Каждые 2 секунды Боб начинает разговор, приветствуя Алису. Алиса сообщает, что получила сообщение от Боба, отвечает, приветствуя Боба, и Боб сообщает, что получил сообщение от Алисы. Это идентично примеру локального общения, но на этот раз это удаленное общение. Как здорово!
На этом все. Спасибо за просмотр! Если этот урок был полезен, пожалуйста, ставьте лайки, комментируйте и подписывайтесь.