2025-10-20

ローカル AI エージェントは電気羊の夢を見るのか(環境構築の補足)

前回のおさらい

この記事は ローカル AI エージェントは電気羊の夢を見るのか(環境構築) でカバーできなかった範囲の補足記事になる。前回の記事では、OllamaLM Studio をインストールし、LM Studio を使って立てた API サーバを利用して mastra のサンプルコードを実行した。

今回は LM Studio ではなく Ollama を使ってサンプルコードを実行する方法を説明する。

Ollama を使う場合

公式ドキュメントには Ollama を使う場合は ollama-ai-provider-v2 を使う手順が紹介されている。

しかし、ollama-ai-provider-v2 を使うと Agent が Tool を使用しないという不具合がある。以下の Issue でも報告されているように、ツール呼び出し後にテキストを生成しないような挙動をする。

解決策は Issue で触れられているように @ai-sdk/openai-compatible を代わりに使うことでこの問題は回避できる。

src/mastra/agents/weather-agent.ts

具体的には、前回の記事で lmstudio を定義して使っていたところを ollma という変数を定義し(変数名は任意)、 baseURLlocalhost のポート番号 11434 を指定する。これは Ollama でサーバを立ち上げたときのデフォルトポート番号だ。もしポート番号を変更しているのであれば、自身の環境にあった番号に変更する。

src/mastra/agents/weather-agent.tsdiff
1
diff --git a/src/mastra/agents/weather-agent.ts b/src/mastra/agents/weather-agent.ts
2
index eaedfcb..e22ecb9 100644
3
--- a/src/mastra/agents/weather-agent.ts
4
+++ b/src/mastra/agents/weather-agent.ts
5
@@ -10,6 +10,11 @@ const lmstudio = createOpenAICompatible({
6
apiKey: "lm-studio",
7
});
8
9
+const ollama = createOpenAICompatible({
10
+ name: "ollama",
11
+ baseURL: "http://localhost:11434/v1",
12
+});
13
+
14
export const weatherAgent = new Agent({
15
name: 'Weather Agent',
16
instructions: `
17
@@ -26,7 +31,8 @@ export const weatherAgent = new Agent({
18
19
Use the weatherTool to fetch current weather data.
20
`,
21
- model: lmstudio("openai/gpt-oss-20b"),
22
+ // model: lmstudio("openai/gpt-oss-20b"),
23
+ model: ollama("gpt-oss:20b"),
24
tools: { weatherTool },
25
memory: new Memory({
26
storage: new LibSQLStore({

そして、model の指定で lmstudio の代わりに ollama を使い、引数にはモデル名を指定する。今回は gpt-oss20b モデルを使いたいので gpt-oss:20b としている。モデル名は、ollama list コマンドで確認できる。

1
$ ollama list
2
NAME ID SIZE MODIFIED
3
qwen3:8b 500a1f067a9f 5.2 GB 6 days ago
4
llama4:scout bf31604e25c2 67 GB 6 days ago
5
llama4:latest bf31604e25c2 67 GB 6 days ago
6
gpt-oss:20b aa4295ac10c3 13 GB 12 days ago
7
embeddinggemma:latest 85462619ee72 621 MB 13 days ago
8
nomic-embed-text:latest 0a109f422b47 274 MB 4 weeks ago
9
qwen3:30b-a3b-instruct-2507-fp16 c699578934a3 61 GB 5 weeks ago
10
gpt-oss:120b f7f8e2f8f4e0 65 GB 6 weeks ago
11
Gemma3:27b a418f5838eaf 17 GB 5 months ago

動作確認

mastra を起動して適当なプロンプトを入力してみよう。

すると応答が返ってくるはずだ。また、右側の Model を確認すると ollama になっていることが確認できる。

まとめ

前回記事の補足として LM Studio ではなく Ollama を使って mastra のサンプルを動かすための書き方を紹介した。

前の記事では LM Studio を推奨したが、Ollama でもほとんどやることは代わらなかったので、 Ollama にアップロードされているモデルで十分な場合は Ollama でいいかもしれない。

現場で活用するためのAIエージェント実践入門

現場で活用するためのAIエージェント実践入門

プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで (Software Design plus)

プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで (Software Design plus)

Amazon アソシエイトについて

この記事には Amazon アソシエイトのリンクが含まれています。Amazonのアソシエイトとして、SuzumiyaAoba は適格販売により収入を得ています。