Microsoft.Extensions.AI介绍
Microsoft.Extensions.AI介绍
Microsoft.Extensions.AI定位于.NET系统AI框架的底层,提供常用的核心接口,比如IChatClient,它目的是抽象出一系列的方法,无论日后用什么AI框架,都可以无缝衔接。接口也比较简单,主要围绕2个接口:
IChatClient:和AI聊天有关,可以是文本,图片,音频等IEmbeddingGenerator<TInput, TEmbedding>:和向量有关,毕竟大模型底层玩的是向量,作为开发者,你肯定离不开向量的

简单使用
OpenAI API都快作为行业标准了,很多大模型都是支持这个的,所以对于兼容OpenAI API的服务,Microsoft.Extensions.AI.OpenAI中有OpenAIClient
1 | OpenAIClientOptions clientOptions = new OpenAIClientOptions(); |
- 有很多本地部署的可以用
OllamaSharp,var aiClient = new OllamaApiClient(arguments.Uri, arguments.Model);
IChatClient
- 简单聊天使用
1 | OpenAIClientOptions clientOptions = new OpenAIClientOptions(); |
- 用流式响应的方式
1 | ChatResponse response = await chatService.GetResponseAsync("你好"); |
- 获得服务的元数据,如大模型
var meta = chatService.GetRequiredService<ChatClientMetadata>();

总结
IChatClient的三大方法:
| 方法 | 返回值 |
|---|---|
GetResponseAsync | 普通聊天,返回ChatResponse,一组消息和元信息 |
GetStreamingResponseAsync | 响应式聊天,返回IAsyncEnumerable<ChatResponseUpdate> |
GetRequiredService | 获得服务的元数据 |
IEmbeddingGenerator
- 简单使用,本处使用
Azure OpenAI
1 | var azureEndpoint = new Uri("https:...."); |

- 上面的案例会返回包括向量的完整信息,如果只想获得向量,可以这样,只获得
Vector向量
1 | ReadOnlyMemory<float> singleVector = await embeddingGenerator.GenerateVectorAsync("测试向量1"); |

- 也可以获得向量生成器的一些元信息
1 | var embeddingMeata = embeddingGenerator.GetRequiredService<EmbeddingGeneratorMetadata>(); |

Microsoft.Extensions.AI介绍

