#ビジネス

【備忘録】ローカルでAIを使用してみるための準備(Python/Ollama/Gemma等)

2025年8月31日 

注)未だ理解が浅いのでざっくりです

自由研究はこどもたちの宿題だけではありません。もはやうん十年前に自由研究の呪縛から解き放たれた人間も自発的に自由研究したくなる時があるのです。今回は現代の最先端科学とも思しき人工知能すなわちAI(Artificial Intelligence)の勉強を始めてみました。

参考用のコードを置こうかと思いましたが、素人の独学なので「どうぞコピペして使ってください」という自信と責任が持てないのと、ChatGPTに質問したら爆速で出力してくれるので不要かなと思いました。

AIのきっかけはAI

昨今のAIの進化は目覚ましいものです。こうして自分でAIを動かしてみようと考えるまで気にしていなかったのですがAIにも種類があるとのこと。私が主に使用しているChatGPTを含め会話が可能なタイプのAIは大規模言語モデル(Large Language Model:LLM)というものに分類されるそうです。

ChatGPTがリリースされた当初はちょっとした話し相手としてからかった感じで遊ぶ利用者が多かった印象ですが、5まで進化した今では一発でほぼ完璧なコードを書いてくれるほど。ただ個人的には4の方が意思疎通がうまく取れていたような気がしています。

そうしたなかで「自分だけのAIを作ってみたい(育ててみたい=プロンプトやファインチューニングやディープランニングの意味を勉強したい)」という思いが強くなり、ChatGPTにお願いして『ローカルAI(LLM)』の世界に飛び込むことになりました。

コードを Azure に簡単にデプロイするための統合ツールを備えた、強力で軽量な無料コード エディター

なんとなくChatGPTに「AIと会話できるアプリを作りたい」と質問してみました。そこでまず必要になったのがPythonです。Pythonは「Visual Studio Code(VScode)」でも記述可能とのことだったので既にHTML/CSS/JavaScript/PHPはでいじっていたゆえ引き続きPythonもVScodeで進めることにしました。

Pythonをインストールする

私はAIに言われるがままに(後に割と危険な行動だったと省みる)VScodeの拡張機能からPythonをインストールしました。

Visual Studio での Python Web サポートには、Bottle、Flask、Django フレームワークの Web アプリケーションなど、いくつかのプロジェクト テンプレートが含まれています。 Visual Studio インストーラーを使用して Python をインストールする場合は、[オプション] の下 Python Web サポート 選択して、これらのテンプレートをインストールします。 このチュートリアルでは、空のプロジェクトから始めます。

https://learn.microsoft.com/ja-jp/visualstudio/python/tutorial-working-with-python-in-visual-studio-step-01-create-project?view=vs-2022

VScodeの拡張機能からインストールした結果「Python」「Python Debugger」「Python Environments」が自動的にINSTALLEDとなりました。私はこうしたワンステップを踏まずともVScodeさえあればPythonを使えるものだと思っていましたが違っていたようです。

これで「.py」の拡張子を持ったファイルを作成できるようになりました。いったんひと安心です(この手順が一般的なのか否かは私のなかでは未だに定かではないです)。

Ollama(Gemma)をダウンロード

LLMを提供しているところは各社あるようで、どのモデルを使用するか決めるところから始まりましたが何となくGoogle社のGemma(ジェマ)にしました。ちなみに他に提案されたのがMeta社のLlama(ラマ)でしたが今回はいったんGemmaを採用。

どうやらこれだけでは動かないらしく「Ollama(オラマ)」というサービスが必要になることが判明。言語モデルだけではAIは使えないとのことで公式サイトからダウンロードしましたが、正直なぜこれが必要なのかはもう少し作業を進めるまでよく理解していません。

ローカルにインストール

ダウンロードしたOllamaをローカルにインストールします。インストール自体はzipを開けば自動的に展開するので特に難しいことはないのですが、絶対パスが必要になる時があるのでどこにファイルがあるのかは今でもメモ帳に絶対パスを書き留めています。

