Skip to content

donma/TinyNotebook

Repository files navigation

TinyNotebook

TinyNotebook 是一個使用 C# / .NET 10 開發的本機 LLM 對話專案,提供兩種介面:

  • Web 版:ASP.NET Core + Razor Pages + Minimal API
  • Console 版:適合在終端機直接對話與切換模型

專案目標是讓你在本機直接使用 llama.cpp + GGUF 模型進行多輪對話、切換模型、管理對話串,並支援長文輸出、程式碼、HTML 等一般文字內容。

目前專案預設模型為:

gemma-4-E2B-it-Q4_K_M.gguf

最近 Gemma 4 風風火火地出現了,手癢一定要來自己試試看。

介紹

  • 使用 C# / .NET 10 開發
  • Web 採用 ASP.NET Core + Razor Pages + Minimal API
  • llama.cpp 為本機推論 backend,搭配 GGUF 模型
  • 預設示範模型為 gemma-4-E2B-it-Q4_K_M.gguf
  • 同時提供 Web 與 Console 兩種操作介面
  • 支援多對話串管理與模型切換
  • 支援串流回應、長文輸入與長文輸出
  • 程式碼、HTML、一般長文都能作為普通對話內容處理

預覽

Web 端預覽

TinyNotebook Web 預覽

Console 預覽

TinyNotebook Console 預覽

功能特色

  • 使用 C# / .NET 10 開發
  • 本機執行,不依賴雲端 API
  • 支援多個 GGUF 模型切換
  • Web 版即時串流回應
  • 多對話串管理
  • Console 版互動式指令
  • 支援長文輸入與長文輸出
  • 對 HTML 回應提供預覽按鈕

專案結構

  • TinyNotebook/ Web 專案,包含 Razor Pages UI 與 Minimal API 串流端點
  • TinyNotebook.Core/ 核心服務、模型管理、prompt 建構、路徑解析、conversation store
  • TinyNotebook.ConsoleHost/ 終端機互動版本

執行時目錄結構

TinyNotebook/
├─ models/
│  └─ gguf/
│     └─ <your-model>.gguf
├─ .db/
│  └─ native-backends/
│     └─ llama-b8683-win-cpu-x64/
│        ├─ llama-cli.exe
│        ├─ llama.dll
│        └─ ggml-*.dll
├─ appsettings.json
├─ appsettings.web.json
└─ setup.ps1

環境需求

  • Windows
  • .NET 10 SDK
  • 一個可用的 GGUF 模型
  • 一份可用的 llama.cpp Windows native backend

快速開始

1. Clone 專案

git clone <your-repo-url>
cd TinyNotebook

2. 執行初始化腳本

powershell -ExecutionPolicy Bypass -File .\setup.ps1

這個腳本會:

  • 建立 models\gguf
  • 建立 .db\native-backends\llama-b8683-win-cpu-x64
  • 若沒有 appsettings.json,就從 appsettings.example.json 建立一份
  • 檢查模型與 llama-cli.exe 是否存在

3. 放入模型

將 GGUF 模型放到:

models\gguf

例如:

models\gguf\gemma-4-E2B-it-Q4_K_M.gguf
models\gguf\Qwen3.5-4B-Q4_K_M.gguf

4. 放入 llama.cpp backend

將 Windows CPU 版 backend 放到:

.db\native-backends\llama-b8683-win-cpu-x64

至少需要:

  • llama-cli.exe
  • llama.dll
  • ggml.dll
  • 對應 CPU backend 的 ggml-*.dll

5. 啟動 Web 版

dotnet run --project .\TinyNotebook.csproj

或使用 Visual Studio 開啟 TinyNotebook.sln 後執行 Web 專案。

6. 啟動 Console 版

dotnet run --project .\TinyNotebook.ConsoleHost\TinyNotebook.ConsoleHost.csproj

設定檔

appsettings.web.json

Web 版主要設定:

  • Llm:ModelPath
  • Llm:ContextSize
  • Llm:Temperature
  • Llm:TopK
  • Llm:TopP
  • Llm:MaxTokens
  • Llm:SystemPrompt

目前預設會呼叫:

"ModelPath": "models\\gguf\\gemma-4-E2B-it-Q4_K_M.gguf"

如果要改成其他模型,例如 Qwen3.5-4B-Q4_K_M.gguf,只要修改 ModelPath 即可。

appsettings.example.json

提供給 clone 專案後建立本機設定使用。

模型說明

目前專案已針對不同模型做基本模板分流:

  • Qwen / ChatML 系列
  • Gemma 4 系列

README 與範例設定目前預設以 gemma-4-E2B-it-Q4_K_M.gguf 為主要示範模型。

Web 版功能

  • 對話串列表
  • 模型切換
  • Session 狀態顯示
  • 串流回應
  • 生成進度小字狀態
  • HTML 預覽按鈕

Console 指令

  • /help
  • /status
  • /reset
  • /model list
  • /model use <name-or-index>
  • /threads
  • /exit

不會放進 Git 的內容

以下內容預期不進 GitHub:

  • bin/
  • obj/
  • .db/
  • models/
  • *.gguf
  • 各種測試輸出與 log

也就是說,clone 專案後仍需自行準備:

  • 模型檔
  • llama.cpp native backend

Troubleshooting

找不到模型

確認模型存在於:

models\gguf

並且 appsettings.json / appsettings.web.jsonModelPath 正確。

找不到 llama-cli.exe

確認 backend 存在於:

.db\native-backends\llama-b8683-win-cpu-x64

Web 可以 build,但執行時沒有回應

請檢查:

  • 模型是否存在
  • llama-cli.exe 是否存在
  • 模型是否太大導致 CPU 生成很慢
  • MaxTokens 是否太小導致輸出提早結束

生成到一半停止

常見原因:

  • MaxTokens 太小
  • 模型本身先收尾
  • 長文 HTML 任務對小模型太重

授權

本專案採用 MIT License

你可以自由使用、修改、散布與商業使用本專案,但必須保留原始授權聲明。

免責聲明

本軟體依現況("as is")提供,不附任何明示或默示保證,包括但不限於適售性、特定用途適用性、相容性、穩定性與安全性。

因安裝、執行、修改、設定錯誤、模型輸出內容、系統相容性問題、第三方 runtime、模型檔或誤用本專案所造成的任何損害,包括但不限於:

  • 電腦故障
  • 系統不穩或當機
  • 資料遺失或毀損
  • 硬體異常
  • 商業中斷
  • 其他任何直接或間接損失

作者概不負責。若你不同意此條件,請勿使用本專案。

若專案內含第三方前端套件,相關授權可參考 wwwroot/lib/**/LICENSE.txt

About

使用 gemma-4,試試看直接透過 llama.cpp 做出最小可執行方案

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors