如何在 C# 使用 Ollama 執行本地端大型語言模型(Local LLM)

如何在 C# 使用 Ollama 執行本地端大型語言模型(Local LLM

大型語言模型(Large Language Models,LLMs)已成為現代軟體開發不可或缺的一部分。雖然 OpenAI、Azure OpenAI 等雲端 AI 服務相當受歡迎,但越來越多開發者與企業開始選擇在本地端執行 LLM,以兼顧資料隱私、降低成本及支援離線環境。

本文將介紹如何使用 Ollama 在本機執行大型語言模型,並透過 Microsoft.Extensions.AIOllamaSharp,將 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。

官方網站:

https://ollama.com

安裝完成後,下載一個模型,例如:

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使用者輸入的內容
AssistantAI 回覆的內容
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 的快速發展,本地端大型語言模型正逐漸成為企業與開發者的重要選擇。

透過 OllamaOllamaSharp 以及 Microsoft.Extensions.AI,我們只需幾行程式碼,就能在 C# 應用程式中整合 Local LLM。

無論是開發企業內部聊天機器人、AI 助理,或是未來延伸到 RAG(Retrieval-Augmented Generation)、AI Agent 等應用,本地端 LLM 都是一個兼具成本效益與彈性的解決方案。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *