詳解如何在.NET代碼中使用本地部署的Deepseek語言模型
本篇咱們來聊一聊怎么在 .NET 代碼中使用本地部署的 Deepseek 語言模型。大伙伴們不必要緊張,很簡單的,你不需要學習新知識,只要你知道 .NET 如何訪問 HTTP 和 JSON 的序列化相關(guān)就夠了。
先說說如何弄本地模型,有伙伴會問:直接用在線的不好?其實,本地部署更實用,也更符合安全要求。其實,AI 真正用于生產(chǎn)環(huán)境反而不需要那么“強大”,能有行業(yè)化定制模型會更好,這樣在專業(yè)領(lǐng)域的預(yù)測算法更準確;只有用于娛樂產(chǎn)業(yè)才需要“面面俱到”。
網(wǎng)上關(guān)于本地化部署的教程太多了,所以老周只是簡單描述一下。而且,老周也相信大伙伴們的能力,連代碼都會寫了,怎么會搞不定這些活兒呢?
1、安裝 Ollama,官網(wǎng):Ollama。各位注意,這年頭下載軟件一定要看清楚是不是官網(wǎng),現(xiàn)在國內(nèi)很多冒充官網(wǎng)騙錢的,所以,看好域名很重要(比如,OBS、VS Code 等也有很多假域名)。Ollama 就是專門用于調(diào)用 LLM 的工具,它會啟動本地服務(wù)器(Web),通過 Web API 方式交互。該工具是跨平臺的,使用 C 和 Go 語言開發(fā),性能上不用擔心,它不是用某腳本語言開發(fā)的。這個下載后直接安裝就完事了,無難度。
2、先不急著下載模型,看看你的 C 盤空間夠不夠下載模型,不夠的話,請配置一下 OLLAMA_MODELS 環(huán)境變量,指向你要存放模型的目錄。這個都會配置了,不用老周說了吧,基于用戶和基于機器的環(huán)境變量都可以。

Ollama 默認啟動 Web 服務(wù)器的本地地址是 http://127.0.0.1:11434,如果端口有沖突,可以用 OLLAMA_HOST 環(huán)境變量自己配置一下。沒其他要求,就按默認就行了,不用配置。配置時要寫上完整的 HTTP 地址,如 http://192.168.1.15:8819。這個你看看源代碼就知道為什么要寫完整 URL 了。
func Host() *url.URL {
defaultPort := "11434"
s := strings.TrimSpace(Var("OLLAMA_HOST"))
scheme, hostport, ok := strings.Cut(s, "://")
switch {
case !ok:
scheme, hostport = "http", s
case scheme == "http":
defaultPort = "80"
case scheme == "https":
defaultPort = "443"
}
hostport, path, _ := strings.Cut(hostport, "/")
host, port, err := net.SplitHostPort(hostport)
if err != nil {
host, port = "127.0.0.1", defaultPort
if ip := net.ParseIP(strings.Trim(hostport, "[]")); ip != nil {
host = ip.String()
} else if hostport != "" {
host = hostport
}
}
if n, err := strconv.ParseInt(port, 10, 32); err != nil || n > 65535 || n < 0 {
slog.Warn("invalid port, using default", "port", port, "default", defaultPort)
port = defaultPort
}
return &url.URL{
Scheme: scheme,
Host: net.JoinHostPort(host, port),
Path: path,
}
}3、第一次啟動大語言模型需要下載,在 Ollama 官網(wǎng)進入“Models”頁面,你基本不用找了,現(xiàn)在最熱門的就是它了。

點擊模型鏈接,進入詳細頁。下拉列表能看到模型大小,視你的 CPU 或 GPU 配置來選吧。

老周的機器 CPU 是 i5-11400F,跑 8B 問題不大(顯卡是 4G 顯存),回答問題一般要二三十秒,能接受。如果你不確定,可以從 7B 開始測試。頁面向下滾動會告訴你命令行怎么用,比如,要下載7B的模型,執(zhí)行命令 ollama run deepseek-r1:7b。
模型名稱后面有個冒號,之后是模型的大小。執(zhí)行后就是坐和等待。下載時間取決于網(wǎng)速和運氣。
4、下載完后,你就可以問 Deepseek 問題了,輸入問題,回車就行了。你關(guān)閉了控制臺,手動啟動的方法就是上面下載模型的命令(只想下載,不運行,可以將 run 替換為 pull),ollama run XXXX:7B,但這次它不會再下載了,而是直接啟動。

