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

.NET+AI | Agent | Agent as Function (14)

Agent 转换为工具:实现 Agent 嵌套调用

一句话简介

MAF 提供两种方式将 Agent 转换为可复用工具:AsAIFunction()用于应用内嵌套,MCP 工具用于跨平台互操作。


🎯 核心价值

  • 复用性:将 Agent 封装为工具,在不同场景下复用

  • 两种模式:AsAIFunction(进程内)和 MCP Tool(跨平台)

  • 组合能力:通过 Agent 嵌套构建复杂业务逻辑


📝 两种复用模式对比

特性

AsAIFunction

AsMcpTool

适用场景

应用内嵌套调用

跨应用、跨平台调用

性能

⚡ 高(进程内调用)

🔌 中(进程间通信)

互操作性

🔒 .NET 限定

🌐 支持任何 MCP 客户端

调试工具

无专用工具

MCP Inspector

复杂度

⭐ 简单

⭐⭐ 中等


💻 方式一:AsAIFunction

场景:应用内 Agent 嵌套

实现步骤

// 1️⃣ 创建子 Agent(天气助手) var weatherAgent = chatClient.CreateAIAgent( instructions: "你是天气查询助手", name: "WeatherAgent", tools: [AIFunctionFactory.Create(GetWeather)] ); // 2️⃣ 转换为 AIFunction var weatherFunction = weatherAgent.AsAIFunction(); // 3️⃣ 注册到主 Agent var travelAgent = chatClient.CreateAIAgent( instructions: "你是旅行助手,可以调用天气助手查询天气", name: "TravelAgent", tools: [weatherFunction] // 注册子 Agent 作为工具 );

核心要点:

  • 🔧AsAIFunction()将整个 Agent 封装为函数

  • 🔧 子 Agent 保留完整能力(包括工具调用)

  • 🔧 适用于层次化 Agent 架构


💻 方式二:MCP Tool

场景:跨平台 Agent 调用

实现步骤

// 1️⃣ 将 Agent 转换为 MCP 工具 var weatherAgentFunction = weatherAgent.AsAIFunction(); var weatherMcpTool = McpServerTool.Create(weatherAgentFunction); // 2️⃣ 创建 MCP Server 并注册工具 var (mcpClient, mcpServer) = await McpHelper.CreateInMemoryClientAndServerAsync( tools: [weatherMcpTool] ); // 3️⃣ 通过 MCP 调用 var result = await mcpClient.CallToolAsync( toolName: "WeatherAgent", arguments: new Dictionary<string, object> { { "query", "北京天气" } } );

核心要点:

  • 🌐 任何 MCP 客户端都可以调用(Claude、VS Code 等)

  • 🌐 使用Cast<AIFunction>()将 MCP 工具转换回 AIFunction

  • 🌐 支持跨语言、跨平台互操作


🏢 企业级实战:多 Agent 协作

智能客服系统

// 创建多个专项 Agent var weatherAgent = CreateWeatherAgent(); var orderAgent = CreateOrderAgent(); // 通过 MCP 获取外部服务 var couponMcpFunctions = await couponMcpClient.ListToolsAsync(); // 组合到主 Agent var mainAgent = chatClient.CreateAIAgent( instructions: "你是智能客服助手", tools: [ weatherAgent.AsAIFunction(), // 内部 Agent orderAgent.AsAIFunction(), // 内部 Agent ..couponMcpFunctions.Cast<AIFunction>() // 外部 MCP 工具 ] );

混合架构

主 Agent ├─ 内部 Agent (AsAIFunction) │ ├─ 订单处理 Agent │ └─ 库存查询 Agent └─ 外部服务 (MCP) ├─ 天气服务 └─ 物流追踪

🎯 总结

  • AsAIFunction:应用内嵌套,性能高,适合层次化架构

  • MCP Tool:跨平台互操作,支持 Claude/VS Code 等客户端

  • 混合使用:内部 Agent 用 AsAIFunction,外部服务用 MCP

  • 企业应用:构建可复用、可组合的 Agent 生态


如需获取文章配套完整代码,可扫码咨询领取。👇

http://www.zskr.cn/news/138234.html

相关文章:

  • LangFlow法律文书辅助撰写系统设计思路
  • 抖音下载工具无水印终极指南:实用技巧与高效方法
  • 如何在 Matplotlib 中创建自定义颜色调色板 – 离散与线性颜色映射,解释说明
  • 8 个降AI率工具,研究生必备!
  • Arduino IDE读取心率传感器数据的核心要点
  • 如何创建样式优美的 Streamlit Dataframes,第二部分:使用 AgGrid
  • 如何创建优雅的 Streamlit 数据框,第一部分:使用 Pandas Styler
  • MDK实现Modbus RTU通信操作指南
  • LangFlow远程医疗问诊前置筛查工具
  • 如何使用卫星图像创建你自己的 CV 数据集:来自太空的野火
  • LangFlow代码生成辅助工具实战搭建
  • 基于NX的智能制造解决方案:深度剖析
  • USB3.0引脚定义与连接器选型配合要点通俗解释
  • macOS窗口管理革命:Topit置顶工具的7种高效工作流配置
  • LangFlow微服务架构改造建议:适应大规模应用场景
  • milvus:存储检索高维向量的AI数据库
  • 基于协程的异步数据流Flow
  • Pulover‘s Macro Creator完整教程:从新手到专家的自动化革命
  • 轻松搞定TrollInstallerX:iOS越狱工具实战问题全解析
  • LangFlow学术论文摘要生成器搭建过程
  • PatreonDownloader:解锁创作者内容备份的终极方案
  • TrollInstallerX终极指南:快速解决iOS 14-16越狱安装失败问题
  • 3分钟掌握Topit窗口置顶:彻底解决macOS多任务效率难题
  • 阻塞队列的使用和实现
  • 【SOC状态估计】基于EKF和UKF电池充电状态和健康状态联合估计研究(Matlab代码实现)
  • Topit:3步解决Mac窗口遮挡难题,让你的关键内容始终置顶
  • Orange Pi上运行EmuELEC的常见问题:快速理解
  • 【SCI复现】电力系统储能调峰、调频模型研究(Matlab代码实现)
  • 轻松突破RPG Maker MV加密壁垒:全方位资源解密实战指南
  • 基于Java+大数据+SSM基于Hadoop的健康饮食推荐系统(源码+LW+调试文档+讲解等)/健康饮食建议系统/健康膳食推荐平台/健康饮食指导系统/营养饮食推荐系统