生成AIを活用する_PythonとDifyと共に
生成AIを活用する_PythonとDifyと共に
生成AI(LLM)の現況
2022年秋に、ChatGPT(LLM)が発表され、これに触った人は、機械によって自然な応答がなされることに感嘆した人と、応答の内容が大したものではない(嘘も多く含まれる)と引いた人に、大別されるように思う。それから2年半が経過したが、最近は毎日のように様々な主体から、様々な生成AI(LLM)関係の「新しい」「高度な」機能が発信され、その現況を理解し、これをどのように利用すれば「役に立つ」のか、活用できるのか、ますます判断がむつかしくなりつつあると思う(なおLLMは、画像、音声、動画など、多様なコンテンツを生成する生成AI のうち自然言語処理を行うものとされる。私の関心は当面LLMにある。)。
初歩的な確認
会社や組織において、自然言語・数字・コードをツールとして行われている業務を効率化・自動化する目的のために、生成AIを利用しようということがいわれており、それはわからないでもない。ただ会社や組織の構成員に生成AIが天上から降ってきても、活用できるレベルからは遠いだろう。個々の構成員が自身の「読み・書き・そろばん」の能力を補完・拡大するために、生成AIを活用しようとするのでなければ使い物にならない。 これは会社や組織に限られない。普通の市民が、自身が存在・活動する領域で自身の「読み・書き・そろばん」の能力を補完・拡大するために生成AIを活用できなければ、それは時間ばかり食う趣味の領域にとどまる。ただ仕事のないときに取り組む余暇エンジニアとしてはこれはこれでも楽しいが。
余暇エンジニアが LLMの世界を巡回・疾走するために
どういうルートをとるのか
生成AIといえば、まずはChatGPTだ。ブラウザ上のChatGPTやGeminiにプロンプトを入力し、Chatして回答を得ることが生成AIのふつうの活用法だ。その延長上にDeep ResearchやNotebookLMがあり、それらの進化は目覚ましいが、それだけではそれはあくまでブラックボックス上での乱舞だ。 生成AIが何者であるかを知らず、その世界を巡回・疾走することを余生の友とするのは感心しない。とんでもない世界に引き込まれるかもしれない現実的な危険性がある。では生成AI、特にLLMにどのようにアクセスし、理解し、活用するのか。 表題の如く、PythonとDifyと共に生成AIを活用するために踏まえなければならない事項は膨大である。しかもデジタル作業の鉄則と思うが、作業手順に必然性がないので、その過程を細分化して、こまめに記録し、しかもできるだけ頻繁に触っていないと、あっという間にゼロ地点に戻ってしまう。これは特に余暇エンジニアの悲哀だ。 そこで余暇エンジニアが LLMの世界を巡回・疾走するにはどういうルートをとればいいか、まとめて見よう。
ルートの見通し
①パソコンでのCLI操作 ⅰコマンドプロンプト ⅱPowerShell ⅢWSL-Ubuntu ②Pythonの使用環境 ⅰPython a.IDLE ⅱAnaconda b.Jupyter Notebook c.VS Code d.Google Colab ③生成AI ⅰGemini Cli ⅱJupyter Notebook,VS Code→Curasor,Google Colab ④Dify ⅰクラウド版 ⅱコミュニティ版(Docker)
まずはCLI
生成AIの開発は、Pythonを利用して行われてきたから、生成AIを利活用するうえで、Pythonについて一応の知識があることが必要なことは間違いない。だからPythonのインストールから始めてもいいのだが、今後もPythonや生成AIの利活用には、コマンドライン(CLI)が利用できることが不可欠である。Windowsでいえば、コマンドプロンプとPowershellだ。Windows上でLinuxが使用できるWSL-Ubuntuでも類似のコマンドを使うし、必要な場面も出てくるので、これも一緒に利用できるようにしておくのがいい。 ここでは提供されたコマンドをコピペすれば足りることも多いが、フォルダへのアクセス・管理のために理解しておいた方がいいこともある。ここらあたりは、「コマンドラインの黒い画面が怖いんです。 新人エンジニアのためのコマンドが使いこなせる本」(翔泳社)を一読すれば十分だ。
CLIの大化け_Gemini Cli
つい2週間前までは、CLIはここで終わりだったのだが、6月下旬に、GoogleからGemini Cliが発表され、エンジニアの世界は大騒ぎだ。要は、PowerShellあるいはVS Code等で使用できるターミナルで、生成AI(Gemini pro2.5)が使えるということだ(日本語を入力して、通常のChatやコードの作成・修正をしてくれる。)。インストールは簡単だ。 Gemini CliでGemini pro2.5が無料で大量に使用できることが賞賛されているが、そこは私が加入しているプランでも使えるので問題ではないが、ブラウザアプリよりはるかに身近に使え、しかも応答がブラウザアプリに登録されることが有用だ。
Pythonと生成AI
次にPythonだ。ちなみにPythonを習得するのに、生成AIを利用するのが最近の流行である。生成AIはPythonと共に、Pythonは生成AI と共にという状況にある。
Pythonの実行環境
余暇エンジニアには、Pythonをどのような環境で使用・実行するかということが、混乱し嫌になってしまうことの最大の原因ともいえる。 上記のように整理すると、まず、a.IDLEの①シェルウインドウと②エディターウインドウを常時利用できるようになることが大切だ(ファイル拡張子はpy)(なお、ターミナルでpython と入力すれば①の使用ができる。)。 次に、b.Jupyter Notebook、c.VS Code、d.Google Colabは、いずれも拡張子ipynbのファイルを作成、実行するものであり、bcは、Anacondaをインストールすれば同時にインストールされる。dは、Gppgle Driveからもアクセスできる。cが応用範囲が広く、dは簡単にアクセスできるが、若干の使用制限がある。どちらかを常用すればいい。bは、ipynbのオリジナルの使用環境であり、cdに習熟すれば使用は容易である。 ここは全体像が把握できればいろいろと参考になるサイトは多いだろうから、これ以上は記述しない。
Pythonは生成AIと共に
ここまでは、準備段階である。 しかしここまで来れば、あとはPythonを学びながらコードを書いて実行し、順次習熟していけばいいのだが、余暇エンジニアには、それさえなかなかうまくいかない。そこで頼りにするのが生成AIだ。Pythonのコーディングを生成AIと共に行おうという趣旨の本はここ1、2年出て来ていたが、最初はコーディングとChatGPTやGeminiを行き来しつつするというスタイルだった。最近、これが同じプラットフォームでできるようになりつつある。 どのルートが一番いいのか、まだよく分からないが、これは早晩解決するだろう。
Difyに触る
次に、LLMを天井から降りてきたアプリではなく、より主体的に理解・活用するために、Difyを利用してLLMを組み込んだ生成AIアプリを作成するのがいい。
使用可能な状態にする
Difyは、LLMを組み込んだ生成アプリを作成するための開発プラットフォームである。クラウド版は容易に使い始めることができる。無料で使え、作成したアプリを5つまで管理ページに保持できる(作成後、DSLファイルにして保存してアプリを「削除」すれば、いくらでも開発できるのかと思っていたのだが、5つ作ると「削除」が見当たらなかったので、違うのかもしれない。)。本格的な開発に使おうと思うと、次のレベルが59ドル/月なので、趣味には余りに高すぎる。 そこで、ローカルパソコンで利用するコミュニティ版を利用することになる。これは無料のクラウド版のような制限はないが、① Dockerのインストール、② Difyのソースコードの取得、③ Docker Composeでコンテナの作成と起動という作業をしなければならず、いささか敷居が高い。ただ「ゼロからわかるDifyの教科書 ~生成AI×ノーコードでかんたん業務効率化」「2.3 コミュニティ版Difyのセットアップ」(技術評論社)に丁寧に解説されており、私もこれにしたがって、使用できるようになった(同書には「環境のセットアップは技術的な知識が必要となるため、もし途中で難しいと感じた場合は本節は飛ばして、まずはクラウド版で進めていただければと思います。」とあるが、何とかなる。)。なお無料版の他に、従量制もあり、「Microsoft Azure & Google Cloud 近日対応」とアナウンスされているので、これが公開されれば余暇エンジニアには使いやすいだろう。
どんなAIアプリを作るのか
Difyには作成できるアプリのタイプとして、ⅰチャットボット、ⅱチャットフロー、ⅲテキスト生成、ⅳフローワークフロー、ⅴエージェントの5種類が用意されている。ⅰはチャットであり、ⅲは問いと最終的な回答の形である。ⅱⅳは、ⅰⅲのプロセスを複雑化したもの、ⅴは最近流行の「AI を使用してユーザーの代わりに目標を追求し、タスクを完了させるソフトウェア システム」とされている。 ⅰⅲは基本的に用意された機能を設定していけばよく、ⅱⅳはLLMを含む回答までの過程(ノード)をブロックのように組み立て、各項目を設定して完成させるというものである。 それぞれのタイプの用語を含む作成方法は微妙に異なっており、特に各タイプの「変数」の役割の違いは直ちには理解できない。 このように多少の困難さはあるものの、APIで提供されるLLMにさわって理解しながら、AIアプリを自前で作ろうというのは楽しい
ただ
ただいくら自分用のAIアプリができるといっても、私の前には、DeepResearchとNotebookLMがあるので、その隙間について作成するということになる。自社の書類をRAGを利用して取り込んでチャットボットを作るといっても、NotebookLMでも可能である。もちろん使用形態の問題とか、セキュリティの問題とかあるが。本当に必要なものが何かは難しいが、楽しさ優先で行こう。
まとめ
要は、生成AIを利用してPythonに習熟したい、Difyで生成Aiアプリを作成し、LLMを理解したい、Gemini Cliはポイントになるということである。 これによって、身のまわり(パソコン、クラウド)に溢れるデジタル情報を、イライラなしに整理、アクセス、利活用できるようにすることが目的だ。