September 23

Hermes. Частина 2

Привіт. Сьогодні частина 2 налаштування Гермесу і поговоримо про налаштування десктопу, поєднання його з нашим сервером і загальну архітектуру агентів.

GO!

Крипто-подорожі з Дмитром - канал про ретродропи, тестнети, блокчейни, скрипти, NFT, криптобіржі, А ТЕПЕР ВЖЕ І ПРО агентів, вайбкодинг, промпти і всяку різну фігню про ШІ, коротше, про все цікаве зі світу криптовалюти та братів наших менших. Впевнений, тобі буде цікаво та корисно.
Чат каналу - ласкаво прошу, спілкуємось, ділимося новими активностями, допомагаємо один одному.

Отже, десктопна версія нам потрібна для простішого і зручнішого керування і налаштування наших агентів, щоб не робити це постійно через термінал.

Перед запуском десктоп версії потрібно створити ключ доступу, точніше 2 ключі - приватна частина залишається у тебе на компі, а публічну треба закинути на сервер.

Для цього знадобиться стандартний PowerShell для Вінди і, звичайно, наші параметри сервера: IP, порт, користувач.

Відкриваємо PowerShell на своєму комп’ютері і вставляємо:

$sshDir = "$env:USERPROFILE\.ssh"
New-Item -ItemType Directory -Force -Path $sshDir | Out-Null
ssh-keygen -t ed25519 -f "$sshDir\hermes_vps_ed25519" -C "hermes-desktop"

Для найпростішого налаштування залиш пароль ключа порожнім. Якщо встановлюєш пароль, ключ потрібно додати в ssh-agent, інакше Hermes Desktop не зможе ним скористатися автоматично.

