ローカルLLMでできること:軽量モデルを業務自動化に組み込む方法
X-tech推進本部 小林生成AIの登場により、従来のルールベースの自動化では難しかった処理が実現できるようになりました。
例えば、文章の要約や分類、問い合わせ内容の整理などです。以前は人間の判断に頼らざるを得なかったケースでも、LLMを補助として使うことで解決できることが増えています。
しかし、LLMを業務に組み込む際にはいくつかの課題があります。
多くの場合、クラウドのAPIを利用することになりますが、API利用にはコストがかかります。また、外部サービスにデータを送信することになるため、セキュリティやデータ取り扱いの観点から慎重な検討が必要になる場合もあります。
そこで今回注目するのが、ローカル環境で動作するLLM(ローカルLLM)です。
ローカルLLMはクラウドの大型モデルほど高性能ではありませんが、使い方を工夫すれば業務自動化の中で十分に役立つ場面があります。本記事では、ローカルLLMを業務自動化に組み込む際の考え方と、最小構成の実装例を紹介します。
※本記事での「ローカルLLM」は個人用マシンで動作する軽量なLLMを想定しています。
ローカルLLMのメリット
ローカルLLMには、主に次の3つのメリットがあります。
API利用料金がかからない
クラウドAPIの場合、利用量に応じて料金が発生します。
一方、ローカルLLMは一度環境を構築すれば(ハードウェアや電力コストはあるものの)追加のAPI料金は発生しません。
ただし、使用するモデルのライセンス条件(商用利用可能か?など)は確認する必要があります。
データを外部に送信しない
ローカル環境で処理が完結するため、外部サービスにデータを送信する必要がありません。
ただし、セキュリティが完全に保証されるわけではないため、ログ管理やアクセス制御などの対策は依然として重要です。
オフラインでも利用できる
自動化を行いたいマシン上でAIも動作するので、オフラインあるいはネットワークが不安定な環境でもAIを動作させられます。
このためより多くのシーンでAI利用ができるようになります。
ローカルLLMのデメリット
一方で、ローカルLLMには明確な制約もあります。
高度な推論は苦手
個人用PCでローカルLLMを動作させるとき、現実的な判断として軽量モデルを選ぶことになります。
軽量モデルは複雑な推論や長い文脈の理解が苦手です。
そのため、複雑な思考を必要とするタスクには向いていません。
処理速度の問題
モデルサイズやPCスペックによっては、AIによる処理に時間がかかることがあります。
リアルタイム処理ではなく、バッチ処理などに向いている場合もあります。
ローカルLLMを自動化に組み込む
それでは、ローカルLLMの性質を理解したうえで、どのように自動化に活用すればよいでしょうか。
ここでは自動化の例として企業サイトの記事カテゴリを再分類するケースを考えてみます。
企業サイトの記事には「ニュース」「IR」「イベント」などのカテゴリが用意されていますが、分析目的では別の分類軸(「技術」「企業情報」など)で整理したくなることがあります。
ここでこの再分類のタスクを分解してみましょう。主に次のようなタスクに分けることができます。
- WebページやRSSなどから記事情報を取得
- カテゴリの再分類
- 分類結果をExcelに出力
「WebページやRSSなどから記事情報を取得」と「分類結果をExcelに出力」は、通常の自動化で十分対応できるタスクです。
一方で「カテゴリの再分類」は、ルールベースの自動化、例えば特定のキーワードを含むか判定するといった処理ではすぐに破綻します。「このキーワードがあったらこのカテゴリ」というルールを明確に決めるのは難しいからです。
そこで、「LLMを使って柔軟にカテゴリを分類するとよさそうだ」という考えに至りますが、このとき高性能なLLMを使う必要はあるでしょうか。
以前「コストと性能のバランスを考える:LLMのモデル選択」という記事で紹介したように、テキスト分類や情報抽出といったタスクでは、軽量モデルでも十分実用的な結果が得られる場合があります。
今回のようなカテゴリの再整理においても、ローカルLLMでも十分な性能が得られると考えられます。
実装例
それでは、実際にローカルLLMでカテゴリの分類を行ってみましょう。
ここではローカルLLMを使う例として、Ollamaを使った最小構成の実装を紹介します(Windows11における実行を想定しています)。
Ollamaのインストーラーは公式サイトにあるように、PowerShellで下記を実行してインストールできます。
irm https://ollama.com/install.ps1 | iex
インストール後、コマンドラインで下記を実行し、Ollamaを起動します。
ollama run {モデル名}
今回は例としてgemma3:4b(gemma3の4Bモデル)を使うので次のようにします。
ollama run gemma3:4b
初回実行の場合はモデルのダウンロードが走り、ダウンロード後、そのまま対話できます。
>>こんにちは
こんにちは!何かお手伝いできることはありますか?
対話は Ctrl + d で抜けられます。
公式ドキュメントにあるように、Ollamaはインストール後、APIがデフォルトで http://localhost:11434/api にて提供されます。
これにより、ローカルLLMをAPIとして簡単に利用できます。
例えば、記事タイトルをもとに特定の分析カテゴリ(技術、事例、マーケティング、企業情報)に分類したい場合、Pythonで次のように実装できます。
ここでは例として「コストと性能のバランスを考える:LLMのモデル選択」というタイトルを使います。
import requests
url = "http://localhost:11434/api/generate"
schema = {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": ["技術", "事例", "マーケティング", "企業情報"]
}
},
"required": ["category"]
}
data = {
"model": "gemma3:4b",
"prompt": """
次の記事を適切なcategoryに分類してください。
Title:
コストと性能のバランスを考える:LLMのモデル選択
""",
"format": schema,
"stream": False
}
res = requests.post(url, json=data)
print(res.json()["response"])
ここで出力はformatをJSON Schemaオブジェクトで指定して形式を固定しています。JSON形式で出力を受け取れば、そのまま後続の処理に接続することも容易です。
プログラムの出力は下記のようになり、期待通り「技術」に分類されました。
{"category": "技術"}
本記事の例はPythonを用いて紹介しましたが、他の言語やRPAツールでもHTTPリクエストを用いて同様にローカルLLMが利用できます。
また、モデルはgemma3:4bを用いた例を紹介しましたが、実際に行うタスク、マシンスペック、期待される応答時間などの要件により適切なモデルは異なります。適宜複数のモデルを試して目的にあったものを見つけるとよいでしょう。
まとめ
ローカルLLMはクラウドの大型モデルと比べると性能は限定的です。
しかし、すべてのタスクに高性能なモデルが必要というわけでもありません。
特に、次のようなタスクで軽量モデルは力を発揮します。
- テキスト分類(記事カテゴリや問い合わせ内容の分類)
- 情報抽出(文章から日時やキーワードを抽出)
- 短い要約(メールやニュースの要点整理)
タスクを分解し、軽量なローカルLLMでも実現可能な処理を見つけることで、今までできなかった自動化を低コストで実現できます。