.NET使用OllamaSharp實現大模型推理對話的簡單演示

WeskyNet發表於2024-10-23
前提條件:請確保你本地已經安裝了ollama以及有關本地離線模型。或者已有遠端模型環境等。如果沒有,請自行部署。如果需要幫助,可以文末獲取聯絡方式諮詢。由於部署離線大模型過於簡單,線上資料也很多,我就省略這個步驟了。
建立一個專案,新增使用MIT開源協議的一個nuget包 OllamaSharp
0
確保Ollama應用已經啟動。
0
預設本地ollama的埠是11434,也可以自行部署時候更改環境變數進行修改大模型存放地址、預設埠、是否允許遠端訪問等等。建立連線,並且驗證下連線是不是正常,返回true,代表連線正常。
0
可以遍歷出已有的模型有哪些,咱們寫個選擇模型的輸入,透過輸入來選擇模型。由於獲取的是IEnumerable集合,所以此處為了方便,之間轉為陣列來獲取下標,從而獲取模型名稱。大家自己使用時候記得最佳化下寫法。
執行,可以看到我本地羅列的模型列表等資訊。
0
選擇模型完畢,並繫結prompt提示詞進行建立聊天對話。建立對話以後,根據使用者輸入的內容進行推理並獲取返回內容。
0
執行結果如下:
如果需要以上演示的demo原始碼,可以在個人公眾號 Dotnet Dancer 內,回覆 【程式碼演示】 即可獲取程式碼開源地址。
核心程式碼片段:
var uri = new Uri("http://localhost:11434");
var ollama = new OllamaApiClient(uri);

var models = await ollama.ListLocalModels();

foreach (var model in models)
{
Console.WriteLine($"{index++}:{model.Name} {model.Size / 1024 / 1024} MB"); // 輸出模型名稱和大小
}
int selectIndex = Convert.ToInt32(Console.ReadLine());
ollama.SelectedModel = models.ToArray()[selectIndex].Name; // 選擇模型名稱

var chat = new Chat(ollama, prompt);

await foreach (var answerToken in chat.Send(message))
       Console.Write(answerToken);

相關文章