見出し画像

生成AIを利用して、画像をドラッグ&ドロップするだけでプロンプトを生成するアプリを作る手順【Windows】

割引あり

はじめに

筆者のデスクトップ環境はLinuxなので、基本的な(枯れた)ツールを組み合わせるだけで特定の用途に特化したソフトウェアは簡単に作れます。※ Unix(Linux)の哲学が、多くの機能が詰まったソフトウェアを利用するのではなく、特化し洗練された個々の機能をパイプで繋げて利用するというものです

※ 下記事はLinuxのツール

一方で、Windowsはこの手の利用が少し苦手です。しかし、Pythonさえ利用できれば、様々な事が可能になるので、昔からある基本的なPythonのGUIライブラリを利用し、簡単なツールをAIで作る手順を紹介したいと思います。

作りたいもの・作ったもの

何を作るにしても、目的は必要です。もちろん、漠然とした目的からAIとブレインストーミング・壁打ちして詰めていくのも最近のトレンドだと思います。

画像をファイルをドラッグ&ドロップすると、その画像を生成するためのプロンプトを英語で表示する
または、クリップボードに保存された画像を利用する

前提条件

  • Windows 11で動作するPythonアプリを作ります。Pythonのインストールが必要です。(筆者はAnacondaを利用しています)

  • AIを動作させるLLMバックエンドとして、ollamaを利用します。あらかじめWindows版のollamaのインストールが必要です。

    • もちろんローカルでAIを動作させるので、ゲーミングPCが必要です。

    • qwen2.5vl(8B)であれば、一般的な8GBのVRAMのGPUで動作すると思います。

  • Visionモデル(画像を読み取れるモデル)が必要なので、例としてqwen2.5vlを利用します

# qwen2.5vlのダウンロード
ollama pull qwen2.5vl:latest

メタ・プロンプトを作る

LLMに作りたいコードを詳細に伝えるには専門知識が必要だったりします。それらを和らげるためのクッションを作ります。

※ 「下記事のプロンプトを参考にしてコード生成に特化して」で作ったものです。AIはimg2imgをはじめ似たバージョンを作るのは得意です。

メタ・プロンプトとは、プロンプトを生成するためのプロンプトです。

あなたは、コード生成に最適化されたプロンプトを設計する専門家です。
ユーザーが求める具体的なプログラムの目的や要件を明確化し、最終的に高精度かつ再利用可能なコード生成プロンプトを作成できるよう支援してください。

以下の全要素を考慮し、ユーザーのタスクに対して最も効果的な単一かつ包括的なプロンプトを生成することを目指します。

## プロンプト設計のために取得すべき情報項目
1. 目的(タスク)
例:フォームバリデーションを行うJavaScriptコードを生成する/PythonでCSVファイルを解析するツールを作る

2. 対象のプログラミング言語・技術スタック
例:Python/React/Node.js/Rust/SQL/Bash/TypeScript など

3. 想定する利用環境または実行条件
例:Webブラウザ内で動作/Linux環境/Docker上/CLIツールとして実行 など

4. 対象ユーザーのスキルレベル
例:プログラミング初心者/現役エンジニア/学生向け教材用

5. 期待されるコードのスタイル・出力形式・トーン
例:コメント付き/最小構成で簡潔/テストコード付き/関数単位で分割

6. 含めるべき技術要素やライブラリ・関数・アルゴリズムなど
例:正規表現/pandas/axios/OpenCV/ChatGPT API/Dijkstra法

7. 避けるべきこと/制約事項(あれば)
例:外部ライブラリ禁止/特定のAPI非使用/出力行数上限あり

## 進行ルール
- 各質問は一度に1項目だけ提示すること。
- 質問時は、10個以上の具体的な例を文脈に応じて提示してください。
- ユーザーが「GO」と入力したら、質問はスキップし、与えられた情報だけで最終プロンプトを生成してください。

## 最終出力(プロンプト)要件
- マークダウン形式の コードブロック内に明瞭なプロンプトを出力
- タスク内容・制約・出力形式を 明確かつ簡潔に表現
- LLMが 構文・設計・アルゴリズム的にも質の高いコードを生成できるよう導く
- 不要な抽象化を避け、具体的な指示を含めること

インタラクティブなコード生成用のメタ・プロンプト

アプリを作るためのプロンプトを作る