好了,準備工作結(jié)束,下面正片開始。
和調(diào)用一般 Web API 一樣,HTTP 協(xié)議,JSON 格式。要和模型交互,會用到兩個API。
1、單次對話(你問,它回答,類似搜索,這種較常用)。
POST /api/generate
要提交的JSON一般只需要三個參數(shù)(其他你可以看文檔,其實有些參數(shù)老周也沒看懂):
model:LLM 模型的名稱,畢竟 Ollama 可以下載多種模型,所以要指定模型,如 deepseek-r1:7b;
prompt:你要問它的問題,比如“何不食肉糜?”;
stream:是否啟用流式傳輸。如果是 false,你發(fā)出請求后,要等到所有回答內(nèi)容生成后,一次性返回。如果是 true,可以分塊返回,不必等到全部生成你就可以讀了。
返回的 JSON 對象中,response 字段就是 LLM 回答你的內(nèi)容,如果是流式返回,最后一段回復(fù)的 done 字段會為 true,其他片段為 false。
2、聊天模式
POST /api/chat
請求的 JSON 常用的字段和上面單次對話一樣,但 prompt 字段換成 messages 字段。此字段是數(shù)組類型,包含多個對象,代表聊天記錄。其中,role 代表角色,你是 user,AI是 assistant。content 代表聊天消息內(nèi)容。在調(diào)用時,可以把前面的聊天記錄放進 messages 數(shù)組。
{
"model": "deepseek-r1:32b",
"stream": false,
"messages": [
{
"role": "user",
"content": "你好啊"
},
{
"role": "assistant",
"content": "我不好"
},
{
"role": "user",
"content": "為什么不好?"
}
]
}返回的 JOSN 對象中,message 字段就是新的聊天記錄(一般是 AI 回復(fù)你的)。
好了,知識就介紹到這兒,下面咱們要實際操作了。先聲明一下:Ollama API 的調(diào)用是有專門的 Nuget 包的,都封裝好的,你不需要自己干活。不過,為了讓大伙伴們好理解,老周下面的演示暫不使用 Nuget 包。
先來個簡單的,關(guān)閉流模式。
internal class Program
{
// 請求URL
const string BS_URL = "http://127.0.0.1:11434";
// API路徑
const string API_GEN = "/api/generate";
static async Task Main(string[] args)
{
using HttpClient client = new();
// 設(shè)置基址
client.BaseAddress = new Uri(BS_URL);
// 請求數(shù)據(jù)
string senddata = """
{
"model": "deepseek-r1:8b",
"prompt": "黃河有多長?",
"stream": false
}
""";
StringContent content = new(senddata, Encoding.UTF8, new MediaTypeHeaderValue("application/json"));
HttpRequestMessage msg = new HttpRequestMessage()
{
Method = HttpMethod.Post,
Content = content
};
// 設(shè)置相對的URL即可
msg.RequestUri = new Uri(API_GEN, UriKind.Relative);
// 發(fā)送請求,并讀取響應(yīng)消息
HttpResponseMessage respmsg = await client.SendAsync(msg);
if (respmsg.IsSuccessStatusCode)
{
string json_back = await respmsg.Content.ReadAsStringAsync();
Console.WriteLine("-------------- 返回的JSON ----------------\n");
Console.WriteLine(json_back);
}
}
}代碼運行后,需要等待一段時間。請求返回后,將得到以下 JSON:
{
"model": "deepseek-r1:8b",
"created_at": "2025-02-23T05:12:46.9156624Z",
"response": "\u003cthink\u003e\n嗯,用戶問“黃河有多長?”首先,我得回想一下黃河的基本信息。黃河是中國的一條重要河流,發(fā)源于青藏高原,流經(jīng)華北平原,注入渤海灣。\n\n接下來, 我需要確定黃河的長度。我記得它被稱為“九曲黃河”,這可能是因為它有很多彎曲的河道。根據(jù)我所知道的資料,黃河的總長大約在5463公里左右。不過,這個數(shù)字好像有點問題,因為有些資料會提到水系更長的情況,比如包括支流在內(nèi)。\n\n另外,我還需要考慮用戶為什么會問這個問題。也許他們是在做研究、寫作業(yè),或者只是出于好奇。我應(yīng)該確認一下數(shù)據(jù)的準確性,避免誤導(dǎo)用戶。如果有時間的話,最好核實一下最新的資料,但目前我只能依據(jù)已有的信息回答。\n\n在解釋時,我會提到黃河的重要性,比如它對中國歷史、文化的影響,以及作為水資源的重要性。這不僅能滿足用戶的基本問題,還能提供更多背景信息,讓回答更豐富。\n\n最后,考慮到用戶可能需要進一步了解,可以建議他們查閱最新的地理資料或相關(guān)文獻,以確保得到準確的數(shù)據(jù)和詳細的信息。\n\u003c/think\u003e\n\n黃河的長度約為5,463公里(3,455英里),它是中國最長的河流之一,從青藏高原的瑪旁雍措開始,經(jīng)過九曲,最終注入渤海灣。",
"done": true,
"done_reason": "stop",
"context": [...],
"total_duration": 46687936200,
"load_duration": 6910762400,
"prompt_eval_count": 9,
"prompt_eval_duration": 1643000000,
"eval_count": 347,
"eval_duration": 38128000000
}其中,response 字段就是模型所回答的內(nèi)容。done: true 表示所有回復(fù)已完成。
當流模式關(guān)閉時,響應(yīng)消息是一次性返回的。下面咱們開啟流模式,看會發(fā)生什么。
internal class Program
{
// 請求URL
const string BS_URL = "http://127.0.0.1:11434";
// API路徑
const string API_GEN = "/api/generate";
static async Task Main(string[] args)
{
using HttpClient client = new();
// 設(shè)置基址
client.BaseAddress = new Uri(BS_URL);
// 請求數(shù)據(jù)
string senddata = """
{
"model": "deepseek-r1:8b",
"prompt": "人為什么不能有兩個頭?",
<strong>"stream": true</strong>
}
""";
StringContent content = new(senddata, Encoding.UTF8, new MediaTypeHeaderValue("application/json"));
HttpRequestMessage msg = new HttpRequestMessage()
{
Method = HttpMethod.Post,
Content = content
};
// 設(shè)置相對的URL即可
msg.RequestUri = new Uri(API_GEN, UriKind.Relative);
// 發(fā)送請求,并讀取響應(yīng)消息
HttpResponseMessage respmsg = await client.SendAsync(msg, <strong>HttpCompletionOption.ResponseHeadersRead</strong>);
if (respmsg.IsSuccessStatusCode)
{
<strong>StreamReader reader </strong><strong>= new(await respmsg.Content.ReadAsStreamAsync());
</strong> string? line;
while( (line = <strong>reader.ReadLine()</strong>) != null )
{
Console.WriteLine(line);
}
}
}
}使用流模式后,有幾個地方要改:
1、POST 的內(nèi)容中,stream 字段要設(shè)置為 true;
2、調(diào)用 HttpClient.SendAsync 方法時,要指定 HttpCompletionOption 枚舉值 ResponseHeadersRead,它表示:客戶端不需要等到所有響應(yīng)都完成,只要讀到 Header 就可以返回;
3、以流的方式讀取,所以為了方便一行一行地讀,需要創(chuàng)建一個 StreamReader 實例。因為分區(qū)返回的 JSON 文本之間會有換行符,所以,咱們可以一行一行地讀。
運行后你會發(fā)現(xiàn),響應(yīng)消息是幾個字幾個字地返回,這樣模擬它的思考過程,即返回多個 JSON 對象。
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:26.8283737Z","response":"\u003cthink\u003e","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:26.935257Z","response":"\n","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.0400684Z","response":"嗯","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.1481036Z","response":",","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.2553207Z","response":"為什么","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.361141Z","response":"人類","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.4645525Z","response":"不能","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.5709536Z","response":"像","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.678601Z","response":"一些","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.7789896Z","response":"科","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.8843042Z","response":"幻","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:27.9865743Z","response":"作品","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:28.0981338Z","response":"中","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:28.2029637Z","response":"那樣","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:28.3082135Z","response":"擁有","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:28.409586Z","response":"兩個","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:28.51381Z","response":"頭","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:28.6184175Z","response":"呢","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:28.7219117Z","response":"?","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:28.825078Z","response":"這","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:28.9296468Z","response":"聽","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.0311444Z","response":"起來","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.1316079Z","response":"似乎","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.2358219Z","response":"是不","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.3398343Z","response":"可能","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.4403529Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.5484937Z","response":",但","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.655022Z","response":"我","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.7581549Z","response":"想","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.8581566Z","response":"深","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:29.9648745Z","response":"入","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:30.0696775Z","response":"探","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:30.1753713Z","response":"討","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:30.27877Z","response":"一下","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:30.3833475Z","response":"這個","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:30.4894236Z","response":"問題","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:30.5940864Z","response":"。","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:30.6990377Z","response":"首","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:30.8045853Z","response":"先","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:30.9119286Z","response":",我","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.0145369Z","response":"需要","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.1199967Z","response":"了解","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.2210625Z","response":"一下","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.3265552Z","response":"人的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.4297025Z","response":"身體","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.5367356Z","response":"結(jié)構(gòu)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.6424456Z","response":"。","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.7482556Z","response":"我們","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.8530019Z","response":"知道","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:31.9602229Z","response":",","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:32.0648399Z","response":"人","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:32.1710681Z","response":"體","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:32.2750219Z","response":"是","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:32.3830126Z","response":"由","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:32.4867969Z","response":" skull","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:32.5913801Z","response":"(","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:32.6956664Z","response":"骨","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:32.9019353Z","response":"骼","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.0078236Z","response":")、","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.1117008Z","response":" brain","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.2166404Z","response":"(","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.3208538Z","response":"大","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.4293562Z","response":"腦","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.5347365Z","response":")","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.6400088Z","response":"和","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.7457157Z","response":" spinal","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.8532486Z","response":" cord","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:33.9605695Z","response":"(","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:34.1659429Z","response":"脊","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:34.3748504Z","response":"髓","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:34.478906Z","response":")","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:34.584636Z","response":"組","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:34.6967087Z","response":"成","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:34.803769Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:34.9106495Z","response":",這","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.0157751Z","response":"些","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.121576Z","response":"部分","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.2310764Z","response":"一起","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.3362608Z","response":"協(xié)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.4423656Z","response":"調(diào)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.5459597Z","response":"我們的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.6509706Z","response":"各種","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.7515249Z","response":"生","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.8536359Z","response":"理","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:35.9587695Z","response":"功能","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:36.0627881Z","response":"。\n\n","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:36.1715121Z","response":"如果","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:36.272206Z","response":"有人","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:36.378669Z","response":"有","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:36.4843173Z","response":"兩個","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:36.5874258Z","response":"頭","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:36.6954651Z","response":",每","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:36.8010356Z","response":"個","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:36.905493Z","response":"頭","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.00777Z","response":"都","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.1116269Z","response":"必須","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.2184941Z","response":"有","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.3201941Z","response":"自己的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.4281805Z","response":"大","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.5315492Z","response":"腦","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.6386404Z","response":"、","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.7430066Z","response":"五","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.8491178Z","response":"官","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:37.9535378Z","response":"和","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:38.0570105Z","response":"其他","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:38.1610682Z","response":"相關(guān)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:38.2644939Z","response":"器","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:38.3776018Z","response":"官","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:38.4831233Z","response":"。這","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:38.5933517Z","response":"意味","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:38.6977998Z","response":"著","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:38.8058307Z","response":"雙","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:38.909728Z","response":"倍","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.012905Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.1181564Z","response":"腦","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.2267474Z","response":"細胞","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.332114Z","response":"、","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.4392176Z","response":"雙","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.5447259Z","response":"倍","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.6503374Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.7568585Z","response":"神","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.8659305Z","response":"經(jīng)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:39.9700241Z","response":"系統(tǒng)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:40.0779745Z","response":",","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:40.1827389Z","response":"可能","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:40.2906107Z","response":"還","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:40.3955068Z","response":"需要","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:40.5038202Z","response":"額","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:40.6077525Z","response":"外","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:40.7152217Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:40.8227528Z","response":"血","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:40.9330314Z","response":"液","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:41.039979Z","response":"供應(yīng)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:41.1470584Z","response":"和","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:41.2517911Z","response":"營","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:41.3626235Z","response":"養(yǎng)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:41.4682837Z","response":"吸","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:41.5776612Z","response":"收","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:41.6860285Z","response":"。","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:41.7945814Z","response":"這些","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:41.9013114Z","response":"額","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.0085381Z","response":"外","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.1138961Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.2228489Z","response":"需求","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.3295525Z","response":"對于","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.4358337Z","response":"身體","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.5415029Z","response":"來說","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.6485295Z","response":"是","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.7545516Z","response":"不是","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.866291Z","response":"太","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:42.9704037Z","response":"大","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:43.0771629Z","response":"了","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:43.1825152Z","response":"?","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:43.2885031Z","response":"也","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:43.3968687Z","response":"許","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:43.5034444Z","response":"在","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:43.6073514Z","response":"生","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:43.7134798Z","response":"理","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:43.817739Z","response":"上","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:43.9249076Z","response":"是","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.0288525Z","response":"不可","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.1364566Z","response":"行","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.2419482Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.353196Z","response":"。\n\n","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.4604554Z","response":"再","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.5697433Z","response":"想","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.6773892Z","response":"想","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.7869962Z","response":",大","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.8917627Z","response":"腦","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:44.999083Z","response":"是","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:45.1022087Z","response":"大","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:45.2073669Z","response":"型","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:45.3130991Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:45.4191818Z","response":"器","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:45.5240951Z","response":"官","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:45.6312206Z","response":",它","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:45.7367736Z","response":"占","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:45.8447533Z","response":"據(jù)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:45.9490732Z","response":"了","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:46.0541405Z","response":"頭","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:46.1579005Z","response":"部","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:46.2673471Z","response":"的大","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:46.3708109Z","response":"部分","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:46.4779368Z","response":"空間","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:46.583351Z","response":"。如果","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:46.6928431Z","response":"有","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:46.7992793Z","response":"兩個","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:46.9084686Z","response":"頭","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.0124934Z","response":",每","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.11979Z","response":"個","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.2240414Z","response":"頭","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.3321941Z","response":"都","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.439608Z","response":"需要","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.5470513Z","response":"一個","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.6525859Z","response":"完整","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.7606506Z","response":"的大","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.8665934Z","response":"腦","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:47.9784114Z","response":",那","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:48.0841317Z","response":"么","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:48.191451Z","response":"總","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:48.2980576Z","response":"共","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:48.4076043Z","response":"就","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:48.5150721Z","response":"需要","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:48.6243834Z","response":"兩","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:48.7325953Z","response":"塊","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:48.8405749Z","response":"獨立","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:48.9465845Z","response":"的大","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:49.0549701Z","response":"腦","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:49.1622209Z","response":"。","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:49.269279Z","response":"這種","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:49.3762422Z","response":"情況","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:49.4928995Z","response":"下","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:49.5992815Z","response":",","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:49.7077158Z","response":"如何","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:49.8161646Z","response":"協(xié)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:49.9271731Z","response":"調(diào)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:50.0356263Z","response":"兩","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:50.1428866Z","response":"塊","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:50.2500634Z","response":"大","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:50.3583688Z","response":"腦","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:50.4648516Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:50.5754194Z","response":"信息","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:50.6860491Z","response":"交流","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:50.7941721Z","response":"呢","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:50.9044184Z","response":"?","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.0084217Z","response":"這","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.1113881Z","response":"可能","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.2226612Z","response":"會","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.3282565Z","response":"導(dǎo)致","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.4382736Z","response":"嚴","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.5415728Z","response":"重","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.6461422Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.7528749Z","response":"功能","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.8612338Z","response":"沖","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:51.9663524Z","response":"突","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:52.0727179Z","response":"或","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:52.1819698Z","response":"混","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:52.2868654Z","response":"亂","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:52.3969352Z","response":"。\n\n","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:52.5051955Z","response":"另外","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:52.6130004Z","response":",從","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:52.7188501Z","response":"進","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:52.8268895Z","response":"化","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:52.9313751Z","response":"和","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:53.0399728Z","response":"自然","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:53.1452842Z","response":"選擇","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:53.2532015Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:53.3577953Z","response":"角","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:53.4661099Z","response":"度","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:53.5784617Z","response":"來","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:53.6897647Z","response":"看","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:53.7976552Z","response":",","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:53.9114953Z","response":"人類","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:54.0239694Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:54.1344666Z","response":"身體","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:54.2399898Z","response":"結(jié)構(gòu)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:54.3524683Z","response":"已經(jīng)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:54.467087Z","response":"非常","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:54.5843084Z","response":"優(yōu)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:54.6916832Z","response":"化","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:54.7987819Z","response":"了","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:54.906161Z","response":"。","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.0171672Z","response":"擁有","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.1278378Z","response":"兩個","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.2341755Z","response":"頭","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.3417097Z","response":"不","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.4502543Z","response":"僅","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.5563824Z","response":"在","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.6665516Z","response":"生","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.7779068Z","response":"理","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.8908521Z","response":"上","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:55.9967553Z","response":"難","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:52:56.1099532Z","response":"以","done":false}
……
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:46.3458122Z","response":"可","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:46.4580693Z","response":"行","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:46.5710283Z","response":"性","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:46.6813578Z","response":"等","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:46.7906717Z","response":"多","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:46.9060062Z","response":"個","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:47.0186274Z","response":"角","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:47.1309257Z","response":"度","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:47.2435303Z","response":"來","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:47.3549818Z","response":"看","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:47.4657487Z","response":",這","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:47.5768398Z","response":"種","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:47.6881374Z","response":"現(xiàn)","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:47.7962713Z","response":"象","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:47.9044614Z","response":"是不","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:48.0134716Z","response":"可能","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:48.1229904Z","response":"的","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:48.234462Z","response":"。","done":false}
{"model":"deepseek-r1:8b","created_at":"2025-02-23T08:53:48.3483199Z","response":"","done":true,"done_reason":"stop","context":[128011,17792,113221,54253,19361,110835,65455,11571,128012,128013,198,116274,3922,113221,124785,54253,66201,113882,70626,111663,106942,16325,126018,123882,110835,65455,104586,11571,44388,50287,106155,113644,126957,88367,9554,102378,37046,101067,102987,17701,106767,112962,111230,103624,87219,1811,61075,61826,101602,86206,114706,111230,105390,111006,113520,1811,98739,104105,3922,17792,33014,21043,68171,35113,10110,110135,101805,120,65459,8271,10110,27384,108851,7705,34208,50112,23125,10110,101171,232,100499,241,7705,41127,13153,9554,103138,98184,105494,109277,107047,48972,125383,120288,21990,22649,99480,3490,63344,115814,19361,110835,65455,116255,19483,65455,72368,112157,19361,107924,27384,108851,5486,76208,102078,34208,93994,79656,32648,102078,110477,115552,100815,104836,98406,9554,108851,125951,5486,104836,98406,9554,101365,54493,73548,3922,88367,98806,86206,62291,48915,9554,104473,107654,126907,34208,104424,107711,107246,51109,1811,108787,62291,48915,9554,119745,117237,111006,117147,21043,103668,101402,27384,35287,11571,75863,104894,19000,21990,22649,17905,21043,109947,23039,9554,3490,88356,101067,101067,112886,108851,21043,27384,25287,9554,32648,102078,115973,108928,16423,35287,65455,34048,112914,105494,118582,119464,19361,110835,65455,116255,19483,65455,72368,86206,48044,126827,112914,108851,106169,82696,60843,55999,81258,86206,78640,107438,118326,112914,108851,1811,106880,106041,17297,3922,109425,107047,48972,78640,107438,27384,108851,9554,28469,113841,104586,11571,44388,88367,38093,124376,109759,30358,9554,99480,110158,104584,58291,107960,108267,3490,122922,113294,42399,33208,34208,109683,51504,9554,64936,27479,37507,52030,3922,124785,9554,111006,113520,104724,108008,91272,33208,35287,1811,123882,110835,65455,16937,110395,19000,21990,22649,17905,105142,23897,112026,97150,108562,51611,110593,5486,21990,25359,50667,108900,75863,48706,6744,116,43240,114099,102778,1811,104836,65455,88367,115552,100815,34226,59464,114223,112914,108851,99480,102378,92672,75863,88367,103652,37507,117724,9554,122530,34208,87219,3490,114002,48044,108900,21043,106222,34208,106581,9554,63212,72238,107644,124785,106222,16325,3922,111006,83799,47523,122503,107693,9554,66378,109568,119464,126550,19361,110835,65455,103138,19000,47551,41073,104654,16325,38093,28190,110547,109098,108199,114099,102778,102836,101307,115624,104587,16937,119237,106075,17701,106222,1811,70626,111663,106942,105363,104836,65455,88367,58666,33208,35287,106880,106041,102378,115827,17905,103138,119938,122793,117237,108306,117147,88367,21043,108008,108631,107202,34208,105142,23897,51611,33764,9554,3490,33091,48915,113294,104696,34208,125044,9554,64936,27479,37507,52030,3922,104251,67178,48044,123882,110835,65455,104123,86206,104584,105150,109098,108199,104696,108502,81802,235,110477,16937,110395,117947,82317,28037,101365,54493,73548,5486,104473,107654,122523,87412,110235,108399,64531,33014,111006,9554,99480,107047,48972,1811,113230,3922,126784,104696,98806,110621,105483,102780,118498,59464,114223,119745,3490,112672,101602,75863,19000,101067,106258,81543,88367,68438,48915,109178,17701,58291,93994,17792,49792,46034,38574,37507,112026,113418,28542,111825,92776,102924,110474,103138,119938,104696,106246,86206,106146,42246,61826,42399,34208,59464,114223,9554,73548,126526,98806,31634,124116,28037,56438,119100,19000,9554,106966,113266,34208,122530,110477,117237,105456,124785,117147,113644,21043,109947,23039,9554,3490,122922,3922,127298,63212,72238,75863,54253,120994,58552,119464,126550,123882,110835,65455,106169,82696,104563,88367,28190,110547,37026,37046,30051,42016,125648,116255,19483,65455,72368,19361,107924,126966,34208,99750,101682,103138,87502,104836,30358,124176,88367,124376,109759,30358,122935,22649,87219,1811,109425,55642,78640,108306,53953,9554,126966,34208,40474,99750,103138,109614,48044,106146,42246,59464,114223,103786,39442,53283,125648,3490,60843,37985,111230,113294,112027,48864,5486,42399,33208,5486,106222,106581,5486,104696,31540,23039,34171,109717,127298,113614,50667,43240,19483,106643,28190,37507,52030,3922,124785,123882,110835,65455,113644,126957,88367,9554,110477,16937,110395,19000,21990,22649,17905,48706,109947,101545,44309,9554,108502,81802,235,116496,19000,106222,34208,127298,17905,75863,103652,117661,109098,108199,114099,102778,1811,109491,101602,112403,17792,21043,54253,19361,110835,65455,9554,115286,44388,115310,105068,35287,112027,48864,106583,108729,53229,47548,104587,105142,23897,112026,104696,106583,59464,114223,105318,9174,128014,271,110747,71689,125456,112696,109806,74770,50928,20834,88852,37985,68931,49543,334,124785,110621,123882,110835,65455,334,3922,104514,46281,112027,48864,5486,42399,33208,5486,106222,106581,34208,104696,31540,23039,34171,50667,43240,19483,64936,27479,37507,52030,103138,87502,47551,47523,126957,88367,9554,1811],"total_duration":87732605300,"load_duration":4663612600,"prompt_eval_count":10,"prompt_eval_duration":1542000000,"eval_count":749,"eval_duration":81522000000}最后一個 JSON 對象的 done 字段為 true,表示是最后一個消息分塊。context 字段中的數(shù)字是用于對話上下文的,即下一次你向 LLM 發(fā)問時,可以把上次返回的 context 放到請求數(shù)據(jù)中,這樣形成基于上下文的推理。不過這個 context 字段在官方文檔中已標記為“過時”,以后可能不使用了。所以咱們可以不理會,因為可以使用聊天模式 API(請看上文)。
通過上面的簡單演示,相信大伙伴都會用了。不過為了方便,咱們可以把請求數(shù)據(jù)封裝一下,通過 JSON 序列化來調(diào)用,會更方便。
A、請求消息,主要使用 model、prompt 和 stream 字段。
/// <summary>
/// 請求數(shù)據(jù)
/// </summary>
public class ModelRequest
{
/// <summary>
/// 模型名稱
/// </summary>
public string? Model { get; set; }
/// <summary>
/// 提問
/// </summary>
public string? Prompt { get; set; }
/// <summary>
/// 是否使用流模式
/// </summary>
public bool Stream { get; set; }
}B、返回的JSON封裝,用到 model、response、done 字段。
/// <summary>
/// 返回的消息
/// </summary>
public class ModelResponse
{
/// <summary>
/// 模型名
/// </summary>
public string? Model { get; set; }
/// <summary>
/// 回復(fù)內(nèi)容
/// </summary>
public string? Response { get; set; }
/// <summary>
/// 是否為最后一個分塊
/// </summary>
public bool Done { get; set; } = false;
}咱們測試一下流模式。
internal class Program
{
// 根URL
const string BASE_URL = "http://127.0.0.1:11434";
// API 路徑
const string GEN_API = "/api/generate";
static async Task Main(string[] args)
{
using HttpClient client = new HttpClient();
// 設(shè)置基址
client.BaseAddress = new Uri(BASE_URL);
// 準備請求數(shù)據(jù)
ModelRequest rqdata = new()
{
Model = "deepseek-r1:8b",
Stream = true,
Prompt = "25的15次方是多少?"
};
// 發(fā)送請求
var reqmsg = new HttpRequestMessage(HttpMethod.Post, GEN_API);
// 請求正文
JsonContent data = JsonContent.Create(rqdata);
reqmsg.Content = data;
var responsemsg = await client.SendAsync(reqmsg, HttpCompletionOption.ResponseHeadersRead);
// 處理響應(yīng)消息
if (responsemsg.IsSuccessStatusCode)
{
using StreamReader reader = new(await responsemsg.Content.ReadAsStreamAsync());
// 屬性名不區(qū)分大小寫,在反序列化時如果不啟用該選項
// 將無法讀到字段值
JsonSerializerOptions options = new() { <strong>PropertyNameCaseInsensitive = true</strong> };
var line = await reader.ReadLineAsync();
while (line != null)
{
ModelResponse? mdresp = JsonSerializer.Deserialize<ModelResponse>(line, options);
if(mdresp != null)
{
Console.Write(mdresp.Response);
// 是否為最后一塊
if(mdresp.Done == true)
{
Console.Write("\n\n(已完畢)\n");
break;
}
}
line = await reader.ReadLineAsync();
}
}
}
}這個和上一個例子差不多,只是將數(shù)據(jù)封裝了。
需要注意的是,由于流是不斷地返回 JSON 對象,而不是一個單獨的JSON數(shù)組,所以不應(yīng)該直接返序列化為 ModelResponse 數(shù)組,而是和前面一樣,讀一行出來,用 JsonSerializer.Deserialize 方法進行反序列化。這里要用到 JsonSerializerOptions 類設(shè)置一個 PropertyNameCaseInsensitive 屬性,這是因為返回的 JSON 的字段名全是小寫的,而咱們定義的 ModelResponse 類的屬性是大寫字母開頭的,默認處理是嚴格區(qū)分大小寫的(反序列化的時候,序列化時可以忽略),設(shè)置該選項是讓其能夠賦值。如果你嫌麻煩,也可以把 ModelResponse 類的屬性名稱全定義為小寫。
使用流模式調(diào)用,可以得到這樣的效果:

