もう、生成AIは手放せませんねぇ〜 そう思っている人は多いと思います。
昔、物知りで賢い人のことを『歩く辞書』とか言いましたが、そのような人物は得てして付き合いづらい人が多かったりします ^^;
『そんなことも知らないの?』とか言われていやな気分になったり、聞いてもいない話を永遠と話される。といった経験はありませんか? ^^;
その点、生成AIはそんな悩みとは無縁です。
とにかく、実直に丁寧に回答してくれます。しかも抜群に早いです!
たまに「嘘」を吐くところが欠点ですが、そこは『歩く辞書』も同じことなので腹が立つことはありません ^^;
そもそも、知識人に「嘘つき」が多いということは、SNSの普及によって明らかになりました ^^;
話が飛んでしまいましたが、たまに『嘘をつく』ということを前提に使うのであれば、生成AIを使わない手はありません。
言うまでもなく、個人情報の送信はNGです。イデオロギーに関わることもなるべく避けたほうが無難です。
このような便利ツールですが、もっと手軽に使いたいと思いませんか?
本記事を読めば、生成AIを、あたかも『歩く辞書』に質問するかのように使えるようになります。
はじめに
Zulip・Gemini・n8n の連携による効率化
n8n を使用して、Google Gemini Chat Model と Zulip を統合すれば、アプリ間のデータ抽出やデータ変換、データロードを自動化できるようになります。

Zulipとは?
Zulipは、スレッド(トピック)ごとに整理された会話ができるビジネスチャットツールです。「ストリーム」と「トピック」という独自の構造により、リアルタイムチャットとメールのような整理された会話の両方のメリットを持っています。
下表は、主要なチャット(LINE、Slack、Chatwork、Messenger)とZulipの特徴をまとめたものです。


使い勝手の良さはもちろんですが、オープンソースということが最大のメリットと言えます
なぜなら、安心・安全で、細かい設定が可能なためです。(詳細は、以下の記事をご参考に)
Geminiとは?
GeminiはGoogleが開発した大規模言語モデルで、文章生成や質問応答、コード作成など多用途に対応します。高精度で直感的な対話が可能です。
下表は、最も認知度が高い生成AI「ChatGPT」との比較表です。


しかしながら、双方ともオープンソースではありません。理想はオープンソースなので、いずれ構築した折には記事にする予定です m(_ _)m
n8nとは?
n8nは、ローコード(Low-code)でワークフローを自動化できるツールです。
さまざまなアプリやサービスと連携し、ノーコード感覚で複雑な処理も構築可能になります。
セルフホスティングもでき、柔軟性が高いのが特徴です。
n8nのことは以下の記事をご参考に!

Zulipの設定
ボットを作成
Zulipへログインし、「Main menu」→「個人設定」→「ボット」→「新しいボット」と進みます。

- 歯車(Main menu)をクリック
- 個人設定をクリック
- 左側にある「ボット」をクリック
- 「新しいボットを追加」をクリック


- ボット種別⇛「Outgoing webhook」を選択
- 名前⇛作成するBotに名称を付けます
- ボットのメールアドレス⇛適当なアドレスを付けます
- エンドポイントURL⇛作成するBotとn8nを紐付けるためのURLを設定します(詳しくは後述)
- Avatarを設定できます(任意)
- 上記した入力に間違いがないことを確認したら『追加』をクリックして完了です
作成が完了すると以下のようにBot(例:AIアシスト)を確認できます。

n8nの設定
Webhookを作成

Zulipで作成したBotをトリガーとし、チャットから送られてくるメッセージを受け取るためのWebhookを作成します。
- HTTP Method ⇛ POST
- Path ⇛ Path名を設定(URLの赤枠最後尾に反映される) 例:gemini-zulip
左側はデバッグ時に使用するURLです。(デバッグ時はZulipのBotも修正する必要があります)
ここで作成したURLを、Zulipで作成するBotの「エンドポイントURL」へ設定します。


HTTP Requestを作成

GeminiのAPIへアクセスするため、HTTP Requestノードを作成します。
そのためには、先ずGeminiのAPIが必要です。以下の手順によりAPIを取得しましょう。
- Google AI Studioへログイン
- Get API Key(画面左上) をクリック
- APIキーを作成をクリック
- 作成されたAPIキーをコピーして保管します
次に、n8nの「HTTP Requestノード」を作成します。
設定する変数は以下のとおりです。
- Method:POST
- URL:https://generativelanguage.googleapis.com/v1/models/gemini-1.5-pro:generateContent?key=xxxx ←ここに、先ほど取得したGemini APIキーを設定する

- Send Headers をON
- Header Parameters 『Content-Type』→『application/json』に設定

- Send BodyをON
- JSONにでリクエストボディを定義する
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "{{ $json.cleaned_content }}"
}
]
}
]
}

追加するノード単位で意図どおりに動作するかを確認しておきましょう。
Zulip投稿用「ai_response」を生成

HTTP Requestノードによって取得したJSONから必要なテキスト(ai_response)を取り出します。
{{$json.candidates[0].content.parts[0].text }}

Zulip投稿でDM(ダイレクトメッセージ)するための前処理

ZulipのWebhookで受け取ったメッセージの送信者のメールを使い、Geminiから得られた ai_response
を「その送信者に返信するための準備」を行います。
return [
{
json: {
to: [ $('Webhook').item.json.body.message.sender_email ]
}
}
];
$input.first().json.ai_response

ZulipへDM(ダイレクトメッセージ)を行う

Zulipの「Send Private」でメッセージを送信します。

まとめ
これで、生成AI(Gemini)を、あたかも『歩く辞書』に質問するかのように使えるようになります。
DM(ダイレクトメッセージ)で直接Botへ問い合わせる
例:心当たりが「有るような、無いような」ついつい悩んでしまうようなメールが届いた場合に、Bot(AIアシスト)に聞くと的確に分析してくれます。

⇛回答(DMなので、あなただけに回答が返ってきます)

・使い方は、「だれかさん」へ問い合わせるようにメッセージを送信するだけなので手軽に使えます。
・生成AIをそのまま単独で使う場合(ログインして使用)でも比較的簡単に使うことはできますが、Zulipのようなチャット上で運用するとグループで共有する場合に便利です。
・生成AIを使ったことがない人に便利さを体感してもらうには「もってこいのツール」です!

でも、n8nの使い方が難しそう?
いい質問です。前述したように、n8nはローコード(Low-code)でワークフローを自動化できるツールですが、書いた本人が言うのも何ですが、本記事を読むだけでは上手くいかないと思います ^^;
使用する端末やバージョン等によって、想定外のエラーが出力され停滞、諦めてしまうことはよくあることです。
コードを読み書きできる人は別ですが、こういう場合に「生成AI」が威力を発揮するのです。でないと、コードを読めない筆者にワークフローが組めるわけがありません ^^;
ドラブルシューティング時は「ChatGPT」を使用する
例えば、n8nのテストランで以下のエラーが出力されたとします。
Bad request - please check your parameters
Invalid JSON payload received. Unknown name "": Root element must be a message.
この内容を、そのままBot『AIアシスト』へ投げればOK! と言いたいところですが、Geminiは苦手のようです。。
なので、筆者はコーディング時のトラブルシューティングは「ChatGPT」を使っています。

このように回答してくれます。説明不要、もちろん、敬語も不要です!

最後まで読んでいただき、ありがとうございました!