.NET 9 发布了,有哪些令人激动的特性?

.NET 9 是微软宣布的最新版本,它被认为是迄今为止最高效、最现代、最安全、最智能、性能最高的 .NET 版本。

.NET 9 发布了,有哪些令人激动的特性?_第1张图片

一、.NET 9 的一些主要特点和改进

  1. 性能提升:.NET 9 包含了超过1000项与性能相关的改进,这些改进覆盖了运行时、工作负载和语言,通过更高效的算法生成更好的代码。Server GC(垃圾回收)经过重大改变,以适应应用程序的内存需求,而不是环境中可用的资源(内存和CPU)。TechEmpower 基准测试显示 .NET 9 在吞吐量上更高,内存使用量显著下降。

  2. .NET Aspire:.NET Aspire 9 带来了一些用户最需要的功能,以帮助简化应用程序开发。现在可以从仪表板启动和停止资源,保持容器在调试会话之间存活,并访问包括 WaitFor 在内的新 API,以更好地管理资源启动。

  3. 人工智能(AI)生态系统:.NET 继续扩展构建和注入应用程序的 AI 功能。新的学习材料和示例、简化的集成、与合作伙伴的合作,以及将 AI 解决方案部署到云端都变得更加无缝。

  4. AI 构建块:.NET 9 引入了通过 Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData 包的统一 C# 抽象层,这些抽象层促进了与 AI 服务的交互,包括小型和大型语言模型(SLM 和 LLM)、嵌入、向量存储和中间件。

  5. ASP.NET Core 和 Blazor:ASP.NET Core 是 .NET 的全栈 Web 框架,提供了构建现代 Web 应用和可扩展后端服务所需的一切。.NET 9 中的 ASP.NET Core 应用默认安全,扩展了对预先编译的支持,改进了监控和跟踪,并且性能提升。

  6. OpenAPI 增强:ASP.NET Core 中的 OpenAPI 功能也得到了增强,提供了更多的功能和改进。

  7. .NET SDK:.NET 9 SDK 引入了工作负载集,其中所有工作负载都保持在单一特定版本,直到显式更新。此外,.NET SDK 可以检测和调整 .NET SDK 和 MSBuild 之间的版本不匹配问题。

  8. AI 张量类型:.NET 9 包括新的张量类型,扩展了 AI 功能。TensorPrimitives 和新的 Tensor 类型通过支持高效编码、操作和计算多维数据,扩展了 AI 功能。

  9. 安全性提升:.NET 9 默认启用了控制流执行技术(CET),这显著提高了安全性,通过硬件强制的栈保护来防止返回导向编程(ROP)漏洞利用。

.NET 9 发布了,有哪些令人激动的特性?_第2张图片

这些改进使得 .NET 9 成为一个强大的平台,用于构建现代、高性能和安全的应用程序,并且进一步集成了 AI 功能。

.NET 9 发布了,有哪些令人激动的特性?_第3张图片

.NET 9 发布了,有哪些令人激动的特性?_第4张图片

二、.NET 9 在人工智能领域的应用创新

.NET 9 在人工智能领域的应用带来了多项创新,主要包括以下几个方面:

  1. AI生态系统扩展:.NET 9 提供了新的学习材料和样例,简化了与.NET生态系统的集成,并与Azure、OpenAI、LlamaIndex、Qdrant、Pinecone、Milvus、AutoGen、OllamaSharp、ONNX Runtime等合作伙伴合作,构建了一个强大的AI生态系统。

  2. AI构建块:.NET 9 引入了新的抽象来简化AI集成,包括Microsoft.Extensions.AI和Microsoft.Extensions.VectorData,为与AI服务交互提供了统一的C#抽象层。这些抽象支持小型和大型语言模型(SLM和LLM)、嵌入、向量存储和中间件。

  3. 张量和分词器:.NET 9 中引入了新的Tensor类型,用于表示多维数据,简化了库和应用操作之间的互操作性。同时,Microsoft.ML.Tokenizers支持多种标记化算法,包括字节级BPE、SentencePiece和WordPiece,改进了对流行模型系列(如GPT、Llama、Phi和Bert)的标记器支持。

  4. GPU加速:.NET 9 中的GPU加速比以往任何时候都更容易获得,包括用于高效多维数组运算的新Tensor类型,CUDA互操作改进,以及与Nvidia的cuDNN库集成,用于深度学习基元。

  5. 简化的AI模型部署:.NET 9 通过新的ASP.NET Core集成简化了AI模型部署,包括新项目模板、模型终端节点的自动OpenAPI/Swagger文档、内置模型版本控制和A/B测试支持,以及使用gRPC集成提供可扩展的模型服务。

  6. 新的数值API:.NET 9 引入了新的数值API,以实现高效的张量和矩阵运算,包括System.Numerics.Tensor用于高效的张量运算和System.Numerics.Matrix用于矩阵代数,以及SIMD加速线性代数例程。

  7. GitHub Copilot增强功能:.NET 9 强调了为.NET开发者改进的GitHub Copilot集成,包括用于调试的AI智能变量检查、AI驱动的IEnumerable可视化工具、改进的代码修复功能、增强的C# AI补全以及协助调试失败的测试。

这些创新使得.NET 9成为一个强大的平台,用于构建现代、高性能和安全的AI应用程序。

.NET 9 发布了,有哪些令人激动的特性?_第5张图片 

三、.NET 9 具体AI示例

openai调用

dotnet add package OpenAI --version 1.0.0

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace AIExample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var apiKey = "your_openai_api_key"; // 替换为你的OpenAI API密钥
            var prompt = "Once upon a time in a land far, far away...";
            var response = await GenerateTextAsync(apiKey, prompt);
            Console.WriteLine(response);
        }

        static async Task GenerateTextAsync(string apiKey, string prompt)
        {
            var url = "https://api.openai.com/v1/engines/davinci-codex/completions";
            var requestBody = new
            {
                prompt = prompt,
                max_tokens = 50,
                n = 1,
                stop = null,
                temperature = 0.7
            };

            using var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", apiKey);
            httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            var json = JsonConvert.SerializeObject(requestBody);
            var content = new StringContent(json, Encoding.UTF8, "application/json");

            var response = await httpClient.PostAsync(url, content);
            response.EnsureSuccessStatusCode();

            var responseBody = await response.Content.ReadAsStringAsync();
            var result = JsonConvert.DeserializeObject(responseBody);
            return result.choices[0].text.Trim();
        }
    }
}

在这个示例中,我们使用了OpenAI的API来生成一段基于给定提示词的文本。以下是代码的主要步骤:

  1. 设置API密钥:将apiKey变量替换为你自己的OpenAI API密钥。
  2. 定义提示词:在prompt变量中输入你想要生成文本的起始内容。
  3. 调用API:通过HTTP请求向OpenAI的API发送请求,并获取响应。
  4. 处理响应:解析API返回的JSON数据,提取生成的文本并输出到控制台。

其他例子

NuGet Gallery | Microsoft.Extensions.AI.Abstractions 9.0.0-preview.9.24556.5Abstractions for generative AI.icon-default.png?t=O83Ahttps://www.nuget.org/packages/Microsoft.Extensions.AI.Abstractions/ .NET 9 发布了,有哪些令人激动的特性?_第6张图片

你可能感兴趣的:(笔记,.net)