不過,不得不說一句,AI 做數(shù)學運算不如直接讓 CPU 進行運算,秒出結(jié)果。這廝一直在瞎推理,推來推去,總算得出答案。所以說,AI 是有其適用范圍的,真不是任何場合都合適。
下面咱們使用一下 nuget 包,搜索 OllamaSharp 就能找到。

如何添加 nuget 包,此處省略 1851 字。
安裝好包后,需要引入以下命名空間:
using OllamaSharp;
using OllamaSharp.Models;然后,實例化 OllamaApiClient。
IOllamaApiClient client = new OllamaApiClient(
"http://127.0.0.1:11434",
"deepseek-r1:8b"
);構(gòu)造函數(shù)的第二個參數(shù)是設(shè)置一個默認模型名稱,后面在調(diào)用 API 時就不用再設(shè)置了。
請求時要提交一個 GenerateRequest 對象,和前面咱們自己封裝的一樣,需要用到 Model、Prompt 等屬性。
// 準備數(shù)據(jù) GenerateRequest req = new(); // 如果在構(gòu)造函數(shù)配置過模型名稱,可以省略 //req.Model = "deepseek-r1:8b"; req.Stream = true; req.Prompt = "唐太宗是唐朝第幾位皇帝?";
由于咱們設(shè)置了默認模型,這里 Model 屬性可以不賦值。
發(fā)出請求,返回一個 IAsyncEnumerable<T> 對象,里面包含返回的 GenerateResponseStream 對象列表。這個支持異步枚舉。
var resp = client.GenerateAsync(req);
await foreach(GenerateResponseStream? stream in resp)
{
if(stream != null)
{
Console.Write(stream.Response);
// 如果已結(jié)束
if(stream.Done)
{
Console.Write("\n\n會話結(jié)束\n");
}
}
}其實和咱們剛才自己封裝的差不多。運行結(jié)果如下:

