【実践ガイド】ZulipにGeminiを統合!n8nでAIチャットボットを構築する方法

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

※この記事にはプロモーションが含まれています。

もう、生成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」との比較表です。

Geminiは、API(外部連携)を無償プランで使用できる

誠ちゃん
誠ちゃん

しかしながら、双方ともオープンソースではありません。理想はオープンソースなので、いずれ構築した折には記事にする予定です m(_ _)m

n8nとは?

n8nは、ローコード(Low-code)でワークフローを自動化できるツールです。

さまざまなアプリやサービスと連携し、ノーコード感覚で複雑な処理も構築可能になります。

セルフホスティングもでき、柔軟性が高いのが特徴です。

「n8n」を使うことで、チャット(Zulip)上で生成AI(Gemini)を意識することなく使えるようになります

n8nのことは以下の記事をご参考に!

Zulipの設定

ボットを作成

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

  1. 歯車(Main menu)をクリック
  2. 個人設定をクリック
  3. 左側にある「ボット」をクリック
  4. 「新しいボットを追加」をクリック
  1. ボット種別⇛「Outgoing webhook」を選択
  2. 名前⇛作成するBotに名称を付けます
  3. ボットのメールアドレス⇛適当なアドレスを付けます
  4. エンドポイントURL⇛作成するBotとn8nを紐付けるためのURLを設定します詳しくは後述
  5. Avatarを設定できます(任意)
  6. 上記した入力に間違いがないことを確認したら『追加』をクリックして完了です

作成が完了すると以下のようにBot(例:AIアシスト)を確認できます。

作成されたAPIキーは重要です。パスワードと同じようなものなので漏洩しなように注意しましょう!

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」を使っています。

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

誠ちゃん
誠ちゃん

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

error: Content is protected !!
タイトルとURLをコピーしました