インストールは以上で終わりですが、ただし初回の起動だけネット経由でGemmaつまりは言語モデルを「pulling」(ダウンロード)する必要がありコマンドプロンプトからの操作を促されました。後に指摘されましたが記憶にございません状態でした。

理由はOllamaを経由してGemmaを使えるようにするため。私はGemmaも単体で落とすものだと思っていたのですがOllamaが窓口になっているのでコマンドプロンプトで使用したいモデルを「run」させれば使用できるようになるそうです。つまり便利ではあります。途中でGemmaのバージョン変更やMeta社のに変更したいと考えた場合もOllamaから「run」を叩けばOKとのこと。

bash
pulling gemma:7b

bash
ollama run gemma

Tkinterを勧められる

簡易的なUIとしてTkinter(ティーケーインター)を勧められました。もちろん何のことかさっぱりわかりませんでしたが、AIの提案を全て丸呑みしてコピペを繰り返すのも癪に障るというか何か良くないなと思ったのでGoogle検索も併用。どうやらPythonに標準で組み込まれているらしい。

ただこちらは走らせるとパソコン本体から「ウィイイイ」と音がするので常時立ち上げておくのには抵抗がありました。加えて本当にシンプルなWindows95みたいなデザインなのでもう少しHTML等を駆使したチャット欄のようなもので会話できないかと思いました。

SQLiteで会話履歴を保存する

せっかくなのでデータベース(.db)も使えるようにしてみようと以前に手を出して挫折したSQLite(MySQLではないです)に挑戦。AIとの会話を保存できれば後々何かに応用できるだろうかという魂胆です。提案されたのはSQLite(エスキューライト)に保存すると同時に確認用のログ出力として指定のフォルダ内にテキストファイル(.txt)でデータを保存していく練習です。

ただしDBに保存されたデータとTXTファイルは同期していないので、TXTファイルを修正削除してもDBには反映されないと知って応用に使用するのはやめました(管理が煩雑になるため)。

項目SQLiteMySQL
仕組みファイル型DBサーバー型DB
データ保存方法1つのファイルに全て格納サーバー内で複数ファイルに分割管理
主な拡張子`.db`, `.sqlite`, `.sqlite3`表向きには無し(内部では `.frm`, `.ibd` など)
ユーザーの扱い方ファイルをコピーすればそのまま持ち運び可能SQLコマンドでサーバー経由操作、ファイル直接操作はしない

ChatGPTの回答

コマンドプロンプトからの操作

カレントディレクトリ(現在位置)を指定しなければならないことは前々から理解していたつもりでしたが、いざ起動してみようとなるとこれが一筋縄ではいかないもの。また、いちいち指定するのが面倒になってきたので他の方法を質問したところ「環境変数」を設定するとよろしと返答があったので覗いてみることにしました。

環境変数PATHの変更のやり方(Windows 10/11の場合)
1. Windowsのスタートボタンを押して「環境変数」と入力
2.「システム環境変数を編集」をクリック
3.「環境変数(N)...」ボタンをクリック
4.「システム環境変数」か「ユーザー環境変数」の中からPathを探して選択
5.「編集」ボタンを押し、追加・削除・編集ができる
6. 追加する場合は「新規」でパスを追加
7. OKで全部閉じていく

ChatGPTの回答

ユーザー環境変数は間違えたとしても復元は容易ですがシステム環境変数はむやみにいじらない方よさそうです。そもそも管理者権限でログインしていないと編集できないので、管理者以外でログインした方が逆に心臓部をいじることができないのでそれも得策です。

こんなに高度なことをやってみたのに環境変数が機能していないのかコマンドプロンプトからはカレントディレクトリを変更しないと現在位置に新しいDBを作ってしまったり(確認したところそれはありませんでした)ファイルが参照できないというエラーメッセージが頻発(いちばん頭を悩ませたのはコレ)したため環境変数はいったん忘れて絶対パスを入力してCDを変更する方法を取っています。

この段階で環境変数に関しては埒が明かなくなってきたのでOllamaはいちいち絶対パスを指定するのが面倒であればコマンドプロンプト(Windows PowerShell)ではなくPythonから起動させるよう提案されました。

