<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .Net9中通過HttpClient簡單調用Ollama中的DeepSeek R1模型

      本文主要使用.Net9中的HttpClient組件,調用本地部署的Ollama提供的API接口,獲取對應的問答信息。

      1、??測試環境

      • VS2022;

      • .Net9控制臺程序;

      • HttpClient組件;

      • 本地部署的Ollama環境

      • DeepSeek R1模型(deepseek-r1:1.5b)

      關于本地部署的Ollama環境,可參見文章【通過Ollama本地部署DeepSeek R1以及簡單使用的教程(超詳細)】。


      2、??創建控制臺程序

      我們使用VS2022創建一個基于.Net9的控制臺程序,具體如下所示:

      控制臺程序

      控制臺程序

      控制臺程序

      上述我們就創建好了一個控制臺程序。


      3、??Ollama接口

      Ollama為我們提供了多種接口,最常用的接口為:

      • POST /api/generate

      • POST /api/chat

      上述兩個接口為最常用的,具體說明可參見【https://github.com/ollama/ollama/blob/main/docs/api.md】說明,如下所示為部分使用說明的截圖:

      Ollama接口

      Ollama接口


      4、??調用實現

      4.1、??generate接口

      我們在Program.cs文件中編寫具體的代碼。

      具體代碼實現如下所示(復制粘貼即可運行),都有對應的說明:

      using System.Data;
      using System.Text;
      using System.Text.Json;
      
      // HttpClient實例
      var httpClient = new HttpClient();
      
      // Ollama API請求地址
      var requestUrl = "http://localhost:11434/api/generate";
      
      Console.ForegroundColor = ConsoleColor.Green;
      Console.WriteLine("請輸入對話內容(輸入exit退出):");
      
      while (true)
      {
          // 讀取輸入的內容
          var input = Console.ReadLine();
      
          if (input != null && input.ToLower() == "exit")
          {
              Console.ForegroundColor = ConsoleColor.Red;
              Console.WriteLine("程序即將退出...");
      
              // 退出循環,程序結束
              break;
          }
      
          // 請求參數
          var requestData = new
          {
              // 指定模型標識符
              model = "deepseek-r1:1.5b",
              // 輸入的提示文本
              prompt = input,
              // 是否啟用流式響應
              stream = true,
              // 其他選項
              options = new
              {
                  // 控制生成隨機性(0-1)
                  temperature = 0.7,
                  // 最大生成 token 數
                  max_tokens = 500
              }
          };
      
          // 創建HttpRequestMessage實例以及設置請求內容
          using var request = new HttpRequestMessage(HttpMethod.Post, requestUrl);
          request.Content = new StringContent(JsonSerializer.Serialize(requestData), Encoding.UTF8, "application/json");
      
          // 發送請求并獲取響應
          using var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
          await using var stream = await response.Content.ReadAsStreamAsync();
          using var reader = new StreamReader(stream);
      
          // 循環讀取響應流
          while (!reader.EndOfStream)
          {
              var content = await reader.ReadLineAsync();
              if (!string.IsNullOrEmpty(content))
              {
                  var partialResponse = JsonSerializer.Deserialize<OllamaResponse>(content);
      
                  // 輸出響應內容
                  Console.ForegroundColor = ConsoleColor.White;
                  Console.Write(partialResponse?.response);
              }
          }
      
          Console.ForegroundColor = ConsoleColor.Green;
          Console.WriteLine("\r\n\r\n請輸入對話內容(輸入exit退出):");
      }
      
      /// <summary>
      /// Ollama API響應實體類
      /// </summary>
      public class OllamaResponse
      {
          /// <summary>
          /// 模型標識符
          /// </summary>
          public string model { get; set; }
      
          /// <summary>
          /// 創建時間戳
          /// </summary>
          public string created_at { get; set; }
      
          /// <summary>
          /// 響應內容
          /// </summary>
          public string response { get; set; }
      
          /// <summary>
          /// 是否完成
          /// </summary>
          public bool done { get; set; }
      
          /// <summary>
          /// 完成原因
          /// </summary>
          public string done_reason { get; set; }
      
          public int[] context { get; set; }
          public long total_duration { get; set; }
          public long load_duration { get; set; }
          public int prompt_eval_count { get; set; }
          public long prompt_eval_duration { get; set; }
          public int eval_count { get; set; }
          public long eval_duration { get; set; }
      }
      

      運行效果:

      運行效果

      4.2、??chat接口

      我們在Program.cs文件中編寫具體的代碼。

      具體代碼實現如下所示(復制粘貼即可運行),都有對應的說明:

      using System.Data;
      using System.Text;
      using System.Text.Json;
      
      // HttpClient實例
      var httpClient = new HttpClient();
      
      // Ollama API請求地址
      var requestUrl = "http://localhost:11434/api/chat";
      
      Console.ForegroundColor = ConsoleColor.Green;
      Console.WriteLine("請輸入對話內容(輸入exit退出):");
      
      while (true)
      {
          // 讀取輸入的內容
          var input = Console.ReadLine();
      
          if (input != null && input.ToLower() == "exit")
          {
              Console.ForegroundColor = ConsoleColor.Red;
              Console.WriteLine("程序即將退出...");
      
              // 退出循環,程序結束
              break;
          }
      
          // 請求參數
          var requestData = new
          {
              // 指定模型標識符
              model = "deepseek-r1:1.5b",
              // 輸入的提示文本
              messages = new[]
              {
                  new { role = "user", content = input }
              },
              // 是否啟用流式響應
              stream = true,
              // 其他選項
              options = new
              {
                  // 控制生成隨機性(0-1)
                  temperature = 0.7,
                  // 最大生成 token 數
                  max_tokens = 500
              }
          };
      
          // 創建HttpRequestMessage實例以及設置請求內容
          using var request = new HttpRequestMessage(HttpMethod.Post, requestUrl);
          request.Content = new StringContent(JsonSerializer.Serialize(requestData), Encoding.UTF8, "application/json");
      
          // 發送請求并獲取響應
          using var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
          await using var stream = await response.Content.ReadAsStreamAsync();
          using var reader = new StreamReader(stream);
      
          // 循環讀取響應流
          while (!reader.EndOfStream)
          {
              var content = await reader.ReadLineAsync();
              if (!string.IsNullOrEmpty(content))
              {
                  var partialResponse = JsonSerializer.Deserialize<OllamaResponse>(content);
      
                  // 輸出響應內容
                  Console.ForegroundColor = ConsoleColor.White;
                  Console.Write(partialResponse?.message.content);
              }
          }
      
          Console.ForegroundColor = ConsoleColor.Green;
          Console.WriteLine("\r\n\r\n請輸入對話內容(輸入exit退出):");
      }
      
      /// <summary>
      /// Ollama API響應實體類
      /// </summary>
      public class OllamaResponse
      {
          /// <summary>
          /// 模型標識符
          /// </summary>
          public string model { get; set; }
      
          /// <summary>
          /// 創建時間戳
          /// </summary>
          public string created_at { get; set; }
      
          /// <summary>
          /// 響應內容
          /// </summary>
          public OllamaResponseMessage message { get; set; }
      
          /// <summary>
          /// 是否完成
          /// </summary>
          public bool done { get; set; }
      
          /// <summary>
          /// 完成原因
          /// </summary>
          public string done_reason { get; set; }
      
          public long total_duration { get; set; }
          public long load_duration { get; set; }
          public int prompt_eval_count { get; set; }
          public long prompt_eval_duration { get; set; }
          public int eval_count { get; set; }
          public long eval_duration { get; set; }
      }
      
      /// <summary>
      /// Ollama API響應實體類的message子類
      /// </summary>
      public class OllamaResponseMessage
      {
          /// <summary>
          /// 角色
          /// </summary>
          public string role { get; set; }
      
          /// <summary>
          /// 內容
          /// </summary>
          public string content { get; set; }
      }
      

      運行效果:

      運行效果


      到此,通過.Net9的HttpClient簡單調用Ollama的API就完成了。


      5、??其他文章:

      posted @ 2025-02-08 15:28  Qubernet  閱讀(1833)  評論(0)    收藏  舉報
      ??
      主站蜘蛛池模板: 成人欧美一区二区三区在线| 亚洲gv天堂无码男同在线观看| 嫩草院一区二区乱码| 亚洲av无码国产在丝袜线观看| 潮喷失禁大喷水无码| 国产精品国产亚洲区久久| 国产精品任我爽爆在线播放6080 | 熟女在线视频一区二区三区| 99久久婷婷国产综合精品青草漫画 | 光棍天堂在线手机播放免费| 日韩精品 在线 国产 丝袜| 亚洲一级特黄大片在线播放| 夜夜爱夜鲁夜鲁很鲁| 久久久av男人的天堂| 一本一本久久aa综合精品| 大屁股国产白浆一二区| 国产精品∧v在线观看| 91福利视频一区二区| 国产微拍一区二区三区四区| 苍井空毛片精品久久久| 亚洲欧美色综合影院| 亚洲香蕉伊综合在人在线| 亚洲精品专区永久免费区| 亚洲 校园 欧美 国产 另类| 在线精品视频一区二区三四| 欧美激烈精交gif动态图| 自拍偷拍另类三级三色四色| 国内少妇偷人精品视频| 久久婷婷丁香五月综合五| 久久精品国产99久久久古代| 闽侯县| 老熟女熟妇一区二区三区| 特黄大片又粗又大又暴| 国产成人综合亚洲欧美日韩| 久久亚洲av成人无码软件| 日韩精品一区二区三区在| 91精品国产吴梦梦在线观看永久 | 中文字幕无码视频手机免费看 | 亚洲精中文字幕二区三区| 92精品国产自产在线观看481页| 日本中文字幕乱码免费|