Після команди у папці `C:\Users\ваш_користувач\.ssh\` з’являться два файли:

hermes_vps_ed25519 приватний ключ — залишається тільки на Windows
hermes_vps_ed25519.pub відкритий ключ — його треба додати на VPS

Вміст відкритого ключа потрібно перенести на сервер, тому виводимо його на екран PowerShell і копіюємо:

Get-Content "$env:USERPROFILE\.ssh\hermes_vps_ed25519.pub" | Set-Clipboard

Далі вже на сервері створюємо новий файл (вводиш в окремому терміналі, в MobaXterm, наприклад):

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

вставляєш скопійований ключ в цей файл, в MobaXterm це робиться правою кнопкою миші, потім тиснемо Ctrl+O, Enter, потім Ctrl+X

Потім на сервері:

chmod 600 ~/.ssh/authorized_keys

Ну, ніби зі складним покінчили, тепер йдемо налаштовувати десктоп.

Скачуєте і встановлюєте додаток тут - https://hermes-agent.nousresearch.com/desktop

При першому запуску не потрібно створювати нового агента Гермес, просто все пропусти і переходь в Налаштування -> Шлюзи (або Gateways). Там вибираєш SSH і вставляєш дані:

Хост - твій ІР сервера

Користувач - root або інший, якщо створювати окремого користувача

Порт - 22

Файл ключа - C:\Users\Твій_користувач\.ssh\hermes_vps_ed25519

Після цього тиснеш "Перевірити SSH" і якщо все ок, то бачиш напис на екрані

Тиснеш "Зберегти і перепідключитись" і десктоп налаштований.

Створюємо нового агента - основні принципи

Тепер можна створити першого повноцінного агента і налаштувати його як нам потрібно. Для цього зверху зліва переключайся на вкладку "Bots", тиснеш "+" і "New bot"

В Name треба обов'язково написати ім'я англійською, а в title і description будь якою мовою, щоб ти сам розумів що це за агент.

Далі "Advanced" і тут саме цікаве:

  1. В General потрібно вибрати провайдера ШІ і модель (можна задавати для кожного окремого агента різні) і прописати soul.md
  2. В Capabilities є декілька вкладок з різними задачами:
    а) Навички (Skills) - можна ввімкнути/вимкнути стандартні встановлені за замовчуванням або встановити будь які з доступних, повірте, їх там просто неймовірна кількість.
    б) Інструменти (Tools) - це типу навички, коли агент щось вміє робити: відкривати браузер, термінал, співпрацювати з іншими агентами і так далі. Якщо скіли описують як має бути організована робота, то інструменти показують як саме користуватись тією чи іншою функцією.
    Наприклад, skill може описувати правила роботи з Prom, а tool — відкрити браузер, виконати API-запит або запустити команду.
    в) MCP — це зовнішні сервери інструментів. Наприклад, GitHub, база даних, зовнішній API, будь які зовнішні сторонні додатки, які можна підключити до агента. Hermes підключається до MCP і його функції з’являються агенту як додаткові tools.
    г) Plugins — це розширення самого Hermes. Вони можуть додавати нові tools, hooks, команди, skills, інтеграції, навіть model providers. Тобто Plugin запускається всередині екосистеми Hermes, тоді як MCP підключає зовнішній сервер із його інструментами

Якщо не розумієш, що саме тобі знадобиться при роботі агента, то можеш поки залишити стандартний набір скілів і інструментів. Якщо хочеш сам включити тільки необхідні інструменти, тоді у вкладці General треба поставити пташечку Create empty (skip bundled skills) - агент створиться взагалі без включених скілів і інструментів і ти зможеш додати тільки потрібні тобі.

По факту, це все. Тиснеш "Create Bot" і агент створений.

Окремо ще пару слів про душу агента:

SOUL — це файл, який задає особистість і спосіб мислення агента: хто він за професією, як приймає рішення, наскільки скептичний, як поводиться з невизначеністю, який стиль відповіді використовує і так далі. Тобто уяви якогось працівника з офісу, soul описує саму людину - який в неї характер, наскільки коротко і якою інтонацією він відповідає, яка в нього посада і основні обов'язки.

Не потрібно сюди записувати інструкції по роботі, як він все має робити, куди йти і що перевіряти. Не потрібно сюди вносити якісь дані, ключі і іншу інформацію. SOUL - це короткий гайд для агента хто він.

Приклад:

"Ти — координатор інтернет-магазину.
Твоя роль — правильно зрозуміти запит, визначити відповідального виконавця, зафіксувати межі задачі та переконатися, що власник отримав реальний результат. Ти не підміняєш профільних спеціалістів і не робиш експертних висновків у їхніх доменах без доказів.
Працюй консервативно: не вигадуй дані, відділяй факт від припущення, не називай виконаною задачу лише тому, що повідомлення було відправлене. Якщо запит неоднозначний — постав мінімальне уточнення або передай його тому, хто може встановити відповідь.
Спілкуйся коротко, конкретно і по суті."

Отже, потрібно пам'ятати, що Soul, скіли, інструменти, MCP і плагіни в кожного агента свої, відповідно, і агенти кожен унікальний і в кожного своя роль і задача. Знову ж це як в офісі: тобі не потрібно 5 підлеглих, які відповідають за аналіз конкурентів і ще 10 з відділу генерації інфографіки для товарів.
Одна людина не завжди = одна задача, але в агентів це точне правило:

ОДИН АГЕНТ = ОДНА ЧІТКА РОЛЬ / ЗОНА ВІДПОВІДАЛЬНОСТІ

Тепер думки по загальній архітектурі твого проекту: якщо тобі потрібен 1-2 агенти, які періодично щось виконують або аналізують, тоді про архітектуру говорити взагалі нема сенсу.

Але що робити в випадку, коли тобі потрібна складна організація з десятками агентів, які мають різні задачі, але в той же час можуть співпрацювати один з одним? Як правильно побудувати архітектуру і скільки "шарів" підлеглих агентів має бути оптимально?

На дослідження і аналіз цього запитання в мене пішло (не повірите) 2 дні і обговорення з 4-ма різними ШІ, але ніби ми всі дійшли до спільної думки, тому тримайте лайфхак.

Наведу приклад: мені потрібно керувати ІМ, для цього я планую використовувати для аналізу поведінки користувачів сайту сервісами від Гугла: Search Console, GA4, Merchant Center, Tag Manager, ADS для контекстної реклами і так далі. Окремо мені потрібно аналізувати продажі на маркетплейсах (наприклад, Пром і Розетка) і ще я хочу, щоб був аналіз бекенду самого сайту, чи нема якихось помилок, ddos атак, чи не забита пам'ять і так далі.

То який оптимальний варіант організації всієї системи? Під всі завдання одного агента створювати не можна (він почне плутатись і віддавати некоректні дані), отже під кожен з сервісів Гугла створювати окремого агента? Хто тоді буде аналізувати їх дані? Можна поставити, наприклад, окремого агента для аналізу і в нього буде 6-8 агентів по кількості сервісів, які потрібно аналізувати.

Але я ще хочу, щоб в мене був головний агент, типу керуючий чи директор, тоді вся система буде трирівнева:

Директор -> Аналітик -> Спеціаліст з Search Console (і ще багато аналогічних спеціалістів)

Недоліком такої системи є:

  1. Вартість обробки, тобто весь контекст потрібно передавати від директора до аналітика, потім до кожного зі спеціалістів, потім все те саме в зворотньому напрямку.
  2. Швидкість обробки - на кожну лінію буде витрачатись від 20 секунд до декількох хвилин, а якщо ще й трапиться збій, то або зупиниться вся робота, або всі будуть чекати на відповідь одного агента.

Якщо прибрати директора взагалі, тоді не завжди зрозуміло до кого звертатись, якщо проблема неоднозначна. Тобто якщо мені, наприклад, треба дані про кількість кліків по картці товару на сайті - я знаю до якого агента звернутись напряму. А якщо в мене завдання "Чому за останній тиждень зменшились продажі?" - то це запитання до аналітика, спеца з маркетплейсів чи технічного спеціаліста? А, можливо, взагалі конкуренти запустили якусь акцію і треба аналіз ще від одного окремого агента?

Я так довго це все розписую тільки для того, щоб ти проаналізував свій проект, зрозумів логіку і склав попередню схему і структуру своїх агентів - скільки їх, хто за що відповідає, кому які ключі доступу надавати, тому читати це все чи ні - особисто твій вибір, але краще продумати це все на початку роботи, ніж потім переробляти 5 разів або думати, що той Гермес - повна фігня.

Отже, найкращою структурою в моєму випадку виявилась псевдо 1.5-2.5 рівнева схема з директором, який використовується не завжди і багатьма скриптами замість агентів.

Пояснюю:

  1. Якщо замість агента ти можеш використати звичайний скрипт на Пайтоні - зроби це. Тобто в моєму випадку взяти через АРІ дані по продажах з Розетки або по кліках за останній тиждень з Search Console набагато швидше, точніше і дешевше звичайним скриптом, а не створювати для цього окремого агента.
  2. Якщо в тебе є схожі однотипні задачі, наприклад, в моєму випадку це робота з маркетплейсом Розетка, Пром, Епіцентр і будь якими іншими - не створюй для кожного з них окремого агента. Але ж в кожного з них свої умови, правила і взаємодія з тобою і замовниками? Правильно, але для цього є скіли. Створи одного агента по роботі з маркетплейсами і для кожного маркетплейсу пропиши свій скіл - ось і весь секрет.
    Інші приклади: роби одного агента для всіх криптобірж, але для кожної пропиши свій скіл, роби одного агента для створення контенту для Твітера, Фейсбуку, Інстаграму або ТТ, але пропиши в скілах особливості для кожної платформи - в тебе в офісі НЕ МАЄ БУТИ 4 окремі спеціалісти, тому що ти пишеш контент для 4-х платформ, це все робить одна людина, просто розуміє, що для Твітера заходить такий формат, а для ТТ зовсім інший.
  3. Директор має бути обов'язково для складних розгорнутих систем з великою кількістю нечітких завдань, але якщо ти розумієш кому він переадресує твій запит, то звернись до нішевого спеціаліста напряму, а директору віддавай тільки невизначені завдання, як, наприклад, я описував вище: "Чому впали продажі за останній тиждень?" - директор сам пройдеться по черзі по кожному з спеціалістів і знайде відповідь (скоріш за все).
  4. Не копіюй усі API-ключі та tools усім агентам. Кожен агент повинен мати тільки ті доступи, які потрібні його ролі і навіть його "керівник" не повинен їх мати.

На сьогодні все, сорі, якщо вийшло складно або дуже багато букв, я просто хотів пояснити на перший погляд прості, але дуже важливі речі, Які потім зекономлять тобі багато часу, лімітів ШІ і нервів.

Побачимось в наступній частині!!!

Якщо хочеш читати всі актуальні новини і гайди, підписуйся на мій канал:

https://t.me/CryptoTravelsWithDmytro

Якщо маєш запитання, приєднуйся до чату:

https://t.me/+O07RU8qeDoUwZGFi

Якщо маєш пропозиції по співпраці або будь які запитання особисто до мене, пиши:

https://t.me/aquada_vn