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

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

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

      BotSharp + MCP 三步實現智能體開發

      1. 簡介

      1.1 什么是MCP

      Model Context Protocol(MCP)模型上下文協議是一種標準化協議,它讓大模型能夠更容易地和外部的數據、工具連接起來。你可以把MCP想象成一個通用的插頭或者接口,就像USB-C一樣,不管是什么設備,只要插上這個接口,就能和電腦、充電器等連接起來。

      image

      注意,它連接的不是物理設備,而是AI模型和外部的數據源、工具等。有了MCP,AI模型就能更方便地獲取外部的信息,完成更多的任務。比如,通過MCP,AI模型可以操作電腦讀寫文件,或者模擬瀏覽器操作等。

      1.2 為什么需要MCP

      首先,MCP提供了一個標準化的接口,使得AI模型能夠輕松地與各種外部工具和數據源進行交互,無需為每個工具或數據源單獨開發集成代碼。

      其次,MCP還解決了數據孤島問題,通過統一協議連接分散的數據源,使AI模型能夠實時訪問和利用最新的數據。

      總的來說,MCP就像是一個橋梁,讓AI模型與外部世界更好地連接起來,從而發揮出更大的價值和潛力。

      1.3 .NET與MCP架構

      image

      • 客戶端/服務器層:McpClient負責處理客戶端操作,而McpServer則管理服務器端協議操作。兩者都利用McpSession來進行通信管理。

      • 會話層(McpSession):通過DefaultMcpSession實現來管理通信模式和狀態。

      • 傳輸層(McpTransport):處理JSON-RPC 2.0消息的序列化和反序列化,并支持多種傳輸實現。


      MCP客戶端是模型上下文協議(MCP)架構中的關鍵組件,負責建立和管理與MCP服務器的連接。它實現了協議的客戶端部分


      MCP服務器是模型上下文協議(MCP)架構中的基礎組件,它為客戶端提供工具、資源和功能。它實現了協議的服務器端部分。

      BotSharp 提供了非常方便的進行 MCP 的集成。接下來,我們將詳細的完成一個完整的MCP應用案例。

      2. 實戰案例

      2.1 服務端開發

      我們將在 MCP 服務端提供3個外部功能:獲取pizza 價格、下訂單和支付。這里我們使用MCP C# SDK來實現ASP.NET Core的MCP SSE Server,顧名思義它就是使用SSE傳輸方式。

      (1)創建一個.NET 8.0 ASP.NET WebAPI應用,假設命名為:BotSharp.PizzaBot.MCPServer

      (2)安裝MCP SDK,添加2個nuget 包:

      <PackageReference Include="ModelContextProtocol" />
      <PackageReference Include="ModelContextProtocol.AspNetCore" />

      (3)創建一個Tools目錄,然后添加3個工具,我們以MakePayment 為例做個介紹:

      using ModelContextProtocol.Server;
      using System.ComponentModel;
      using System.ComponentModel.DataAnnotations;

      namespace BotSharp.PizzaBot.MCPServer.Tools;

      [McpServerToolType]
      public static class MakePayment
      {
           [McpServerTool(Name = "make_payment"), Description("call this function to make payment.")]
           public static string Make_Payment(
               [Description("order number"),Required] string order_number,
               [Description("total amount"),Required] int total_amount)
           {
               if (order_number is null)
               {
                   throw new McpServerException("Missing required argument 'order_number'");
               }
               if (order_number is null)
               {
                   throw new McpServerException("Missing required argument 'total_amount'");
               }
               return "Payment proceed successfully. Thank you for your business. Have a great day!";
           }
      }

      可以看到基于SDK提供的Attribute,可以方便地將其指定為MCP Server Tools

      (4)修改Program.cs設置為啟動MCP Server

      同樣,也是很方便地就完成了MCP Server的創建,重點關注WithToolsFromAssembly這個擴展方法,它會掃描程序集中添加了McpServerTool標簽的類進行注冊。

      var builder = WebApplication.CreateBuilder(args);
      builder.Services.AddMcpServer()
           .WithToolsFromAssembly();
      var app = builder.Build();

      app.MapGet("/", () => "This is a test server with only stub functionality!");
      app.MapMcp();

      app.Run();

      這時我們已經完成了MCP Server的創建,可以把它啟動起來了。

      (5)測試MCP Server

      但是,要完成測試MCP Server,我們可以用官方的測試工具MCP Inspector。MCP Inspector 是專為 Model Context Protocol(MCP)服務器設計的交互式調試工具,支持開發者通過多種方式快速測試與優化服務端功能。

      無需安裝即可通過 npx 直接運行 Inspector:npx @modelcontextprotocol/inspector 

      image

      2.2  Botsharp 中使用MCP Server

      在Botsharp 程序中添加 MCP Server的配置:

      "MCP": {
         "Enabled": true,
         "McpClientOptions": {
           "ClientInfo": {
             "Name": "SimpleToolsBotsharp",
             "Version": "1.0.0"
           }
         },
         "McpServerConfigs": [
           {
             "Id": "PizzaServer",
             "Name": "PizzaServer",
             "TransportType": "sse",
             "TransportOptions": [],
             "Location": "http://localhost:58905/sse"
           }
         ]
      }

      McpServerConfigs 是一個宿主,可以支持配置多個MCP Server,Botsharp 有一個MCP集成的核心模塊BotSharp.Core.MCP, 目前已經實現將MCP Server的 Tools 注冊為BotSharp的IFunctionCallback ,然后就可以在具體的Agent 上配置對應的工具McpToolAdapter。

      image

      我們在測試的示例是BotSharp 的經典披薩示例,將原來的函數調用工具的相關定義移到MCP Server, 我就把披薩示例中的智能體Order 的工具get_pizza_price 和place_an_order 改成MCP Tools,把原來的代碼注釋了,配置上改成用McpTool:

      image

      智能體Order的McpTool的配置

      image

      我們也可以通過BotSharp的前端UI 來修改:

      image

      到這里我們就可以在BotSharp 中使用MCP Tools。具體是怎么用的,可以看Order 智能體的例程提示詞:

      You are now a Pizza Ordering agent, and you can help customers order a pizza according to the user's preferences.

      Follow below step to place order:
      1: Ask user preferences, call function get_pizza_types to provide the variety of pizza options.
      2: Confirm with user the pizza type and quantity.
      3: Call function place_an_order to purchase.
      4: Ask user how to pay for this order.

      Use below information to help ordering process:
      * Today is {{current_date}}, the time now is {{current_time}}, day of week is {{current_weekday}}.

      測試結果

      image

      成功?。。?


      總結

          本文介紹了MCP的基本概念和工作模式,然后演示了如何通過MCP C# SDK創建基于ASP.NET WebAPI創建SSE Server,在Botsharp中如何使用MCP Tools,相信會對你有所幫助。如果你也是.NET程序員希望參與AI應用的開發,那就快快了解和使用基于Botsharp + MCP C# SDK 的生態組件庫吧。

      示例源碼在Botsharp github倉庫的PR:https://github.com/SciSharp/BotSharp/pull/994  ,很快就會合并到master。


      相關資源:

      posted @ 2025-04-04 15:58  張善友  閱讀(1904)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 国产精品∧v在线观看| 欧美日本激情| 西青区| 伊伊人成亚洲综合人网7777| 影音先锋啪啪av资源网站| 国产精品久久久久影院老司| 日日猛噜噜狠狠扒开双腿小说| 精品国产午夜理论片不卡| 一区二区三区午夜无码视频| 精品无码国产污污污免费| 中文国产日韩欧美二视频| 在线看免费无码av天堂| 久久这里有精品国产电影网| 国产精品亚洲精品日韩已满十八小| 加勒比无码人妻东京热| 楚雄市| 国产成人亚洲日韩欧美| 爱性久久久久久久久| 欧美午夜精品久久久久久浪潮| 久久97超碰色中文字幕| 国产午夜亚洲精品福利| 临泉县| 欧美牲交a欧美牲交aⅴ免费真| 午夜福利在线观看入口| 最近中文字幕国产精品| 色老头在线一区二区三区| 国产超高清麻豆精品传媒麻豆精品| 99久久国产综合精品成人影院| 精品国产一区二区三区性色| 亚洲人妻一区二区精品| 亚洲无av在线中文字幕| 人妻少妇无码精品专区| 欧美黑人添添高潮a片www| 精品久久久久久无码不卡| 欧美精品人人做人人爱视频 | 国产综合久久久久久鬼色| 国产激情文学亚洲区综合| 五月天天天综合精品无码| 国产强奷在线播放免费| 男女激情一区二区三区| 亚州少妇无套内射激情视频|