その状況、まさに「Python と ollama の実行ファイルを **どこからでも呼べるようにしたいけど、環境変数設定がうまくいってない」状態」ですね。

小さい頃に父親がMS-DOS??からゲームを起動させているのを見ていたので(自慢するかのように見せつけられていたので)真っ黒な画面に機械的なフォントの文字がずらずらと出てくる画面には慣れているつもりでしたがいざコマンド入力からの起動を始めるとちょっとしたハッカー感を味わいます。

MS-DOS(エムエス-ディーオーエス、エムエスドス[2])は、1981年よりマイクロソフトが開発・販売したパーソナルコンピュータ向けのオペレーティングシステム(OS)である。
「MS-DOS」が製品名で、マイクロソフト ディスク・オペレーティングシステム(英: the Microsoft Disk Operating System)を意味する[3]。

この段階までのAIとのやり取りでやたら目に入ったのが「pip」や「bash」といった専門用語っぽい用語。普段接する機会のない用語を当たり前のように使ってくるのでそういった点ではAIの回答は知見が広がる感はあります。

OllamaのみPythonから起動するコードにしたため起動の際に逐一コマンドプロンプトを叩かなくてもよい便利機能にしたつもりでしたが後にアイコンをクリックすれば一発で起動することがわかり遠回りだったと知りました。

Flaskの場合

Tkinterだとやはり「機械ちっく」な印象が強く全体的な印象として堅苦しいというかデザイン性は欠けてくるのでHTMLを使用してチャット欄を作成することにしました。この手法を採用するとなると今度必要になるのはTkinterではなくFlask(フラスク)と提案されました。Flaskの場合はHTML等の言語と同様にルールがあって以下のようにディレクトリを構成しておくとスムーズに運用できるとのこと。

せやせや、それがFlaskの王道スタイルや!
・templates/ → HTMLファイル
・static/ → 画像、動画、CSS、JS など
これに従うと render_template("index.html") で楽に表示できるし、動画や画像も url_for('static', filename='〜') で参照できるで。

ChatGPTの回答

途中でですます調が面倒になってネットスラングばりばりで質問していたら回答もそれになってしまったのですが、後から考えるとプログラミングに関するデータの出力と同時に文脈に合わせたネットスラングを使用した文章生成という負荷のかかる処理をさせてしまっていたことが判明したため、そこは切り分けることにしました。

【参考】TkinterとFlaskの違い

あまりChatGPTの出力結果をそのままコピペしたくないのですがそのまま貼り付けます。AIが出した答えが必ず正解とは言い切れないので常に留意しておかなければならないのはもはや新常識。

Tkinter
Pythonに標準で入っているGUIライブラリ

python
import tkinter as tk

Flask
PythonのWebアプリケーションフレームワーク

python
from flask import Flask

項目Flasktkinter
種類WebフレームワークGUIライブラリ
用途ブラウザで動くWebアプリを作成デスクトップアプリのウィンドウやボタンなどを作成
実行環境サーバー + ブラウザローカルPC(Pythonが入っていればOK)
UIの見た目HTML/CSS/JavaScriptで自由にデザイン標準的なウィンドウ部品(デザインはシンプル)
代表的な例チャットサイト、ブログ、APIサーバー電卓アプリ、ツール系ソフト
学習のしやすさWeb技術(HTML/CSS/JS)の知識が必要Pythonだけで完結、初心者向け
利用シーン公開したいWebサービスやサイト自分用のツールや簡易アプリ

ChatGPTの回答

【応用編】プライベートIPアドレスを使用

Flaskで利用可能になったHTMLをスマホでも表示させてみたかったのでAIに質問したところ「プライベートIPアドレス」を使用してスマホから閲覧操作したらよきという回答だったためまずはグローバルとプライベートのIPアドレスの違いからおさらい。会社ではよくある共有フォルダ(社内ネットワーク)の仕組みがまさにこれだと思うのですが(在宅勤務でのVPNなどはまた別の設定)、いざ自分でネットワークを立ててみるとなると頭がこんがらがってきます。

