项目背景
当前 .NET 生态中已经存在两套非常优秀的抽象:

OpenAI 官方 SDK(.NET)
Microsoft.Extensions.AI 抽象层
但它们默认只支持 OpenAI 端点,而 Moonshot Kimi 提供的是 OpenAI 兼容接口。

openai SDK 中的 ChoiceDelta 和 ChatCompletionMessage 类型并不提供 reasoning_content 字段,因此无法直接通过 .reasoning_content 的方式访问该字段,仅支持通过 hasattr(obj, “reasoning_content”) 来判断是否存在字段,如果存在,则使用 getattr(obj, “reasoning_content”) 获取字段值 [输出思考内容 - Kimi API 开放平台]
因此只需要适配即可直接融入现有生态。

为此我创建了两个移植库:

moonshotai-dotnet
从 openai-dotnet 移植,提供 原生客户端能力

Moonshot.Extensions.AI
从 Microsoft.Extensions.AI.OpenAI 移植,提供 AI 抽象层支持

为了版本号和原本的库保持一致,所以只发行 beta 版本,以便可以随时修复bug

二者配合后即可直接接入:

Microsoft.Extensions.AI
Microsoft.Agents.AI
AgentFramework
Tool Calling
Function Calling
Streaming
设计目标

  1. 完全兼容现有 .NET AI 生态
    无需修改现有代码结构即可切换到 Moonshot Kimi:

保持 OpenAI SDK API 结构
保持 Microsoft.Extensions.AI 抽象
保持 AgentFramework 接口
2. 支持 Kimi 系列模型
例如:

kimi-k2.5
kimi-k2
kimi-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
通过扩展方法直接转换为 Agent:

AIAgent agent = chatClient
.AsIChatClient()
.AsAIAgent(
instructions: “你是一个智能助手。”,
name: “Agent Assistant”,
tools: [AIFunctionFactory.Create(MenuTools.GetWeather)]);
调用:

var res = await agent.RunAsync(“今天昆明天气怎么样?”);
Console.WriteLine(res);
定义工具函数
AgentFramework 支持直接从 C# 方法生成 Tool:

class 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 Agent
RAG + Agent 系统
自动化工作流
Copilot 类应用
总结
通过这两个移植库,可以在 .NET 中非常轻松地使用 Moonshot Kimi:

保持 OpenAI SDK 编程体验
无缝接入 Microsoft AI 抽象

更多推荐