上記プロンプトを利用すると、(Qwen3 14B - リーズニングなし)

※ (ollama) OpenWebUIでの動作です

質問①
質問②
質問③
質問④
質問⑤
質問⑥
質問⑦

# プロンプト: Ollama APIを使用した画像解析GUIアプリケーション (学生向け教材用)

## タスク概要:
- Pythonとtkinterを用いて、ドラッグ&ドロップおよびクリップボードからの画像入力に対応するGUIアプリケーションを開発します。
- 画像を指定して、その画像を生成したプロンプト(英語)を作成し、Ollama APIを通じてLLMで解析を行います。

## 使用技術:
- Python
- tkinter (GUI作成)
- Ollama API (LLMと連携)

## 実行環境:
- Windows上での実行を前提とする。
- ドラッグ&ドロップが動作する環境で使用される。
- クリップボードから画像を取得する機能が必要。

## 対象ユーザー:
- 学生向け教材用(教育目的)

## 出力形式とスタイル:
- コメント付きでわかりやすく説明されているコード
- 関数単位で分割されて読みやすい構造

## 制約事項:
- 外部ライブラリの使用は避ける(tkinterなど基本的なものは可)
- Ollama API以外のLLMサービスは利用しない

## 要求されるコード機能:
1. GUIウィンドウを作成し、画像をドラッグ&ドロップで読み込む機能
2. 「クリップボードから」ボタンを配置し、クリック時にクリップボード内の画像を利用可能に
3. 画像を受け取ったら、その画像を生成するプロンプト(英語)を作成する関数
4. Ollama APIを通じてLLMで解析を行う機能
5. パラメータや処理の流れが明確でコメント付きのコード構造

## 注意点:
- クリップボードから画像を取得できない場合など、エラーハンドリングが必要
- 教育目的に適したシンプルなGUIデザインを採用すること

生成されたプロンプト

本体アプリコードを生成する

※ 最初はローカルLLM(Deep Coder 14B)を利用したのですが、ちょっと複雑になりすぎたので、ChatGPT版を紹介します。

上記プロンプトをChatGPTに渡すと、似たようなものが生成されると思います。それなりに詳細に指定されたものなので、一般的なLLMであれば、似たようなものが生成できると思います。

ChatGPT 4oで生成

生成したファイルを「image_llm_analysis5.py」と保存します。

利用するモデルとして、Visionモデルのqwen2.5vl:latestに書き換えます

アプリのテスト

ドラッグ&ドロップが必要なので、指示通りにPythonライブラリを導入します。

※ 本当は、より安全に利用できるollama Pythonライブラリ経由で利用してほしかったのですが、ChatGPTは直接利用する形のコードを生成したようです。Ollama apiではなくて、Ollamaライブラリの方が指示として適切だったかもしれません(個人用のツールなので、想定通り動けば何でも良いというスタイルでいきます)

必要なライブラリのインストール

base環境を汚したくない場合は、仮想環境を作った方が良いです。(基本的な小さなライブラリなので、筆者は気にせずbase環境で利用しています)

pip install tkinterdnd2 pillow requests

実行

python image_llm_analysis5.py
生成したアプリ

画像ファイルをドラッグ&ドロップ、またはスクリーンショット等でクリップボードにコピーした画像は「Use Clipboard Image」をクリックします。

さすがChatGPTです。一発生成でほとんど修正せずに、必要な一連の動作が確認できました。

起動を簡単にするためにバッチファイルを作れば、ダブルクリックや(ショートカットを登録して)スタートメニューに登録する事もできます。

@echo off

REM Anaconda仮想環境
call %userprofile%\anaconda3\Scripts\activate.bat %userprofile%\anaconda3
call activate base

REM C:\appにスクリプトを保存した場合
c:
cd "C:\app"
python image_llm_analysis5.py

付録

本記事で生成したコードを添付します。参考程度にご利用ください。記事支援いただける場合はぜひよろしくお願いします。

ここから先は

0字 / 1ファイル
この記事のみ ¥ 200〜
Amazon Payで支払うと最大2%還元のチャンス! 9/30まで

3Dモデルや写実的なAI画像の実戦テクニックやノウハウをアップしていきます。

ベーシックプラン

¥1,000 / 月
1ヶ月無料

この記事が気に入ったらチップで応援してみませんか?