プライベートIPアドレス
プライベートIPアドレス(ローカルIPアドレス)は、プライベートネットワーク(外部から利用できない社内LANなど)のアドレスとして使うことができる。異なるプライベートネットワークを相互接続してルーティングすることも可能である。

プライベートIPアドレスを介することでスマホからも操作が可能になることは確認できました。もちろんパソコンでローカルLLMを起動させていることが前提なので、今のところあまり意味がないなとも思い実験的試みとしていったん置いておいています。

以上により、HTML/CSS/JavaScriptで作成したUIを通してPythonとOllamaによりGemmaとの会話をローカルで行うことができるようになりました。今のままではGemmaの回答がデフォルトなので、Python側でプロンプトを記述してより自然な返答とデータの蓄積にプラスして分析もできるようになればというのが今現在の構想です。

これをネット上にあげるとなるとサーバーを用意しなければならず予算も手間もかかるのでGemmaを移行することはできませんが、APIを取得して制限をかけておけば予算内で類似のジョークサイトのようなものを運営するのは不可能ではないとのこと。ただし利用者がAIとどんな会話をしているのかを管理者側で保存するわけにはいきませんし、仮に不適切な返答をしてしまった場合の責任というものを背負いきれません。そのためAIを活用したサービスはまだ課題が非常に山積みであるということはこの一連の作業を通じて痛感いたしました。

参考引用:
OpenAI(https://openai.com/ja-JP/)2025.8.31
フリー百科事典『ウィキペディア(Wikipedia)』IPアドレス(https://ja.wikipedia.org/wiki/IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9)2025.8.31
フリー百科事典『ウィキペディア(Wikipedia)』MS-DOS(https://ja.wikipedia.org/wiki/MS-DOS)2025.8.31

ChatGPT の回答は必ずしも正しいとは限りません。
重要な情報は確認するようにしてください。

\気になったらSHARE!!/


次の記事:【備忘録】ローカルでFiveMを使用するための準備(PART1/CLIENT編)

【1泊2日】初の2日連続TDR『東京ディズニーランド/TDL』『東京ディズニーシー/TDS』をしたので攻略日記を書きました:前の記事

ほちょこと申します。
気になるを追究した雑記です。

好きな事をとことん&パニック症の減薬中!!超マイペースに生きている人間もいるからだいじょびと誰かに伝わったら嬉しい手作りウェブサイトです。基本エンタメ全般ですが稀に真面目モードにも。
よろしければABOUTもご覧ください。

真面目なご挨拶

パニック障害、不安障害と診断されたことを恥じる時もありました。こんな病気にさえならなければ自分の人生はもっときらびやかで素敵なものになったのではないかと親を責め、自分自身を責めたこともありました。月並みですが今ではこの経験が私自身を強くしているのだと感じています。そしてこれから同じような苦しみで生きづらさを抱えてしまう未来のひとたちを支え助けるのが私の生きる意味のひとつであると考えながら日々過ごしています。

mail:contact e-hocho.com 

当ブログの名義でDiscord鯖を開設しました
日常のお悩み相談から壊滅的にくだらない雑談まで
使い方は自由

招待URL→ https://t.co/mMzIByBwVf


最近のおすすめ記事

配信者のみがプレイしているGTA(グランドセフトオート)『ストグラ』ってなんだ+スペハラ対策基礎知識も

【2023年11月現在】世界最大級"Kアリーナ横浜"1回目の感想と諸注意メモなど

【神回】劇場版『名探偵コナン 黒鉄の魚影』―灰原哀とスピッツと八丈島の美しいコラボ

最新作『龍が如く8』もいよいよ発売間近→追加キャストにヌー井口&成田凌(敬称略)により興奮中

コマンドプロンプトの世界で読む物語―この違和感を体感してほしい@ChatGPT

【バキ童神回】自称スピッツ上級者をも悩ませるコミックLOとスピッツの歌詞の見分け方講座

【備忘録】東京ディズニーランドのチケットを購入しようとしたら3Dセキュア認証に引っかかった

記事一覧はコチラ

読まれている記事


スマホ&パソコンの出張相談
MusRattus

https://musrattus.com/

都内を対象に出張相談中!!
とのことです

\ スマホはこちらから /