HermesAgentを始めてみる(7)

この記事は約7分で読めます。

はじめに

自宅に余っている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 Workspace — Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python | Hermes Agent
Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python

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
GoogleカレンダーAPI連携の設定手順と、抜けやすい最後の1つ
AIに予定を頼んでもリンクが返るだけ。GoogleカレンダーのAPI連携は、Google Cloudの用語でつまずきます。プロジェクト作成から鍵の取得、抜けやすい「カレンダーの共有」までを実際の画面36枚で解説。Googleの「タスク」に登…
【トークン取得編】ユーザのGoogleカレンダー情報を取得できる、よく見る同意画面を実装する方法
「Googleカレンダーと連携したいけど、OAuth認証の実装方法がわからない…」そんな方へ。この記事では、ユーザーの同意を得てGoogleカレンダー情報を取得する方法を解説します。Google Cloudの設定からトークン取得までの手順を…

トークンとHermesAgentの連携

リファレンスを参考にして進めます

Google Workspace — Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python | Hermes Agent
Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python

今回、使うコマンドは以下の通り
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との連携です

コメント

タイトルとURLをコピーしました