如何在 C# 使用 Ollama 執行本地端大型語言模型(Local LLM)
大型語言模型(Large Language Models,LLMs)已成為現代軟體開發不可或缺的一部分。雖然 OpenAI、Azure OpenAI 等雲端 AI 服務相當受歡迎,但越來越多開發者與企業開始選擇在本地端執行 LLM,以兼顧資料隱私、降低成本及支援離線環境。
本文將介紹如何使用 Ollama 在本機執行大型語言模型,並透過 Microsoft.Extensions.AI 與 OllamaSharp,將 Local LLM 整合至C# (.NET) 應用程式中。
為什麼要使用 Local LLM?
在本地端執行大型語言模型具有許多優點:
- 保護資料隱私:所有資料皆留在本機,不需傳送至雲端。
- 降低 API 成本:不需要支付每次呼叫AI API的費用。
- 支援離線環境:沒有網路也能使用AI。
- 降低回應延遲:省去網路傳輸時間,回應速度更快。
- 方便測試不同模型:可以自由切換多種開源模型進行比較。
目前 Ollama 支援許多熱門的開源模型,例如:
- Gemma
- Llama
- Qwen
- Mistral
- Phi
什麼是 Ollama?
Ollama 是一套能夠在本機執行大型語言模型的工具,它可以下載並管理各種開源 LLM,並提供一個 REST API,讓應用程式可以像呼叫雲端 AI 一樣與本地模型互動。
整體架構如下:
C# Application -> Microsoft.Extensions.AI -> OllamaSharp -> Ollama REST API -> Local LLM (Gemma / Llama / Qwen)
因此,你的 C# 程式並不是直接操作模型,而是透過 Ollama 提供的 REST API 與模型溝通。
前置準備
首先,請先安裝 Ollama。
官方網站:

安裝完成後,下載一個模型,例如:
ollama pull gemma4
下載完成後,可以利用以下指令確認模型是否已安裝:
ollama list

預設情況下,Ollama 會在本機開啟 REST API:
http://localhost:11434
之後,C# 程式便可透過此網址呼叫本地模型。
建立 .NET Console 專案
首先建立一個新的 Console 專案:
接著安裝所需的 NuGet 套件:
dotnet add package Microsoft.Extensions.AI
或是在專案點取Nuget 安裝


Microsoft.Extensions.AI 是什麼?
Microsoft.Extensions.AI 是 Microsoft 推出的 AI 抽象層函式庫,提供統一的 API 與介面,讓開發者可以使用相同的程式碼呼叫不同的大型語言模型,例如 Ollama、OpenAI、Azure OpenAI 等。
dotnet add package OllamaSharp
或是在專案點取Nuget 安裝


安裝完成後,即可開始撰寫程式。
呼叫 Local LLM
以下程式示範如何透過 Ollama 呼叫本地端的 Gemma 模型。

執行結果:

可以看到,我們並沒有直接呼叫 REST API,而是透過 IChatClient 這個抽象介面與模型互動。
使用 ChatMessage
如果只是簡單測試,直接傳送字串即可。
不過,在實際開發 AI 應用時,通常會使用 ChatMessage,因為大型語言模型接收的是一連串的對話訊息,而不是單純的一段文字。
ChatRole 是什麼?

每個 ChatMessage 都需要指定角色(Role),最常見的有四種:
| Role | 說明 |
| User | 使用者輸入的內容 |
| Assistant | AI 回覆的內容 |
| System | 設定 AI 的行為與規則 |
| Tool | 支援Function Calling(工具呼叫)而設計 |
例如:
new ChatMessage(
ChatRole.System,
“You are a professional software engineer.”);
透過 System Prompt,可以控制模型的回答風格、語氣,以及專業領域。
為什麼要使用 Microsoft.Extensions.AI?
許多人可能會問:
為什麼不直接使用 HttpClient 呼叫 Ollama API?
最大的原因就是 抽象化(Abstraction)。
你的程式只需要依賴 IChatClient,而不用關心底層是哪一種 AI 服務。
今天可以使用:
- Ollama
未來如果要改成:
- Azure OpenAI
- OpenAI
- 其他支援 Microsoft.Extensions.AI 的 AI Provider
通常只需要更換底層實作,而不需要大幅修改應用程式。
這也是現代 .NET 所提倡的設計理念:依賴抽象(Interface),而非依賴具體實作(Implementation)。
隨著生成式 AI 的快速發展,本地端大型語言模型正逐漸成為企業與開發者的重要選擇。
透過 Ollama、OllamaSharp 以及 Microsoft.Extensions.AI,我們只需幾行程式碼,就能在 C# 應用程式中整合 Local LLM。
無論是開發企業內部聊天機器人、AI 助理,或是未來延伸到 RAG(Retrieval-Augmented Generation)、AI Agent 等應用,本地端 LLM 都是一個兼具成本效益與彈性的解決方案。