当前位置: 首页 > news >正文

连接 AI 模型和配置 MCP

使用 SemanticKernel 框架对接 LLM,将 MCP Tool 转换为 Function 添加到对话上下文中。

var aiModel = configuration.GetSection("AIModel"); var builder = Kernel.CreateBuilder() .AddAzureOpenAIChatCompletion( deploymentName: aiModel["ModelId"], endpoint: aiModel["Endpoint"], apiKey: aiModel["Key"]); builder.Services.AddLogging(s => { s.AddConsole(); }); Kernel kernel = builder.Build(); // 这里将 mcp 转换为 functaion call kernel.Plugins.AddFromFunctions("amap", tools.Select(aiFunction => aiFunction.AsKernelFunction())); var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>(); OpenAIPromptExecutionSettings openAIPromptExecutionSettings = new() { Temperature = 0, FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(options: new() { RetainArgumentTypes = true }) };

第三步:对话交互

编写控制台与用户对话交互。

var history = new ChatHistory(); string? userInput; do { Console.Write("用户提问 > "); userInput = Console.ReadLine(); history.AddUserMessage(userInput!); var result = await chatCompletionService.GetChatMessageContentAsync( history, executionSettings: openAIPromptExecutionSettings, kernel: kernel); Console.WriteLine("AI 回答 > " + result); history.AddMessage(result.Role, result.Content ?? string.Empty); } while (userInput is not null);

演示地图规划

注意,由于高德地图免费额度限流,而 AI 对话时可能有多次对 MCP Server 请求,因此有时候效果并不是那么好。

1. 智能旅游路线规划

最多支持16个途经点的旅游路线规划,自动计算最优顺序,并提供可视化地图链接。

使用示例

请帮我规划一条上海三日游路线,包括外滩、东方明珠、迪士尼、豫园、南京路,并提供可视化地图

2. 景点搜索与详情查询

查询景点的详细信息,包括评分、开放时间、门票价格等。

使用示例:

请查询黄山风景区的开放时间、门票价格和旅游季节推荐

AI 是怎么识别调用 MCP

在编写高德地图规划时,有一段代码是将 MCP 服务器的接口转换为 Function 的,代码如下:

kernel.Plugins .AddFromFunctions("amap", tools.Select(aiFunction => aiFunction.AsKernelFunction()))

其实在这里就可以下结论,并不是 AI 模型直接调用 MCP Server 的,依然 Client 进行是 Function call 。

通过拦截 http 请求可以发现,当用户输入请帮我规划一条上海三日游路线,包括外滩、东方明珠、迪士尼、豫园、南京路,并提供可视化地图时,客户端首先将用户提问和 mcp 服务所提供的 function call 一起发送到 AI 模型服务器。

对话时,Client 提供给 LLM 的 Function (MCP Tool)列表。

然后 AI 回答要调用的 Function call 步骤和参数,接着由客户端实现将 Function 定位 MCP Server,并顺序调用每个 Tool。

LLM 返回要顺序调用的 Function 列表以及参数:

客户端将每个 Function 的执行结果和用户的提问等信息,一起再次提交给 AI 模型服务器。

由于高德接口并发限制,有部分接口调用失败,那么客户端可能会来回请求多次,最后输出 AI 的回答。

到这里,读者应该明白 MCP Tool、Plugin、Function Call 的关系了吧!

实现 Mcp Server

前面笔者介绍了 MCP Tool,但是 MCP Server 还可以提供很多很有用的功能,MCP 协议定义了以下核心模块:

  • Core architecture
  • Resources
  • Prompts
  • Tools
  • Sampling
  • Roots
  • Transports

作为当前社区中最关注的 Tools,本文已经单独介绍,接下来将会以继续讲解其它功能模块。

实现 Resources

示例项目参考:ResourceServer、ResourceClient。

Resources 定义:Resources 是 Model Context Protocol (MCP) 中的一个核心原语,它允许服务器暴露可以被 clients 读取并用作 LLM 交互上下文的数据和内容。

Resources 代表 MCP server 想要提供给 clients 的任何类型的数据,在使用上,MCP Server 可以给每种资源定义一个 Uri,这个 Uri 的协议格式可以是虚拟的,这不重要,只要是能够定位资源的一段 Uri 字符串即可。

只看定义,读者可能不理解什么意思,没关系,等后面动手做的时候就知道了。

http://www.jsqmd.com/news/1112017/

相关文章:

  • 如何快速上手utsudo?从安装到日常使用的完整指南
  • 终极指南:如何一键下载百度文库等30+平台文档?kill-doc免费工具全解析
  • 5分钟掌握百度网盘秒传工具:高效文件转存的终极指南
  • 如何轻松获取国家中小学智慧教育平台电子教材PDF完整指南
  • Selenium元素定位全攻略:从基础到实战,打造稳定自动化脚本
  • Java接口自动化测试实战:从JUnit 5到RestAssured的完整指南
  • Python爬虫经典案例第60篇:邮件平台爬取:Gmail数据采集实战
  • Appium WebView自动化测试:从原理到实战的环境搭建与避坑指南
  • JMeter恒定吞吐量定时器原理与实战:精准控制TPS的性能测试指南
  • Locust混合业务性能测试实战:从设计到脚本的完整指南
  • 三步搞定VK视频下载:告别在线观看限制的终极方案
  • 告别复杂制图软件,okbiye AI 科研绘图线上一键生成学术标准图表
  • Burpsuite Intruder自动化越权测试:Cookie替换实战指南
  • GPT-5.5自动生成测试用例怎么选?TDD实战教程与Mock工具盘点清单
  • AI量化金融:技术架构与实战指南
  • Nintendo Switch大气层系统架构设计与分层式安全监控实现方案
  • JMeter接口测试全流程实战:从环境搭建到性能瓶颈定位
  • HAR文件转pytest测试用例:接口自动化效率提升300%
  • MATLAB一键解析IGS电离层IONEX文件并提取经纬度网格TEC值
  • JMeter性能测试实战:从环境搭建到瓶颈分析的全流程指南
  • Selenium文件上传自动化:三种方案原理与实战避坑指南
  • 如何将钢琴录音自动转换为专业乐谱:开源音乐转录工具完整指南
  • Java Swing实现的SQL Server工资管理桌面程序(含完整源码与可运行class文件)
  • Codex 多平台配置同步教程
  • EulerPublisher开发者指南:如何扩展新云厂商支持和自定义构建流程
  • 二进制逆向工程系统化学习路径:从零到实战的完整指南
  • C++ OpenCV灰度图像增强三合一工具:对比度拉伸+伽马校正+直方图均衡化
  • JMeter 5.1.1整合Dubbo插件实现微服务性能测试实战指南
  • 自然语言驱动Playwright自动化测试:基于MCP协议的零代码实践
  • 嵌入式电源管理:TPS65263与PIC18F87J10的高效协同设计