在 .NET 中使用 Moonshot Kimi + AgentFramework:从 SDK 到 Agent 的完整实践

张开发
2026/6/9 19:00:29 15 分钟阅读
在 .NET 中使用 Moonshot Kimi + AgentFramework:从 SDK 到 Agent 的完整实践
项目背景当前 .NET 生态中已经存在两套非常优秀的抽象OpenAI 官方 SDK.NETMicrosoft.Extensions.AI 抽象层但它们默认只支持 OpenAI 端点而 Moonshot Kimi 提供的是OpenAI 兼容接口。openai SDK 中的ChoiceDelta和ChatCompletionMessage类型并不提供reasoning_content字段因此无法直接通过.reasoning_content的方式访问该字段仅支持通过hasattr(obj, reasoning_content)来判断是否存在字段如果存在则使用getattr(obj, reasoning_content)获取字因此只需要适配即可直接融入现有生态。为此我创建了两个移植库moonshotai-dotnet从openai-dotnet移植提供原生客户端能力Moonshot.Extensions.AI从Microsoft.Extensions.AI.OpenAI移植提供AI 抽象层支持为了版本号和原本的库保持一致所以只发行 beta 版本以便可以随时修复bug二者配合后即可直接接入Microsoft.Extensions.AIMicrosoft.Agents.AIAgentFrameworkTool CallingFunction CallingStreaming设计目标1. 完全兼容现有 .NET AI 生态无需修改现有代码结构即可切换到 Moonshot Kimi保持 OpenAI SDK API 结构保持 Microsoft.Extensions.AI 抽象保持 AgentFramework 接口2. 支持 Kimi 系列模型例如kimi-k2.5kimi-k2kimi-1.5以及后续新模型3. 可直接构建 Agent通过AsAIAgent()扩展即可转换为 AgentFramework Agent。安装两个库可以分别使用也可以组合使用。通常推荐组合SDK负责底层 API 调用Extensions负责 Agent 与抽象层基础使用首先创建 Moonshot OpenAI 兼容客户端using Microsoft.Extensions.AI; using Microsoft.Agents.AI; using OpenAI; using System.ClientModel; var client new OpenAIClient( new ApiKeyCredential(YOUR API KEY), new OpenAIClientOptions() { Endpoint new Uri(https://api.moonshot.cn/v1), });选择 Kimi 模型var chatClient client.GetChatClient(kimi-k2.5);构建 Agent通过扩展方法直接转换为 AgentAIAgent agent chatClient .AsIChatClient() .AsAIAgent( instructions: 你是一个智能助手。, name: Agent Assistant, tools: [AIFunctionFactory.Create(MenuTools.GetWeather)]);调用var res await agent.RunAsync(今天昆明天气怎么样); Console.WriteLine(res);定义工具函数AgentFramework 支持直接从 C# 方法生成 Toolclass MenuTools { [Description(获取指定地点的天气情况。)] public static string GetWeather( [Description(获取天气信息的地点。)] string location) ${location} 的天气多云最高气温为 14°C。; }运行结果示例昆明 的天气多云最高气温为 14°C。Agent 会自动识别用户意图调用工具函数返回结果无需手动解析 Function Call。架构关系整体调用链如下Moonshot Kimi API ↑ moonshotai-dotnet ↑ Moonshot.Extensions.AI ↑ Microsoft.Extensions.AI ↑ Microsoft.Agents.AI ↑ AgentFramework这意味着可以直接使用现有 Agent 代码可以复用 Tool 生态可以与 Semantic Kernel 等共存与直接调用 API 的区别直接调用需要手写 function call 解析需要维护上下文需要手动调度工具使用 AgentFramework自动工具调用自动上下文管理支持多工具协作支持复杂 Agent使用场景适用于企业内部智能助手多工具 AI AgentRAG Agent 系统自动化工作流Copilot 类应用总结通过这两个移植库可以在 .NET 中非常轻松地使用 Moonshot Kimi保持 OpenAI SDK 编程体验无缝接入 Microsoft AI 抽象直接构建 Agent支持 Tool Calling支持复杂 Agent 编排

更多文章