雖然答案是對的,但推理過程純屬胡說,大伙伴且當娛樂。
下面咱們用一下聊天功能。
這是一個 WinForm 項目,窗口上方是一個 RichTextBox,顯示AI回復(fù)的內(nèi)容,下面的文本框用來輸入。

往項目添加 OllamaSharp 包,然后在窗口類的代碼文件中引入以下命名空間:
using OllamaSharp; using OllamaSharp.Models.Chat;
聊天模式也是先創(chuàng)建 OllamaApiClient 實例,然后把此 OllamaApiClient 實例傳遞給 Chat 類的構(gòu)造函數(shù),進而創(chuàng)建 Chat 實例。接著,調(diào)用 Chat 實例的 SendAsAsync 或 SendAsync 方法發(fā)送消息。方法返回 AI 回答你的內(nèi)容。
// 聲明類級別的私有字段
OllamaApiClient? client;
Chat? theChat;
public Form1()
{
InitializeComponent();
// 調(diào)用這個方法初始化 Ollama 客戶端
InitOllamClient();
btnSend.Click += BtnSend_Click;
}
private void InitOllamClient()
{
client = <strong>new OllamaApiClient("http://127.0.0.1:11434", "deepseek-r1:8b"</strong><strong>)</strong>;
theChat = <strong>new</strong><strong> Chat(client)</strong>;
}處理一下“發(fā)送”按鈕的 Click 事件,發(fā)送消息并把AI響應(yīng)的消息追加到 RichTextBox 中。
private async void BtnSend_Click(object? sender, EventArgs e)
{
if (txtMessage.Text == string.Empty) return;
// 發(fā)起請求
IAsyncEnumerable<string> history = <strong>theChat!</strong><strong>.SendAsAsync(ChatRole.User, txtMessage.Text)</strong>;
await foreach(string s in history)
{
// 跳過不需要的字符
if(s.Equals("<think>")
|| s.Equals("</think>")
|| s.Equals("\n\n")
|| s.Equals("\n"))
{
continue;
}
// 追加文本
<strong>rtbMessages.AppendText(s)</strong>;
}
// 一條消息后加一個換行符
rtbMessages.AppendText("\n");
txtMessage.Clear(); // 清除文本
}SendAsAsync 方法有N多重載,此處使用的是以下版本:
public IAsyncEnumerable<string> SendAsAsync(ChatRole role, string message, CancellationToken cancellationToken = default(CancellationToken))
第一個參數(shù)是 role 表示角色,你說的話要用 User 角色;第二個參數(shù)是消息內(nèi)容;第三個可選,一般默認就行,除非你需要取消調(diào)用。
返回的內(nèi)容是字符串列表,這個列表包含模型預(yù)測的短語列表,要把整個列表串聯(lián)起來才是完整的消息(看前文第一個例子,就是流模式那樣)。
效果如下圖所示:

