如何使用Microsoft.Extensions.AI简化.NET中的AI集成

 更新时间:2024年11月27日 11:27:27   作者:追逐时光者  
Microsoft.Extensions.AI是一个创新的 .NET 库,它为平台开发人员提供了一个内聚的 C# 抽象层,简化了与大型语言模型(LLMs)和嵌入等AI服务的交互,本文给大家介绍如何使用Microsoft.Extensions.AI简化.NET中的AI集成,感兴趣的朋友一起看看吧

项目介绍

Microsoft.Extensions.AI是一个创新的 .NET 库,它为平台开发人员提供了一个内聚的 C# 抽象层,简化了与大型语言模型 (LLMs) 和嵌入等 AI 服务的交互。它支持通过一组一致且标准化的 API 和约定将 AI 功能无缝集成到 .NET 应用程序中。

注意:目前Microsoft.Extensions.AI还是处于预览版,预计该库将在2024年11月的.NET 9版本之前都是保持预览状态(需要收集反馈意见),耐心等待微软官方发布正式版!

项目特色

  • 统一的API:提供一组一致的 API 和约定,用于将 AI 服务集成到 .NET 应用程序中。
  • 灵活性:允许 .NET 库作者使用 AI 服务,而无需绑定到特定提供商,使其适用于任何提供商。
  • 易用性:使 .NET 开发人员能够使用相同的底层抽象试验不同的包,并在整个应用程序中维护单个 API。
  • 组件化:简化新功能的添加,并促进应用程序的组件化和测试。

项目作用

Microsoft.Extensions.AI类库不仅简化了AI功能的集成,还促进了.NET生态系统的创新。它使得开发者可以更加专注于应用程序的业务逻辑和功能实现,而不必花费大量时间和精力在AI服务的集成和调试上。

项目NuGet包

https://www.nuget.org/packages/Microsoft.Extensions.AI

命令安装:

dotnet add package Microsoft.Extensions.AI --version 9.0.0-preview.9.24556.5

AI服务的常见抽象

IChatClient 接口允许使用语言模型,无论是远程托管还是本地运行。任何提供 AI 客户端的 .NET 包都可以实现此接口,从而实现与正在使用的 .NET 代码的无缝集成。

public interface IChatClient : IDisposable 
{ 
    Task<ChatCompletion> CompleteAsync(...); 
    IAsyncEnumerable<StreamingChatCompletionUpdate> CompleteStreamingAsync(...); 
    ChatClientMetadata Metadata { get; } 
    TService? GetService<TService>(object? key = null) where TService : class; 
} 

OpenAI

using OpenAI;
using Microsoft.Extensions.AI;
IChatClient client =
    new OpenAIClient(Environment.GetEnvironmentVariable("OPENAI_API_KEY"))
        .AsChatClient(modelId: "gpt-4o-mini");
var response = await client.CompleteAsync("C#是什么?");
Console.WriteLine(response.Message);

Azure OpenAI

using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Extensions.AI;
IChatClient client =
    new AzureOpenAIClient(
        new Uri(Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")), 
        new DefaultAzureCredential())
            .AsChatClient(modelId: "gpt-4o-mini");
var response = await client.CompleteAsync("C#是什么?");
Console.WriteLine(response.Message);

参考文章

https://devblogs.microsoft.com/dotnet/introducing-microsoft-extensions-ai-preview

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

  • 开源地址:https://github.com/dotnet/extensions

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

  • GitHub开源地址:https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md
  • Gitee开源地址:https://gitee.com/ysgdaydayup/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

到此这篇关于使用Microsoft.Extensions.AI简化.NET中的AI集成的文章就介绍到这了,更多相关Microsoft.Extensions.AI AI集成内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • asp.net 初始化文本框的小例子

    asp.net 初始化文本框的小例子

    这篇文章介绍了asp.net 初始化文本框的小例子,有需要的朋友可以参考一下,希望对你有所帮助
    2013-07-07
  • .NET Core剪裁器背后的技术及工作原理介绍

    .NET Core剪裁器背后的技术及工作原理介绍

    这篇文章主要介绍了揭秘.NET Core剪裁器背后的技术,很多朋友对于这个开源项目的原理很感兴趣,因此我将通过这篇文章为大家介绍它的工作原理,需要的朋友可以参考下
    2022-03-03
  • ASP .NET Core API发布与部署以及遇到的坑和解决方法

    ASP .NET Core API发布与部署以及遇到的坑和解决方法

    这篇文章主要介绍了ASP .NET Core API发布与部署以及遇到的坑和解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • GMap.Net开发之自定义Marker使用方法

    GMap.Net开发之自定义Marker使用方法

    这篇文章主要介绍了GMap中Marker的使用方法,有需要的朋友可以参考一下
    2013-12-12
  • 学习制作MVC4分页控件(下)

    学习制作MVC4分页控件(下)

    这篇文章主要教大家学习制作MVC4分页控件,自己动手编写HtmlHelper-Pager分页控件,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • ASP.NET MVC实现路由功能

    ASP.NET MVC实现路由功能

    这篇文章介绍了ASP.NET MVC实现路由功能的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • .net开发:为程式码加上行号的方法详解

    .net开发:为程式码加上行号的方法详解

    这篇文章介绍了.net开发:为程式码加上行号的方法,有需要的朋友可以参考一下
    2013-11-11
  • ASP.NET数据绑定之DataList控件

    ASP.NET数据绑定之DataList控件

    这篇文章主要为大家介绍了ASP.NET数据绑定中的DataList控件,DataList控件以表的形式呈现数据,通过该控件,您可以使用不同的布局来显示数据记录,对DataList控件感兴趣的小伙伴们可以参考一下
    2016-01-01
  • ASP.NET实现的简单易用文件上传类

    ASP.NET实现的简单易用文件上传类

    这篇文章主要介绍了ASP.NET实现的简单易用文件上传类,本文给出实现代码和使用方法示例,需要的朋友可以参考下
    2015-06-06
  • .NET Core中的HttpClientFactory类用法详解

    .NET Core中的HttpClientFactory类用法详解

    本文详细讲解了.NET Core中的HttpClientFactory类的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03

最新评论