ローカル小型言語モデルでAIエージェントを構築する
この記事では、インターネット接続やAPI費用を必要とせず、自分のマシン上で完全にローカルに動作するAIエージェントを小型言語モデル(SLM)を使って構築する方法を解説します。AIエージェントとSLMの概念、ローカル実行の利点、OllamaとLangChainのセットアップ、エージェントの段階的構築、メモリとツールの追加、そしてSLMの限界について説明します。
記事インテリジェンス
要点
- AIエージェントは、言語モデルを使用して推論し行動するプログラムで、単なるチャットボットよりも強力です。
- Phi-3やMistral 7Bのような小型言語モデルは標準的なハードウェアで動作し、プライバシーとゼロコストを提供します。
- OllamaとLangChainを使用すると、ツール呼び出しと会話メモリを備えたローカルAIエージェントを迅速に構築できます。
- ローカルSLMは精度、速度、複雑な推論に限界があり、プロトタイピング、学習、プライバシー重視のプロジェクトに適しています。
重要な理由
このニュースが重要なのは、AIエージェントは、言語モデルを使用して推論し行動するプログラムで、単なるチャットボットよりも強力ですためです。
技術的影響
モデル選定、推論コスト、プロダクト能力、評価基準に影響する可能性があります。
人工知能の分野では、かつてAIエージェントを構築することは大手テック企業だけの特権であり、高価なクラウドAPIと強力なサーバーが必要でした。しかし、小型言語モデル(SLM)の登場により、状況は一変しました。今では、初心者の開発者でも、インターネット接続(初期設定後は不要)やAPI費用なしに、自分のコンピュータ上で完全にローカルに動作するAIエージェントを構築できます。
この記事では、OllamaとLangChain/LangGraphという人気ツールを使用して、ゼロからローカルAIエージェントを構築する実践的な方法を紹介します。Pythonに慣れていない初心者から経験者まで、役立つ内容です。
AIエージェントとは?
AIエージェントは、言語モデルを使用して思考し、意思決定し、行動を起こすことで目標を達成するプログラムです。単にメッセージに応答するだけのチャットボットとは異なり、エージェントはタスクを小さなステップに分解し、次に使用するツールやアクションを決定し、前のステップの結果を次のステップに活用し、タスクが完了するまで継続します。
基本的なエージェントは3つの部分から構成されます:
- **脳(LLM/SLM)**:入力を理解し、何をすべきかを決定します。
- **メモリ**:会話のコンテキストを保存します。
- **ツール**:エージェントが呼び出せる外部関数(検索、計算機、ファイル読み取りなど)。
小型言語モデルとは?
小型言語モデル(SLM)は、GPT-4のような大規模モデルと同様に大量のテキストデータでトレーニングされたAIモデルですが、はるかに軽量になるよう設計されています。GPT-4が数千億のパラメータを持つ一方で、Phi-3、Mistral 7B、Llama 3.2(3B)のようなSLMは10億から130億のパラメータを持ち、最新のCPUまたはコンシューマーグレードのGPUを搭載した通常のコンピュータで実行できるほど軽量です。
代表的なSLM:
- **Phi-3 Mini**(Microsoft、3.8Bパラメータ):高速推論、低メモリ。
- **Mistral 7B**(Mistral AI、7B):汎用タスク、指示追従。
- **Llama 3.2(3B)**(Meta、3B):バランスの取れた性能。
- **Gemma 2B**(Google、2B):軽量、初心者向け。
なぜローカルでAIエージェントを実行するのか?
ローカル実行の利点:
- **API費用なし**:クラウドモデルはトークン課金だが、ローカルモデルは初期設定後は無料。
- **完全なプライバシー**:データがデバイスから出ないため、医療記録や機密ビジネスデータに安全。
- **オフライン動作**:インターネット不要。
- **制御権**:モデル、設定、動作を自由に選択可能。レート制限や使用ポリシーなし。
- **学習効果**:ローカル実行により全体の仕組みを理解でき、開発スキル向上に役立つ。
環境設定
ステップ1:Ollamaのインストール
ollama.comからOSに合ったインストーラをダウンロードし、ターミナルでモデルをプル:
ollama pull phi3ollama run phi3でテスト、/byeで終了。
ステップ2:Pythonライブラリのインストール
仮想環境を作成し、必要なパッケージをインストール:
python -m venv agent-env
source agent-env/bin/activate # Linux/Mac
# または agent-env\Scripts\activate # Windows
pip install langchain langchain-ollama langgraphPython 3.9以上が必要。
初めてのローカルAIエージェントの構築
以下のコードで、質問応答と計算機ツールを使用するシンプルなエージェントを作成:
from langchain_ollama import OllamaLLM
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import tool
from langchain import hub
llm = OllamaLLM(model="phi3")
@tool
def calculator(expression: str) -> str:
"""Evaluates a basic math expression."""
try:
result = eval(expression)
return str(result)
except Exception as e:
return f"Error: {str(e)}"
tools = [calculator]
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm=llm, tools=tools, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
response = agent_executor.invoke({
"input": "What is 245 multiplied by 18, and then divided by 5?"
})
print(response["output"])このコードは、ローカルのPhi-3モデルに接続し、計算機ツールを定義し、ReActパターン(推論+行動)を使用して数学問題を実行します。
メモリとツールの追加
本格的なエージェントには会話履歴の記憶が必要です。以下は、会話メモリと知識ベース検索ツールを追加した例:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
prompt = hub.pull("hwchase17/react-chat")
agent = create_react_agent(llm=llm, tools=tools, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, memory=memory, verbose=True)
print(agent_executor.invoke({"input": "What is an AI agent?"})["output"])
print(agent_executor.invoke({"input": "Now tell me what Ollama is."})["output"])
print(agent_executor.invoke({"input": "Calculate 50 multiplied by 12."})["output"])ConversationBufferMemoryにより、エージェントは同一セッション内で以前のメッセージを記憶します。
制限事項
ローカルSLMの実行には注意すべき点があります:
- **精度が低い**:SLMはGPT-4より幻覚を起こしやすい。
- **速度はハードウェア依存**:GPUがない場合、応答に5~30秒かかることも。
- **コンテキスト長の制限**:長い会話を扱えない。
- **複雑な推論が困難**:多段階ロジックや高度なコーディングタスクでは効果が薄い。
プロトタイピング、学習、プライバシー重視のプロジェクト、オフライン用途、コスト重視のアプリケーションに適しています。本番環境で高精度や複雑タスク、多数ユーザー対応が必要な場合は、クラウドモデルを検討してください。
結論
ローカル小型言語モデルを使ったAIエージェント構築は、もはやAI研究者だけの専門技術ではありません。OllamaとLangChain/LangGraphを使えば、Python環境を持つあらゆる開発者が1時間以内にローカルエージェントを立ち上げられます。この記事では、AIエージェントとSLMの概念、ローカル実行の利点、環境設定、エージェント構築、メモリとツールの追加などをカバーしました。最良の学習方法は、実際に手を動かしてみることです。