OllamaのThinkingをWindowsで使う方法|think・thinking・PowerShell
- 公開日
- 2026-08-10
- 更新日
- 2026-08-10
- 情報確認日
- 2026-08-10
- 編集・運営
- Local AI Compass
OllamaのThinkingは、対応モデルが生成するthinking出力と最終回答を分けて扱う機能です。Windowsでは、モデル対応を確認し、CLIの--think・--hidethinking、native APIのthink、message.thinking・thinking・content・responseを分けて観察します。Thinkingを有効にしただけで正確性や安全性が保証されるわけではないため、表示・保存・共有の方針も同時に決めます。
導入前に確認すること
- Windowsのバージョン、メモリ容量、GPU/VRAM、空き容量を確認する
- 最初は軽量モデル、短い質問、少ない同時作業から始める
- 公式サイトの対応OS、利用規約、モデルのライセンスを確認する
先に結論:Thinkingはモデル能力・指定・表示先を分けて確認する
Ollama公式のThinking docsでは、thinking-capable modelが最終回答とは別のthinking fieldを返す仕組みが案内されています。これはCLI、native API、SDKで見え方が異なるため、「thinkを付けたら通常本文へ混ざる」と決めつけず、どのfieldを表示・保存するかを先に決めます。
| やりたいこと | 最初に使う指定 | 確認する出力 |
|---|---|---|
| CLIでThinkingを試す | ollama run MODEL --think "質問" | 画面上のthinkingと最終回答 |
| Chat APIで分けて読む | think: true、stream: false | message.thinkingとmessage.content |
| Generate APIで分けて読む | think: true、stream: false | thinkingとresponse |
| Thinkingを画面へ出さない | CLIの--hidethinking、またはAPI側で表示しない | 最終回答とログの扱い |
| GPT-OSSのlevelを指定する | think: low / medium / high | モデルが返すthinkingとcontent |
最初は短い非機密入力とstream=falseで、model、HTTP status、thinking、最終回答、doneを保存します。CLIの表示、APIのraw JSON、SDKのobjectは別の層なので、出力を同じ形だと仮定してparserを共有しません。
- OllamaのAPI streaming - thinking chunkとNDJSONのparserを詳しく見る
- Ollamaのモデルidentity - 使ったmodel ID・tag・digestを記録する
- Ollamaのlocal/cloud比較 - 推論場所と送信経路を分ける
対応モデルとthinkの値を先に確認する
Ollamaの公式Thinking docsは、確認時点の例としてQwen 3、GPT-OSS、DeepSeek-v3.1、DeepSeek R1をthinking-capable modelとして掲載しています。ただし、モデルのtag、Ollamaのversion、提供状況で対応範囲は変わるため、記事のmodel名をそのまま入力へ固定しません。
| 対象 | 指定の考え方 | 注意点 |
|---|---|---|
| 一般的なthinking model | think: true / false、またはCLIの--think | モデルがThinkingに対応するかを先に確認する |
| GPT-OSS | think: low / medium / high | true / falseではなくlevelを使う。完全な無効化はできないと公式docsにある |
| CLIの既定動作 | 公式docsの現行説明では対応modelで有効 | 再現性のため記事・検証では明示指定する |
| 非対応・値の不一致 | modelの公式情報と実レスポンスを確認 | 空field、エラー、無視などを成功と決めつけない |
- PowerShellでollama --versionとollama lsを実行し、Ollama本体と保存済みmodelを記録する。
- 使うmodelの公式ページとOllama Thinking docsで、thinking対応とthinkの指定形式を確認する。
- 同じmodelをCLIとnative APIで短い非機密入力へ使い、thinkingと最終回答のfieldを比較する。
- 対応していないmodelや不明なtagでは、thinkingが返らないことをエラーや品質問題と混同しない。
「thinking modelだから必ず同じfieldが返る」「think=trueならGPT-OSSでも同じ強度になる」とは限りません。モデル名、tag、Ollamaのversion、client、streamの有無を一緒に記録すると、後から再現条件を追いやすくなります。
- Ollama Thinking公式docs - 現行の対応modelとthink値を見る
- Ollamaのモデル管理 - ls・show・ps・tagの確認方法へ進む
- Ollamaのモデルidentity API - APIからmodel情報を確認する
PowerShellのCLIで--think・--think=false・--hidethinkingを試す
CLIの最小確認は、保存済みmodel名をollama lsから転記し、質問を短くして実行します。Thinkingを表示すること、Thinkingを使いながら画面へ出さないこと、Thinkingを無効にすることは別の操作なので、コマンドを分けて結果を保存します。
ollama ls
# Thinkingを明示的に有効化
ollama run qwen3 --think "17 × 23を計算し、答えを短く説明してください"
# Thinkingを無効化する確認
ollama run qwen3 --think=false "同じ質問へ短く答えてください"
# Thinkingを使いながら表示を抑える確認
ollama run deepseek-r1 --hidethinking "公開可能な短い質問へ答えてください"
# GPT-OSSはbooleanではなくlevelを指定する
ollama run gpt-oss --think=low "見出し案を1つ作ってください"- qwen3、deepseek-r1、gpt-ossは例です。実際に使うmodel名とtagをollama ls、公式model情報で置き換える。
- --thinkの表示内容をそのまま正しさの証拠にしない。最終回答を別に検証する。
- --hidethinkingは画面上の表示を抑えるための確認であり、入力やログのprivacy設計を自動で変更しない。
- PowerShellの履歴や共有画面に、個人情報・API key・社内文書を含む質問を残さない。
公式CLI docsの現行Thinking例には、--think、--think=false、--hidethinking、/set think、/set nothinkがあります。対話セッションと1回のollama runでは操作が異なるため、使うモードを記録して再現します。
- Ollama Thinking公式docs - CLIの現行オプションとSDK例を見る
- OllamaをWindowsへ導入する - localhostと導入直後の確認へ戻る
- ローカルLLMの安全性 - 入力・ログ・保存の境界を確認する
native /api/chatでmessage.thinkingとmessage.contentを分ける
会話形式のnative APIでは、POST /api/chatへmessagesとthinkを送り、非streamの応答を確認します。公式Chat docsでは、assistant messageにcontent、thinking、tool_callsなどが含まれます。WindowsではPowerShell objectへ変換した後も、thinkingをcontentへ連結せず別の値として扱います。
$payload = @{
model = "MODEL_FROM_OLLAMA_LS"
messages = @(
@{ role = "user"; content = "WindowsでThinkingと最終回答を分けて確認する方法は?" }
)
think = $true
stream = $false
} | ConvertTo-Json -Depth 8
$response = Invoke-RestMethod -Uri "http://localhost:11434/api/chat" -Method Post -ContentType "application/json" -Body $payload
$response | Select-Object model, done, done_reason
$response.message | Select-Object thinking, content, tool_calls
| レスポンス | 役割 | 保存・表示の考え方 |
|---|---|---|
| message.thinking | Thinkingの出力 | 表示・保存・共有の方針を別に決める |
| message.content | 利用者へ返す最終回答 | thinkingと混ぜず、通常回答として検証する |
| message.tool_calls | モデルが要求したtool call | アプリ側でschema・権限・引数を検証してから実行する |
| done / done_reason | 生成終了と終了理由 | 接続切断や途中errorを正常終了とみなさない |
localhost:11434へのnative APIは、Ollamaが起動していればローカルの接続先として使えます。modelが保存済みであること、Thinkingに対応していること、レスポンスにthinkingが返ることは別の確認です。最初の疎通成功だけでモデルの正確性や安全性を保証しません。
- Ollama Chat API公式docs - think・message.thinking・content・doneを見る
- Ollamaのtool calling - tool_callsを実行する境界を確認する
- OllamaのAPI認証 - local APIとcloud APIの認証を分ける
native /api/generateではthinkingとresponseを分ける
単発promptを送る/api/generateでは、Chat APIのmessage objectではなく、最終回答がresponse、Thinkingがthinkingとして返ります。endpointを変えると本文の場所も変わるため、Chat用のmessage.content parserをそのままGenerateへ流用しません。
$payload = @{
model = "MODEL_FROM_OLLAMA_LS"
prompt = "ローカルAIのThinkingを使うときの注意を2点だけ説明してください"
think = $true
stream = $false
} | ConvertTo-Json -Depth 8
$response = Invoke-RestMethod -Uri "http://localhost:11434/api/generate" -Method Post -ContentType "application/json" -Body $payload
$response | Select-Object model, thinking, response, done, done_reason
| endpoint | 入力の中心 | Thinking | 最終回答 |
|---|---|---|---|
| /api/chat | messages | message.thinking | message.content |
| /api/generate | prompt | thinking | response |
| /v1/chat/completions | OpenAI互換messages | reasoning/thinking controlの対応を公式表で確認 | choicesなどclient・API形式に従う |
| /v1/responses | OpenAI互換input | thinking modelのreasoning summaries | Responsesのoutputを使う |
PowerShellで最初に確認するのは、HTTP status、model、thinking、response、doneです。空文字や未返却のfieldを、モデルがThinkingに非対応なのか、指定が違うのか、clientの表示処理が落としているのかを分けて調べます。
- Ollama Generate API公式docs - think・thinking・responseの仕様を見る
- OllamaのAPI streaming - stream=trueのNDJSONとdoneを確認する
- OllamaのStructured Outputs - 最終回答のJSON形式を別に検証する
stream=trueではthinkingとcontentの到着順を別に扱う
Thinking対応モデルのstreamingでは、thinking chunkが先に届き、その後に最終回答のcontent chunkが届く場合があります。公式Streaming docsは、最初のthinkingを検出して表示領域を切り替え、contentが届いたら最終回答へ移る例を示しています。
$thinking = ""
$content = ""
# $chunk はNDJSONの1行をJSON化したobjectの例
if ($chunk.message.thinking) {
$thinking += [string]$chunk.message.thinking
}
if ($chunk.message.content) {
$content += [string]$chunk.message.content
}
if ($chunk.done -eq $true) {
# thinkingとcontentを分けて保存し、done_reasonを確認する
}- Thinkingと最終回答を同じ文字列へ連結しない。
- 途中chunkのtool_callsや不完全な引数だけで関数を実行しない。
- 表示しない方針でも、clientやproxyのログへ残る可能性を別に確認する。
- stream=falseで完成形を確認してからstream=trueへ進み、実際のchunkを保存してparserを決める。
streamingのwire形式、SDKのchunk型、モデルの出力順は実装条件で変わります。既存のstreaming記事ではNDJSON、done、途中error、usageを扱っているため、Thinking固有の表示切り替えと組み合わせるときも、2つの仕様を一度に固定しません。
- Ollama Streaming capability公式docs - thinking chunkとcontent chunkの公式例を見る
- Ollama streaming記事 - NDJSON・途中error・usageの切り分けへ進む
- Ollama API Errors - stream中のerrorを確認する
Thinking・tool calling・OpenAI互換APIは別の機能として扱う
thinkはThinking出力の制御であり、アプリが外部関数を実行する権限を与える指定ではありません。tool callingではtools、tool_calls、tool結果の返却、アプリ側のallowlistを別に設計します。Responses APIのreasoning summariesやChat Completionsのreasoning/thinking controlも、native /api/chatのmessage.thinkingと同じfieldとは限りません。
| 機能 | 主な確認対象 | この機能だけでは保証しないこと |
|---|---|---|
| Thinking | think、thinking、message.thinking | 正確性、tool実行、外部通信の安全性 |
| Tool calling | tools、tool_calls、tool role、アプリ側の実行 | モデルの要求を無条件に実行すること |
| Structured Outputs | format、JSON schema、最終content | Thinkingの表示・保存方針 |
| OpenAI互換 | /v1のreasoning/thinking control、Responses summaries | native APIと同じparser・field |
Thinkingを有効にしたagentが安全になるわけではありません。toolの名前、引数、対象ファイル、ネットワーク、破壊的操作をアプリ側で検証し、thinkingの文章を許可リストや監査結果の代わりに使わない構成にします。
- Ollama tool calling公式docs - tool callとtool結果の往復を見る
- Ollama tool calling記事 - Windowsでschema・権限・実行を切り分ける
- Ollama Responses API記事 - reasoning summariesと非stateful制約を見る
Thinkingが返らない・長すぎるときのWindows切り分け
Thinkingの不具合に見える症状でも、model、thinkの値、endpoint、stream、表示処理、ログ保存を分けて確認します。特にGPT-OSSへtrue/falseを渡すケース、非対応model、ChatとGenerateのfield混同、--hidethinkingを表示停止と処理停止で混同するケースに注意します。
| 症状 | 原因候補 | 最初の確認 |
|---|---|---|
| thinkingが空 | 非対応model、指定値、clientがfieldを表示していない | 公式model情報、think値、raw JSON、model ID |
| GPT-OSSのtrue/falseが効かない | level指定が必要 | think=low・medium・highへ変更する |
| 最終回答へThinkingが混ざる | parserがfieldを連結している | message.thinking / contentを別変数にする |
| stream中に表示が止まる | chunk蓄積、done、途中error、buffering | stream=falseへ戻り、最後のchunkを保存する |
| Thinkingを表示したくない | CLIやUIの表示設定、ログ方針が未分離 | --hidethinking、表示層、保存先を別に確認する |
| toolが勝手に動いたように見える | Thinkingとtool executionを同一視 | tool_calls、アプリの実行ログ、allowlistを確認する |
- ollama --version、model名、endpoint、stream、think指定を記録する。
- 同じmodelと短い公開可能な入力で、CLIとAPIのどちらか一方をstream=falseで再実行する。
- raw responseのthinking・contentまたはthinking・responseを確認し、表示側の問題とAPIの問題を分ける。
- ツール・Structured Outputs・長文・外部データを一度外し、1項目ずつ戻す。
- thinkingの文章へAPI key、個人情報、社内文書、秘密のpromptを入れない。
- traceを表示しない設定でも、入力・出力・server log・client logの保存先を確認する。
- thinkingを人間の監査・テスト・正確性の証明として扱わない。
- cloud modelや外部APIを使う場合は、localhostのlocal APIと送信先・認証・料金を分けて確認する。
- Ollama API Errors - HTTP statusとJSON errorを確認する
- Ollama local/cloud記事 - 外部送信とlocal-onlyの境界を見る
- ローカルAIトラブルシューティング - Windows・server・modelの切り分けへ進む
よくある質問
Ollamaのthinkとは何ですか?
Thinking対応モデルへThinking出力を有効化・調整する指定です。native /api/chatではmessage.thinkingとmessage.content、/api/generateではthinkingとresponseを分けて扱います。モデルによって対応する値が異なるため、公式docsと実際のレスポンスを確認します。
OllamaのThinkingに対応するモデルは?
OllamaのThinking公式docsは、確認時点の例としてQwen 3、GPT-OSS、DeepSeek-v3.1、DeepSeek R1を掲載しています。対応modelやtagは更新されるため、利用時点の公式model情報と手元のmodel名を優先します。
GPT-OSSへthink=trueを送ればよいですか?
GPT-OSSでは、Ollama公式Thinking docsの現行説明に合わせてlow、medium、highのlevelを指定します。trueやfalseは無視されると説明されているため、think=lowなどで明示し、実際の応答を確認します。
Thinkingを表示せずに使えますか?
CLIでは--hidethinkingの例があります。APIではthinking fieldを画面へ表示しない実装にできますが、表示停止と処理停止、ログ保存、外部送信の扱いは別です。入力・出力・client logの保存先も確認してください。
Chat APIとGenerate APIでThinkingのfieldは同じですか?
同じではありません。/api/chatはmessage.thinkingとmessage.content、/api/generateはthinkingとresponseです。endpointを切り替える場合は、本文の場所と終了条件を別のparserとして確認します。
Thinkingを有効にすると回答は正確になりますか?
Thinkingを有効にしただけで正確性、再現性、安全性が保証されるとは言えません。モデル、入力、context、設定、検証方法で結果が変わるため、最終回答を別のテスト・一次情報・人間の確認で評価します。
OllamaのThinkingはtool callingと同じですか?
別の機能です。Thinkingはthinking出力の扱い、tool callingはtoolsやtool_callsを受けてアプリ側が関数を実行し結果を返す流れです。toolの権限・引数・外部通信はアプリ側で検証し、Thinkingの文章を実行許可の根拠にしません。
次に読むおすすめルート
開発・API連携したい人
LM StudioとOllamaの違いを確認し、API、長文処理、RAGまで段階的に進みます。
- ローカルAIをAPIで使う方法
- WindowsでローカルAIコーディングを始める
- VS CodeでローカルAIを使う
- LM Studioのlms CLIを使う
- LM StudioのTool Useを使う
- LM StudioのStructured Outputを使う
- LM StudioのResponses APIを使う
- LM StudioのMCPをAPIで使う
- ローカルAIでJSON出力する方法
- LM StudioとOllamaの違い
- コンテキスト長とは
- RAG・埋め込み・ベクトルDBの仕組み
- OllamaのEmbedding APIを使う
- OllamaのResponses APIを使う
- OllamaのAPI認証を確認する
- OllamaをWindowsのLANから使う前の確認
- OllamaのモデルID・能力を確認する
- OllamaのModelfileを使う
- Ollama native API streamingを使う
- Ollama Web Search APIを使う
- LM StudioのEmbedding APIを使う
- RAG評価と引用確認の基礎
- faithfulness確認
- ローカルRAGのプライバシー
- MCPとは
- ローカルLLMの安全性とプライバシー
- Gemma 4 12Bの更新メモ
- Hermes Desktopとは
- Hermes DesktopとLM Studio接続
- Hermes DesktopとOllama接続
- Hermes Desktop接続トラブル
- Hermes DesktopでOpenRouterを使う
- Hermes DesktopでDeepSeek APIを使う
- Hermes DesktopでProviderを使い分ける
- Hermes DesktopとLM Studio接続の確認ポイント
- Hermes AgentとDesktopの違い
- Ollamaとは
- Windows ARMでローカルAIを使う前の確認
- WindowsでOllamaをインストールする
- Ollamaのローカルモデルとcloudモデルの違い
- Ollamaのモデル保存場所と移動
- Ollamaのモデル一覧・削除・容量整理
- OllamaのOpenAI互換APIを使う
- Ollamaのtool callingを使う
- OllamaのStructured Outputsを使う
- OllamaのEmbedding APIを使う
- OllamaのResponses APIを使う
- OllamaのAPI認証を確認する
- OllamaのモデルID・能力を確認する
- OllamaのModelfileを使う
- Ollama native API streamingを使う
- LM StudioのEmbedding APIを使う
- Ollamaの解説
- 診断基準
- 比較表
あなたはどのタイプ?
- 初めてローカルAIを触る人 - まず全体像をつかみ、LM StudioとOllamaの違い、モデルサイズの考え方を順番に確認します。
- LM Studio・Ollamaの症状別トラブルを解決したい人 - 起動、モデルロード、Prompt Processing、generation、API接続、GPU確認をツール別に分けて読みます。
- GPUなし・低スペックPCの人 - 軽量モデル、メモリ別の目安、重いときの確認ポイントを先に見ます。
- PDFや資料を読ませたい人 - 先に基本を押さえ、モデル単体の確認後にAnythingLLMへ進みます。
- ローカルAIエージェントを試したい人 - Bionic、Ollama、AnythingLLM、Hermesを役割別に分け、local/cloud、tool、保存、PC負荷を順番に確認します。
- 開発・API連携したい人 - LM StudioとOllamaの違いを確認し、API、長文処理、RAGまで段階的に進みます。
関連チェック先
- Ollama Thinking - thinking-capable model、think、thinking field、CLI、Python・JavaScript、streamの公式例を確認できます。
- Ollama API: Generate a chat message - /api/chatのthink、message.thinking、message.content、doneの仕様を確認できます。
- Ollama API: Generate a response - /api/generateのthink、thinking、response、streamの仕様を確認できます。
- Ollama Streaming - thinkingとcontentがstream chunkへ分かれて届く場合の公式例を確認できます。
- Ollama Tool calling - thinkingとtool_callsを分け、アプリ側でtool結果を返す流れを確認できます。
- Ollama OpenAI compatibility - /v1/chat/completionsのreasoning/thinking controlとResponsesのreasoning summariesを確認できます。
- Ollama Windows - Windows版Ollama、localhost API、PowerShellの前提を確認できます。