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

一、.NET 9 的一些主要特点和改进
-
性能提升:.NET 9 包含了超过1000项与性能相关的改进,这些改进覆盖了运行时、工作负载和语言,通过更高效的算法生成更好的代码。Server GC(垃圾回收)经过重大改变,以适应应用程序的内存需求,而不是环境中可用的资源(内存和CPU)。TechEmpower 基准测试显示 .NET 9 在吞吐量上更高,内存使用量显著下降。
-
.NET Aspire:.NET Aspire 9 带来了一些用户最需要的功能,以帮助简化应用程序开发。现在可以从仪表板启动和停止资源,保持容器在调试会话之间存活,并访问包括
WaitFor在内的新 API,以更好地管理资源启动。 -
人工智能(AI)生态系统:.NET 继续扩展构建和注入应用程序的 AI 功能。新的学习材料和示例、简化的集成、与合作伙伴的合作,以及将 AI 解决方案部署到云端都变得更加无缝。
-
AI 构建块:.NET 9 引入了通过 Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData 包的统一 C# 抽象层,这些抽象层促进了与 AI 服务的交互,包括小型和大型语言模型(SLM 和 LLM)、嵌入、向量存储和中间件。
-
ASP.NET Core 和 Blazor:ASP.NET Core 是 .NET 的全栈 Web 框架,提供了构建现代 Web 应用和可扩展后端服务所需的一切。.NET 9 中的 ASP.NET Core 应用默认安全,扩展了对预先编译的支持,改进了监控和跟踪,并且性能提升。
-
OpenAPI 增强:ASP.NET Core 中的 OpenAPI 功能也得到了增强,提供了更多的功能和改进。
-
.NET SDK:.NET 9 SDK 引入了工作负载集,其中所有工作负载都保持在单一特定版本,直到显式更新。此外,.NET SDK 可以检测和调整 .NET SDK 和 MSBuild 之间的版本不匹配问题。
-
AI 张量类型:.NET 9 包括新的张量类型,扩展了 AI 功能。TensorPrimitives 和新的 Tensor<T> 类型通过支持高效编码、操作和计算多维数据,扩展了 AI 功能。
-
安全性提升:.NET 9 默认启用了控制流执行技术(CET),这显著提高了安全性,通过硬件强制的栈保护来防止返回导向编程(ROP)漏洞利用。

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


二、.NET 9 在人工智能领域的应用创新
.NET 9 在人工智能领域的应用带来了多项创新,主要包括以下几个方面:
-
AI生态系统扩展:.NET 9 提供了新的学习材料和样例,简化了与.NET生态系统的集成,并与Azure、OpenAI、LlamaIndex、Qdrant、Pinecone、Milvus、AutoGen、OllamaSharp、ONNX Runtime等合作伙伴合作,构建了一个强大的AI生态系统。
-
AI构建块:.NET 9 引入了新的抽象来简化AI集成,包括Microsoft.Extensions.AI和Microsoft.Extensions.VectorData,为与AI服务交互提供了统一的C#抽象层。这些抽象支持小型和大型语言模型(SLM和LLM)、嵌入、向量存储和中间件。
-
张量和分词器:.NET 9 中引入了新的
Tensor<T>类型,用于表示多维数据,简化了库和应用操作之间的互操作性。同时,Microsoft.ML.Tokenizers支持多种标记化算法,包括字节级BPE、SentencePiece和WordPiece,改进了对流行模型系列(如GPT、Llama、Phi和Bert)的标记器支持。 -
GPU加速:.NET 9 中的GPU加速比以往任何时候都更容易获得,包括用于高效多维数组运算的新Tensor<T>类型,CUDA互操作改进,以及与Nvidia的cuDNN库集成,用于深度学习基元。
-
简化的AI模型部署:.NET 9 通过新的ASP.NET Core集成简化了AI模型部署,包括新项目模板、模型终端节点的自动OpenAPI/Swagger文档、内置模型版本控制和A/B测试支持,以及使用gRPC集成提供可扩展的模型服务。
-
新的数值API:.NET 9 引入了新的数值API,以实现高效的张量和矩阵运算,包括System.Numerics.Tensor<T>用于高效的张量运算和System.Numerics.Matrix<T>用于矩阵代数,以及SIMD加速线性代数例程。
-
GitHub Copilot增强功能:.NET 9 强调了为.NET开发者改进的GitHub Copilot集成,包括用于调试的AI智能变量检查、AI驱动的IEnumerable可视化工具、改进的代码修复功能、增强的C# AI补全以及协助调试失败的测试。
这些创新使得.NET 9成为一个强大的平台,用于构建现代、高性能和安全的AI应用程序。
三、.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<string> 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<dynamic>(responseBody);
return result.choices[0].text.Trim();
}
}
}
在这个示例中,我们使用了OpenAI的API来生成一段基于给定提示词的文本。以下是代码的主要步骤:
- 设置API密钥:将
apiKey变量替换为你自己的OpenAI API密钥。 - 定义提示词:在
prompt变量中输入你想要生成文本的起始内容。 - 调用API:通过HTTP请求向OpenAI的API发送请求,并获取响应。
- 处理响应:解析API返回的JSON数据,提取生成的文本并输出到控制台。

761

被折叠的 条评论
为什么被折叠?



