見出し画像

DifyによるAIアプリの各node(Chat Flow)----黒魔女ベラドンナ様の人生相談03

はじめに

Dify のChatFlowで、初めてのチャットボットのAIアプリを創ってみました。
ついては、その備忘録ということで、今回は、その3です。

なお、今回準拠しているのは、ver.0.6.10です。
現時点での最新は、6/15にリリースされたver.0.6.11です。

AIアプリのタイトルは、黒魔女ベラドンナ様の人生相談。
今回は、AIアプリのキモとなるプロンプト以降の各nodeの設定等の説明です。

なお、冒頭の魔女ベラドンナ様の画像は、Leonardo.AIの最新モデルLeonardo Phoenixで作成しました。オリジナル画像は、かなり怖い感じでしたが、Alchemy Upscaleをかけると、笑みを浮かべた表情になりました。ちょっと凄みも感じますが。

このPhoenixについては、まだよくわかりません。これまで同社のモデルがベースとしていたStable DiffusionのSDXL系モデルと系列が異なるのかもしれません。Our Foundational Model (我々の基本モデル)と呼んでいますので。

少なくも、現時点では、 Stable Difusion系列の技術であるControl Net(Image Guidance)やLoRA(Elements)をPhoenixで使うことはできません。今後、その詳細が明らかになると思われます。

おっと、脱線してしまいました。Difyに戻ります。

LLM(node)以降のフローと各node

全体のフローを再掲します。
前回は、1−3までの設定内容を示しました。今回は、4.各LLM処理以降となります。

4.各LLM処理

Chat GPTの場合を示します。
フローでLLM ChatGPTのnodeをクリックすると、画面の右側にnodeの設定内容が拡大表示されます。

縦長なので、以下、3分割して表示します。

LLM Chat GPT-01

(1).モデル
 下図の赤い四角で囲んだ部分をクリックします。

すると、次のような設定画面が出ます。

1-1.モデルの選択
 まず、上の図で、赤い四角で囲んだ部分をクリックします。
 すると、選択できるモデル一覧が出てきます。
 ここでは、この時点での最新のgpt-4oモデルを選択しています。

1-2.モデルの設定
次にモデルの設定をします。
下の図で、赤丸で囲んだところをクリックします。

すると下図で黄色い四角で囲んだプルダウンメニューが出ます。
今回の設定では、魔女からの答えですので、クリエイティブな設定にします。赤い楕円で囲んだクリエイティブを選択します。

すると、それぞれの設定値は、下図のようになります。

さらに、ここでは、MaxTokenを最大値の4098に設定しています。


(2).コンテキスト
  下図の②の説明です。

 外部から引用するデータを入れる変数を使う場合、ここで宣言します。
 ここではグーグル検索の結果が入った変数を記載しています。

LLM Chat GPT-02

(3).  プロンプト

本来、この全体のキモとも言えるプロンプトの記載部分です。
Chat GPTのフォーマットに従っています。
System、User、Assistantをそれぞれ記載するようになっています。

次の項目ででてくるメモリー機能の拡張を行うと、複数のUserの設定が使えるようになります。

LLM Chat GPT-03

(4).メモリー
  チャットボット用なので、メモリー機能が標準で一つ入っています。
  今回の用途のような場合は、黄色の丸で囲んだように、Offで一つが自動的にエントリーされています。このスイッチをONにすると、複数の変数をメモリーできるようになります。それに対応してUser:設定がそれぞれ増えます。最大100設定できるようです。ちょっと多いように思います。

メモリーSWをOnにした場合を示します。

黄色の枠で囲んだように、USER:に、" / " を入力すると、新たに設定できる変数を選択できるようになります。

(5).ビジョン
 これも、今回のようなテキストベースの場合は不要です。
 あえて、説明のためにOnにしています。
 画像データを入力できるようになります。
 解像度を、高い、低い、の2段階で設定できます。

(6).出力変数
このnodeの出力変数は、text という名前のストリングス(文字列)の変数です。textという変数の名称は自動生成でたくさん使われています。これはローカル変数ですので、実際には、LLM ChatGPT:{x}text、のようにnode名を入れてグローバルに引用されます。

(7).次のステップ
 次のnodeは、変数集約器です。

5.変数集約器

このnodeにより、それぞれのLLM経由で、異なる変数を一つの変数名に統一して次のnodeに引き渡します。フローの同nodeをクリックすると、右側に設定用の画面が出ます。

ここでは、オレンジ糸の四角で囲んだ各LLMからの5つの変数を集約します。集約機能では、いくつかのグループに分けることもできますが、ここでは、1つなので、グループ1のみです。
変数名を確認するために、グループの赤丸のスイッチを入れてみます。

赤丸のスイッチをいれると変数名が出ます。ここでは、全部をグループ1に集約していますが、一部をグループ2に集約するという使い方もできるようです。

6.LLM2

デバッグの際、一部のLLMの出力が、英語で出力されたため、日本語翻訳のモジュールとしてこれを追加しました。前のLLMのプロンプトに日本語で出力する、という指示を与えれば同じことができます。

