はじめに
自宅に余っているPCパーツを活用してHermesAgentを立ち上げていきます
その記録メモです
今回はGoogleカレンダーと連携する編です
今回できること
・Googleカレンダーと連携することでスケジュール管理がAIに相談できます
予定の確認、登録、削除が可能になります
ポイント
Googleカレンダーとの連携には修正が必要なことがわかりました
・HermesAgentがターミナルでファイルを自由に操作できるようにする※修正※
→Config.ymlのterminalのbackendの設定をlocalにする
・HermesAgentのターミナルでpythonが動作するようにする
→pythonのパスを/opt/hermes/.venv/bin/pythonとHermesAgentに明示する
この2点を解決すると、上手くGoogleカレンダーを操作できるようになります
流れ
本来であればChat画面の会話でGoogleカレンダーとの連携を依頼するれば連携ができてしまうのですが、できなかったため、リファレンスを参照しながらできるところまで進めます
・Googleからカレンダーと連携するのに必要なOAuth2の鍵を取得します
・取得したOAuth2の鍵をHermesAgentと連携できるように設定します
・HermesAgent上のチャットで動作確認します
参考にしたサイトはこちら(日本語自動翻訳で充分理解できます)

Googleからトークン取得
リファレンスにも記載されていますが、こちらのサイトも参考にしてOAuth2の鍵(JSON)を取得します
Step 2: Create OAuth credentials (one-time, ~5 minutes)
Tell the user:
You need a Google Cloud OAuth client. This is a one-time setup:
Create or select a project: https://console.cloud.google.com/projectselector2/home/dashboard
Enable the required APIs from the API Library: https://console.cloud.google.com/apis/library Enable: Gmail API, Google Calendar API, Google Drive API, Google Sheets API, Google Docs API, People API
Create the OAuth client here: https://console.cloud.google.com/apis/credentials Credentials → Create Credentials → OAuth 2.0 Client ID
Application type: "Desktop app" → Create
If the app is still in Testing, add the user's Google account as a test user here: https://console.cloud.google.com/auth/audience Audience → Test users → Add users
Download the JSON file and tell me the file path
Important Hermes CLI note: if the file path starts with /, do NOT send only the bare path as its own message in the CLI, because it can be mistaken for a slash command. Send it in a sentence instead, like: The JSON file path is: ~/Downloads/client_secret_....json


トークンとHermesAgentの連携
リファレンスを参考にして進めます

今回、使うコマンドは以下の通り
Dockerの中入りコマンドを実行
docker compose exec hermes bash
①$GSETUP="python /opt/data/skills/productivity/google-workspace/scripts/setup.py"
②$GSETUP --check
③$GSETUP --client-secret /opt/data/google_client_secret.json
④$GSETUP --auth-url --services email,calendar --format json
⑤$GSETUP --auth-code "THE_URL_OR_CODE_THE_USER_PASTED"
⑥$GSETUP --check
⑦$GAPI="python /opt/hermes/skills/productivity/google-workspace/scripts/google_api.py"
⑧$GAPI calendar list
・最初にHermesAgentが動作しているDockerの中に入ります
・1)初めにセットアップコマンドのSetup短縮コマンドを定義します
・2)Setup短縮コマンドでGoogleの認証が登録されているかどうか確認します
→最初は未登録
・3)取得したGoogleのOAuth2の鍵をHermesAgentに登録します(google_client_secret.jsonの登録)
・4)HermesAgentからGoogleにアプリ登録してコードと認証をGoogleから取得します(URLを取得)
・5)取得したコードと認証をHermesAgentに登録します(URLを登録しgoogle_token.jsonが生成)
・6)Googleの認証登録の再確認
→登録済みを確認
・7)GoogleのAPIコマンドのAPI短縮コマンドを登録します
・8)API短縮コマンドを使ってGoogleカレンダーのデータ取得します
→データがJSONで返ってきます
以上のような流れで進んでいきます
・URLをクリックするとHermesAgentからGoogleにアプリを登録
→使用するGoogleのアプリを登録(ここではカレンダーにチェック)

・カレンダーにチェックして続行

・続行すると画面遷移しますがエラーに
→URLの先頭がlocalhostになっていてエラーなので次のhttps://~以下をコピーする

・コピーした長いURLを使って、$GSETUP –auth-code “コピーしたURL”を実行

・そうすると上記のようにGoogleに問合せされ、Googleの認証が通ったことを確認できます

・Docker上のコンソールでGAPI calendar listを実行するとこのようにカレンダーの結果が返ってきます
これで認証関係が正常動作することを確認しました
HermesAgentとのやりとり
・HermesAgentとのチャットでは上手くGoogleカレンダーのデータが取得できませんでした
・調べてみるとDocker上のコンソールの動作とHermesAgentのコンソールの動作が違っていました
なので、上記のようにDocker上でのコンソールで動作していてもHermesAgentでは動作できませんでした
理由はHermesAgentで動作するコンソールはHermesAgent上(Docker上)とは違うもので、都度別に環境を作成して動作させていたため、上手くデータを引き渡せなかったためです
Config.ymlの修正
・HermesAgent上のコンソールとDocker上でのコンソールを同一環境にするにはConfig.ymlを修正します
terminalのbackendをdockerからlocalに変更します
そしてDockerを再起動

HermesAgentとの実際の会話
・あとは、チャットで問合せに使われるpythonのパスを/opt/hermes/.venv/bin/pythonと伝えます
その際、SKILLに登録してと会話し記憶させます
以下は何回かチャット上でやり取りした後の結果です
・「8月の歯医者さんの予定をGoogleカレンダーを調べて押して」と問合せた結果です
すんなりと取得できませんが、正解を回答しています


まとめ
Googleカレンダーとの連携は難儀でした
Docker上のコンソールとHermesAgentが作成するコンソールは別のことが分かった後、どうやって環境を同一にするか悩みました
もっと良い方法があるような気もしますが、動作しているのでOKとします^_^;
別アプローチの手段も見つけましたが、未確認です
https://zenn.dev/meta_asahi/articles/gws-cli-wsl-mcp-setup
次回はNotionとの連携です

コメント