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

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

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

      OllamaSharp 本地sse call MCP 快速體驗示例

      .net 9 

      ollama 測試模型 qwen3 4B

      Server 端依賴包  ModelContextProtocol.AspNetCore (0.3.0-preview.4)

      客戶端依賴包  ModelContextProtocol.AspNetCore (0.2.0-preview.3),ModelContextProtocol.Core (0.2.0-preview.3),  OllamaSharp , OllamaSharp.ModelContextProtocol

      本示例 Ollama包5.3.6 

      客戶端使用低版本 ModelContextProtocol 是因為ollama最新包5.3.6中調用工具需要使用到ModelContextProtocol.Core.Protocol.CallToolResponse的類.這個類在0.2.0-preview.3版本后被移除.使用CallToolResult 替換.

       

      本地模型建議 1.5B以上. 1.5B的大部分模型不支持直接tools把模型傳過去. 但可以要求按指定格式生成調用.再解析.不過1.5B 生成跟抽風一樣一會好一會壞.但我在4B里測了很多次都是很穩定的.

      服務端工具代碼

       1 using System.ComponentModel;
       2 using ModelContextProtocol.Server;
       3 
       4 namespace test_server.tools;
       5 
       6 [McpServerToolType]
       7 public class FileTool
       8 {
       9     [McpServerTool(Name = "文件查找"), Description("在指定的目錄中查找文件")]
      10     public string FindFileInDirectory([Description("查找文件的基礎目錄")] string baseDirectory
      11     , [Description("需要查找的文件名")] string fileName)
      12     {
      13         try
      14         {
      15             if (!Directory.Exists(baseDirectory))
      16             {
      17                 return $"查詢的目錄{baseDirectory}不存在!";
      18             }
      19             var fs = Directory.GetFiles(baseDirectory, $"*{fileName}*", SearchOption.AllDirectories);
      20             if (fs.Length == 0)
      21             {
      22                 return $"在目錄{baseDirectory}中沒有找到文件名包含{fileName}的任何文件!";
      23             }
      24             return $"在目錄{baseDirectory}中找到文件名包含{fileName}的文件{fs.Length}個 :\r\n{string.Join("\r\n", fs)}";
      25         }
      26         catch (System.Exception ex)
      27         {
      28             Console.WriteLine(ex.Message + "\n" + ex.StackTrace);
      29             return ex.Message;
      30         }
      31     }
      32 }
      View Code

      服務端啟動代碼(Program.cs)

       1 using Microsoft.AspNetCore.Builder;
       2 using Microsoft.Extensions.DependencyInjection;
       3 
       4 
       5 var builder = WebApplication.CreateBuilder(args);
       6 builder.Services.AddMcpServer()
       7     .WithHttpTransport()
       8     .WithToolsFromAssembly();
       9 var app = builder.Build();
      10 
      11 app.MapGet("/run", () => "Hello MCP Server!");
      12 
      13 app.MapMcp();
      14 app.Run();
      View Code

       

      客戶端調用(Program.cs)

       1 var sseTran = new SseClientTransport(new SseClientTransportOptions
       2 {
       3     Name = "Test Tools",
       4     Endpoint = new Uri("http://localhost:5000")
       5 
       6 });
       7 
       8 await using var mcpClient = await McpClientFactory.CreateAsync(sseTran);
       9 var mcpTools = await mcpClient.ListToolsAsync();
      10 
      11 //List<OllamaSharp.Models.Chat.Tool> tools = GetOllamaToolsFromMCPTools(mcpTools);
      12 var tools = new List<OllamaSharp.ModelContextProtocol.Server.McpClientTool>();
      13 
      14 foreach (var tool in mcpTools)
      15 {
      16     Console.WriteLine($"{tool.Name} ({tool.Description})");
      17     tools.Add(new OllamaSharp.ModelContextProtocol.Server.McpClientTool(tool, mcpClient));
      18 }
      19 
      20 HttpClient hc = new HttpClient();
      21 // set up the client
      22 hc.Timeout = TimeSpan.FromMinutes(5);
      23 hc.BaseAddress = uri;
      24 //這里未必需要httpClient.因為我本地模型生成比較慢需要設個超時,所以才用了它
      25 var ollama = new OllamaApiClient(hc, "qwen3:4b");
      26 ollama.Config.Uri = uri;
      27 
      28 var chatOptions = new ChatOptions()
      29 {
      30     Tools = [.. mcpTools],
      31     Temperature = 0.6f,
      32     AllowMultipleToolCalls = true,
      33     ToolMode = ChatToolMode.Auto,
      34     MaxOutputTokens = 256,//這個不設置 超級多廢話(我當前用的是qwen3 4B)
      35 
      36 };
      37 
      38 var chat = new Chat(ollama);
      39 while (true)
      40 {
      41 
      42  System.Console.InputEncoding = System.Text.Encoding.UTF8;
      43     Console.Write("User >");
      44     string content = Console.ReadLine();
      45     if (String.IsNullOrWhiteSpace(content))
      46     {
      47         continue;
      48     }
      49     Console.Write("AI >");
      50     await foreach (var answerToken in chat.SendAsync(content, tools))
      51         Console.Write(answerToken);
      52 }
      View Code

       

      posted @ 2025-09-01 10:51  望著天的蝸牛  閱讀(22)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产在线观看网址不卡一区 | 欧美片内射欧美美美妇| 九九热免费在线播放视频| 插入中文字幕在线一区二区三区| 久久精品国产一区二区三| 中文字幕自拍偷拍福利视频| 国产99在线 | 免费| 亚洲av不卡电影在线网址最新| 国产美女在线观看大长腿| 亚洲日韩一区二区| 精品国产女同疯狂摩擦2| 视频专区熟女人妻第二页| AV老司机AV天堂| 欧美国产日产一区二区| 亚洲中文字幕在线无码一区二区| 久久久这里只有精品10| 化德县| 亚洲国产免费图区在线视频| 国产不卡一区二区在线| 亚洲中文无码av在线| 99精品久久毛片a片| 国产办公室秘书无码精品99| 2021最新国产精品网站| 极品美女自拍偷精品视频| 亚洲国产在一区二区三区| japanese无码中文字幕| 越南毛茸茸的少妇| 国产精品自偷一区在线观看| 日韩在线视频线观看一区| 亚洲国产日韩欧美一区二区三区| 蜜桃亚洲一区二区三区四| 92国产福利午夜757小视频| 亚洲av永久无码精品水牛影视| 极品无码国模国产在线观看| 午夜福利在线观看入口| 大地资源免费视频观看| 欧美成人h亚洲综合在线观看| 国色精品卡一卡2卡3卡4卡在线| 欧美和黑人xxxx猛交视频| 亚洲精品国产av成拍色拍个| 国产精品一区二区久久精品无码 |