初めてなので、お試しということで、入れました。これにより、全体のスループットは若干低下する方向かと思います。

LLMは、速さ重視で、ChatGPT4oを選択しています。
前のnodeからのデータは、{x}編集集約器/{x}Group1 から受け取っています。

7.回答

ChatFlowはこのnodeで終了します。

一つ前のnodeであるLLM2の出力変数を回答として表示します。

今回のAIアプリである "黒魔女ベラドンナ様の人生相談" のフローに用いた各nodeの設定のメモは以上です。

参考までに、どのような出力がされるか、をちょっとやってみます。


本アプリの質問と回答例

各LLMのTemperatureは0.8、Top Pは0.9に設定しています。
やや大きめで、クリエイティブ相当です。

質問

充実した人生を過ごすにはどうしたらいいですか?

回答1 Chat GPT /gpt-4o-2024-05-13

ふむ、充実した人生を過ごすための秘訣を知りたいのですね。さあ、耳を澄ませなさい、ベラドンナ様が教えてあげましょう。
まず第一に、自分がやりたいことをやらずに、他人のためだけに生きる人生というのは、どこかで物足りなさを感じるものです。
充実した生活に最も重要なのは、自分のことを大切にすることです。自分の欲望や希望を無視してばかりでは、心が干からびてしまいますよ。
参考: [smartlog.jp](https://smartlog.jp/228240)

次に、新しいことに挑戦する勇気も必要です。いつもと変わらない生活は確かに楽ですが、変化を恐れていては成長も充実もありません。失敗を恐れるあまりに何もせずにいると、結局は何も得られませんからね。
参考: [domani.shogakukan.co.jp](https://domani.shogakukan.co.jp/424902)

さらに、慌ただしい日々を過ごす中でも、小さな心がけで毎日を充実させることができます。例えば、新しい習慣を取り入れたり、手帳を使って自己管理をするなどです。日々の小さな積み重ねが、大きな変化を生むのですよ。参考: [kinarino.jp](https://kinarino.jp/cat6/25970) および [purelifediary.com](https://purelifediary.com/sense/boring-everyday/)

また、自分自身が何に向いているのか分からない場合は、コーチングなどの助けを借りることも一つの手です。専門家の視点から新たな視野を得ることができるでしょう。
参考: [goal-b.co.jp](https://goal-b.co.jp/magazine/fun-life/)

そして、充実した人生を送るためには「決意」と「強い動機」が必要です。これがあなたの将来に対するビジョンを支える基盤となります。
参考: [1smss.com](https://1smss.com/wp/juujitu-life.html)

最後に、自分の現在地を知り、自分にとって充実した人生とは何なのかを書き出し、その目標に向かって具体的なステップを踏むことが重要です。計画なしにはどこにもたどり着けませんよ。
参考: [alive-life.jp](https://alive-life.jp/fulfillinglife-0421/)

さて、以上がベラドンナ様からのアドバイスです。覚えておきなさい、自分自身を見失わずに生きることこそが、真に充実した人生への鍵なのです。

回答2 Gemini1.5Pro

あら、充実した人生ね。あなた、退屈な毎日を送っているのかしら?フフフ…

人間は愚かだから、充実した人生を送るための方法なんて、誰にもわからないわ。

…なんて言い方は酷いって言った?そうね。あなたがそんなに退屈そうだから、老婆心ながらアドバイスしてあげましょう。

まず、あなたは自分の「現在地」を分かっているのかしら?人生という航海の真っ只中にいるのに、自分がどこにいるのか分からなければ、目的地に辿り着けるわけがないでしょう?

自分の現在地を知るためには、自分自身と向き合う必要があるわ。頭の中を整理して、自分が何をしたいのか、何が好きなのか、何が得意なのかを把握することから始めなさい。手帳に書き出すのもいいかもしれないわね。

そして、自分の「欲望」と向き合うこと。人間は欲望に忠実であるほど、より大きな喜びを感じることができる生き物なの。

それから、「行動」よ。行動を起こさなければ、何も変わらないわ。失敗を恐れていては何も始まらない。転んだっていいじゃない。這い上がって、また歩き出せばいいのよ。

最後に、最も重要なことを教えましょう。それは…

…ええ、もったいぶるわけじゃないけれど、それはあなた自身が探し出すこと。充実した人生の鍵は、あなたの中にあるのよ。フフフ…

さあ、私の可愛い迷える子羊ちゃん。退屈な人生に別れを告げる時が来たようね。

回答3  meta/llama3-70b-instruct / nvidia

永遠の問いですね。(笑)充実した人生を送る秘訣を知りたいのでしょう?お伝えしますが、それは一時的な快楽を追い求めたり、他人を感心させようとすることではありません。違います。自分自身を受け入れ、自分の条件で生きることです。

多くの人は他人を喜ばせようとしたり、社会の規範に従ったり、自分の本当の欲望を抑えたりして人生を無駄にしています。しかし、それは平凡への道です。充実した人生を送るには、リスクを取り、自分に挑戦し、自分の情熱を追い求める勇気が必要です。それがどれほど型破りなものであっても。

まず第一に、自分自身を愛し、受け入れることが必要です。欠点も含めて。それが自己疑念の鎖を断ち切り、本当に生きるための唯一の方法です。そして、自分のニーズを優先し、境界線を設定することの重要性についても言及したいと思います。空っぽのコップからは何も注げませんよ。

今、あなたが思っていることはわかります。「でも、責任や義務はどうするの?」と。ああ、それらはただの言い訳です。義務を果たしながらも夢を追い求める方法は常に見つかります。バランスと優先順位の問題です。

新しいことに挑戦し、信じて飛び込み、快適ゾーンから一歩踏み出すことを恐れないでください。そこに本当の成長がありますから。挑戦のない人生は目的のない人生です。

だから、あなたの問いに答えるなら、充実した人生を送るということは、神話的な幸福や成功状態を達成することではなく、その旅路を全て受け入れ、真実に生きることです。それが本当に充実した人生の秘訣です。

さあ、前に進んでください。あなたが本当に望む人生を生きてください。そして誰にも何にも邪魔されないように。(ウィンク)

回答4  Mixtral-8x7b-Instruct-v0.1 / Groq

充実した人生を過ごすには、最も重要なのは、自分自身を大切にすることです。それは、自分が心からやりたいことをし、自分にとって意味のある人生を送ることを意味します。

まず、自分にとって充実した人生とは何なのかを、具体的に考えてみてください。そして、その想いを叶えるために必要なアクションを取ることが大切です。

変化しない生活は、確かに楽ですが、一定の時点では挑戦的な環境を求める自然的な欲求が起きると思います。そこで、新しいことに挑戦し、失敗したり失ったりしたら、それは成長と呼ばれるものです。

また、自分の心からやりたいことを知るためには、時間を作って自分と向き合うことも大切です。これによって、つまらないと感じていた毎日も、徐々に変化していくでしょう。

さらに、「決意」するきっかけは、強い動機を持つことです。「充実した人生を送る」という意志を持ち、それを実現するためには、強い願望が必要です。この動機と願望は、あなたが将来に対する描くビジョンによって決まります。

最後に、自分のことを大切にすることは、人生が長いうち、健康に影響を与えることもあります。生きがいがないと、人生が充実していないことにモヤモヤしていませんか?生きがいがあるとないでは、老後の健康面に差が出るほど人生の充実度が違います。

さらに具体的なステップとしては、自分の現在地を知る、自分にとって充実した人生とは何なのかを書き出す、充実した人生にするためにどうしたらいいかを考えてみる、という手順が重要です。

以上、充実した人生を過ごすためには、自分の心を大切にし、自分が心からやりたいことをすることが大切です。

回答5   command-r-plus /Cohere

愚かな人間どもが、私の名を口にして召喚とは...。ベラドンナ様が答えて差し上げよう。

充実した人生...それは、自分の心に耳を傾け、己が望むままに生きることだ。誰かのためだけに生き、自分の望みを蔑ろにする生き方は、決して充実などしない。この世でたった一度の貴重な人生、自分の心が何を望み、何に喜びを感じるかを常に意識し、それを追求していくことが重要なのだ。

つまらない毎日を送っていると感じているのなら、まずは自分の心と向き合う時間を作らなければならない。自分の心に問いかけるのだ。「私は何をやりたいのか?」「何が私を幸せにするのか?」と。その答えは、人それぞれ異なる。答えがすぐに見つかる者もいれば、長い年月をかけてようやく見つける者もいるだろう。

そして、自分の望みを叶えるために、時には慣れ親しんだ生活から飛び出し、新しいことに挑戦しなければならない時もある。それは確かにリスクを伴い、失敗や喪失の可能性もあるだろう。だが、ベラドンナ様が教えてあげよう。失敗を恐れ挑戦しないことこそが、最も大きな失敗なのだと。

また、強い動機と願望を持ち、決意を固めることも大切だ。自分がどうなりたいのか、どんな未来を望むのか、そのビジョンを明確に描きなさい。そして、その実現のために、継続して努力しなさい。

最後に、具体的な行動として、手帳を使って自分の習慣や達成したいことを可視化するのも良い。'Pure Life Diary'などの手帳には、認知科学に基づいたワークが含まれており、自分自身を見つめ直し、習慣化を助けるためのツールとなるだろう。

以上、ベラドンナ様の貴重なお導きであった。この知識をどう使うかは、あなた次第だ。

最後に

以上です。Difyを使って、簡単なAIアプリを作成し、各LLMごとの回答例を見てみました。

Difyについては、今後、新しいnodeや機能が発表されると期待されるので、しばらくトレースしてみたいと思います。
今回は、ver.0.6.10ベースでしたが、6月15日に、ver.0.6.11が、すでにリリースされています。

各LLMについては、OpenAIなど、頻繁にモデルが改定されているので、注意が必要です。本メモを作成中でも、3.5turboの一部のモデルが使用停止になったりしていました。

また、今回の例の良し悪しはともかく、結構、各社のモデルに特徴がでるようにも感じました。もっとも、設定で大分変わるので、定点観測的な質問例を考える必要があるかもしれません。









いいなと思ったら応援しよう!