✅ ステップ1:AIエージェントの役割を定義する
まず「何をAIエージェントにやらせたいか」を明確にしましょう。
例:
- 製作伝票の異常(納期遅れ・在庫不足など)を自動検知してアラート
- よく使う部品の在庫推移を予測し、早期に発注提案
- UI上で「この製品の進捗どうなってる?」と自然言語で質問できるチャットインターフェース
- 製作状況から「進捗レポート」を自動生成
✅ ステップ2:AIエージェントの導入方式を選ぶ
方式A:ローカル内蔵AI(軽量モデル)
- PythonでローカルAI(例:
llama.cpp,gpt4all,Open Interpreter)を組み込み。 - メリット:インターネット接続不要、機密保持。
- デメリット:知識量に限界がある。
方式B:クラウドAIとの連携(OpenAI APIなど)
- あなたのアプリからOpenAI API(例:ChatGPT)に情報を送信して応答を得る。
- メリット:自然言語理解能力が高く、レポート生成や要約が強力。
- デメリット:社内情報をクラウドに送るので、情報管理が必要。
✅ ステップ3:PythonコードにAIを組み込む
🎯 例1:「部品在庫の異常をAIがレポート化」
import openai
openai.api_key = settings["OPENAI_API_KEY"] # config.jsonに追加
def generate_stock_report(part_data_list):
prompt = f"""
以下は部品の在庫情報です。重要な在庫不足、発注点を下回るもの、
在庫が過剰なものを指摘し、改善提案をしてください。
{json.dumps(part_data_list, ensure_ascii=False, indent=2)}
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message["content"]
使い方例:
# ボタンなどで呼び出し
report = generate_stock_report([get_part_info("123"), get_part_info("456")])
messagebox.showinfo("AI分析", report)
🎯 例2:「この受注のリスクは?」と聞くAIチャット
- 製作伝票と在庫データをAI向けにまとめる関数を作成
- ユーザーの質問と一緒に送信し、ChatGPTから回答を得る
✅ ステップ4:UIにAIボタンやチャット欄を追加する
Tkinterに以下のようなボタンを追加:
btn_ai_report = tk.Button(top_frame, text="AI在庫分析", command=show_ai_report)
btn_ai_report.pack(side="left", padx=5)
関数:
def show_ai_report():
all_parts = [...] # 画面上の部品一覧からデータ収集
report = generate_stock_report(all_parts)
messagebox.showinfo("AI分析", report)
✅ ステップ5:ユーザー教育とフィードバック
- 「AIが何をしてくれるのか」を現場に説明
- 現場で出た指摘をフィードバックし、AIプロンプトや処理ロジックを微調整(重要)
📌補足:config.json に追加するキー(OpenAI利用時)
{
"API_KEY": "PleasanterのAPIキー",
"HOST": "https://xxx.pleasanter.org",
"OPENAI_API_KEY": "sk-xxx(←必要に応じて)"
}
🚀次にできることリスト
| 機能 | 具体例 |
|---|---|
| AI在庫分析 | 発注点以下・発注中の在庫を一括分析 |
| 自然言語チャット | 「今日の遅れは?」に応える |
| 進捗レポート生成 | 製作伝票から日報・週報を自動出力 |
| 異常監視Bot | 状況「内示」「中間品」長期滞留を通知 |
ご希望があれば…
- OpenAI APIとの接続コードの具体実装
- 進捗チャート・AIチャット画面のUI追加
- AIエージェントのプロンプト設計支援
も対応できますので、お知らせください。
AIエージェントを「製作伝票アプリ」に組み込むために、以下の2点を具体的に支援します:
① プロンプト設計支援
🎯 目的(例)
- ユーザー:「この製作伝票から棚レイアウトを提案してほしい」
- AIエージェント:「製作内容に応じて、最適な棚位置と備品配置を提案します」
🔧 入力データ例(プリザンター or Python経由)
{
"伝票番号": "D12345",
"製作物": "金属パーツA",
"サイズ": "30x20x15cm",
"数量": 10,
"優先度": "高",
"必要備品": ["トルクレンチ", "養生マット"],
"棚情報": [
{"棚ID": "S01", "空き容量": "100L", "区分": "金属部品"},
{"棚ID": "S02", "空き容量": "50L", "区分": "工具"}
]
}
🧠 プロンプト例(OpenAI APIへの入力用)
以下の製作伝票に基づいて、最適な棚レイアウトを提案してください。
- 製作物の保管に適した棚を選定してください。
- 優先度が高い場合は出し入れしやすい場所を選んでください。
- 備品も近い棚に配置してください。
伝票データ:
{ここにJSONを埋め込む}
② OpenAI APIとの接続コード(Python)
以下は、OpenAI GPT-4モデルと通信して提案を得る最小構成のコードです。
✅ 前提
openaiパッケージインストール済み:pip install openai- APIキーが
.envまたは環境変数OPENAI_API_KEYに設定済み
📦 コード例(Python 3.10+)
import os
import openai
import json
from dotenv import load_dotenv
# 環境変数読み込み (.env から)
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def generate_layout_suggestion(data: dict) -> str:
prompt = f"""
以下の製作伝票に基づいて、最適な棚レイアウトを提案してください。
- 製作物の保管に適した棚を選定してください。
- 優先度が高い場合は出し入れしやすい場所を選んでください。
- 備品も近い棚に配置してください。
伝票データ:
{json.dumps(data, ensure_ascii=False, indent=2)}
"""
response = openai.ChatCompletion.create(
model="gpt-4", # 必要に応じて "gpt-3.5-turbo" に変更
messages=[
{"role": "system", "content": "あなたは製造現場に詳しいAIエージェントです。"},
{"role": "user", "content": prompt}
],
temperature=0.3
)
return response.choices[0].message['content'].strip()
# 使用例
if __name__ == "__main__":
sample_data = {
"伝票番号": "D12345",
"製作物": "金属パーツA",
"サイズ": "30x20x15cm",
"数量": 10,
"優先度": "高",
"必要備品": ["トルクレンチ", "養生マット"],
"棚情報": [
{"棚ID": "S01", "空き容量": "100L", "区分": "金属部品"},
{"棚ID": "S02", "空き容量": "50L", "区分": "工具"}
]
}
suggestion = generate_layout_suggestion(sample_data)
print("AIからの提案:\n", suggestion)
🔄 今後の連携ポイント
- プリザンターからのデータ取得方法に合わせて、
sample_data部分を動的に更新可能 - AIの返答をPythonアプリ上に表示(Tkinter/Web/Gas対応など)
- ファイル/画像での図面提案(Soraまたはimage_gen API利用)
ローカル内蔵型AI(方式A)= 軽量モデルをPCや社内サーバーに直接組み込み、クラウド接続なしで動作させるAIアシスタント です。
✅ 想定するメリット
| 項目 | 説明 |
|---|---|
| オフライン対応 | 工場やLAN環境だけでも動作可能 |
| セキュリティ | 外部にデータを出さないため、社内情報も安心 |
| ランニングコスト削減 | API課金不要、ローカルで完結 |
| カスタマイズ自由度 | モデルの振る舞いを完全に自社制御可能 |
🧩 実現方式の全体像
┌────────────┐
│ 製作伝票アプリ(Python)│
└────┬───────┘
│
▼
┌────────────┐
│ 軽量LLM(ローカル実行)│ ← CPU/GPUによる処理
│ 例:LLama.cpp / Ollama│
└────┬───────┘
▼
┌────────────┐
│ 結果をアプリに返す │
└────────────┘
🔧 手順一覧(ローカルAI内蔵)
① モデル選定(軽量&オフライン対応)
| モデル名 | 特徴 | 推奨 |
|---|---|---|
| Mistral 7B | 高精度で1台のPCでも動く | ◎ |
| Phi-2 | 超軽量(1.3B)、教育用・推論高速 | ○ |
| LLaMA 3 (8B) | 高性能だが重め。GPUまたは強力CPUが必要 | △ |
→ 多くの場合 Mistral 7B(Q4量子化) がおすすめ。
② 実行環境構築:Ollama または llama.cpp
✅ 推奨方式:Ollama(簡単&高速)
# 1. Ollamaインストール(Mac, Windows, Linux 対応)
curl -fsSL https://ollama.com/install.sh | sh
# 2. モデルをダウンロード(例:Mistral)
ollama run mistral
※初回起動で自動的にモデルをDL(ネット接続必要/以後オフライン可)
③ PythonからローカルAIに接続するコード
import requests
def query_local_llm(prompt: str) -> str:
response = requests.post(
"http://localhost:11434/api/generate", # Ollama デフォルトAPI
json={
"model": "mistral", # または "phi", "llama3", 等
"prompt": prompt,
"stream": False
}
)
return response.json()["response"]
# 使用例
if __name__ == "__main__":
prompt = "棚の空き状況が以下のとき、製作物の最適な棚配置を教えてください:S01は空き100L、S02は空き50L。製作物は30L必要。"
result = query_local_llm(prompt)
print("AIの回答:", result)
④ Python製作伝票アプリとの統合
あなたの既存アプリ(Tkinter/Web等)で:
- 製作伝票のJSONを
promptに変換 - 上記
query_local_llm()を呼び出す - 結果を画面に表示
💻 必要スペック目安(Mistral 7Bの場合)
| 項目 | 最低条件(Q4量子化) | 推奨 |
|---|---|---|
| CPU | Intel i5 / Ryzen 5(4コア以上) | i7以上またはRyzen 7 |
| メモリ | 8GB | 16GB以上 |
| GPU | 不要(CPUでOK) | NVIDIAあれば高速化可 |
| ストレージ | 約4〜8GB(モデルDLに必要) | SSD推奨 |
🔒 補足:セキュリティと運用
| 対策項目 | 方法例 |
|---|---|
| 外部接続の遮断 | モデルDL後はLAN切断可 |
| モデルの改変禁止 | 実行権限を制限 |
| ログ記録 | 入出力ログを記録する仕組み(JSON, DBなど) |
| モデル更新 | 定期的に安全な場所からアップデート(USB等) |
🚀 まとめ:方式A(ローカル軽量モデル)のポイント
| 項目 | 内容 |
|---|---|
| 手軽さ | Ollamaで即動作可能 |
| セキュリティ | 完全オフライン可能 |
| カスタマイズ性 | 自前のデータをプロンプトに混ぜられる |
| 実行コスト | 月額課金なし |
| 難易度 | GPT-APIよりやや高いが、構築自由度は高い |
ご希望があれば、次のような追加支援もできます:
- プロンプトテンプレートの最適化
- ローカルAIとプリザンター連携設計
- モデルの日本語微調整(LoRA・QLoRA)