好了,本文內(nèi)容基本介紹完了。老周可不允許你學不會!如果這也學不會,那就罰自己餓兩個月吧。ASP.NET Core 上的用法也一樣的,你可以讓 Ollama 和應(yīng)用程序在同一個服務(wù)器,本地調(diào)用,然后返回給客戶端,一般不用直接對外暴露 URL。
以上就是詳解如何在.NET代碼中使用本地部署的Deepseek語言模型的詳細內(nèi)容,更多關(guān)于.NET使用本地部署Deepseek的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
ASP.NET?Core使用Swagger/OpenAPI規(guī)范
這篇文章介紹了ASP.NET?Core使用Swagger/OpenAPI規(guī)范的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04
詳解ASP.NET數(shù)據(jù)綁定操作中Repeater控件的用法
.NET中的Repeater控件支持數(shù)據(jù)模板,而且可以自由地定義樣式,這里我們就來詳解ASP.NET數(shù)據(jù)綁定操作中Repeater控件的用法,需要的朋友可以參考下2016-06-06
asp.net下實現(xiàn)支持文件分塊多點異步上傳的 Web Services
asp.net下實現(xiàn)支持文件分塊多點異步上傳的 Web Services...2007-04-04
asp.net(c#)下讀取word文檔的方法小結(jié)
asp.net(c#)下讀取word文檔的方法小結(jié),需要的朋友可以參考下。2011-07-07
ASP.NET實現(xiàn)多域名多網(wǎng)站共享Session值的方法
實現(xiàn)功能:可設(shè)置哪些站點可以共享Session值,這樣就防止別人利用這個去訪問,要想實現(xiàn)這個功能就必須得把Session值 放入數(shù)據(jù)庫中, 所有我們先在VS命令工具下注冊一個2011-11-11

