写点什么

技术速递|使用 Semantic Kernel 解锁 .NET 中 GitHub 模型的强大功能

  • 2024-12-07
    北京
  • 本文字数:2371 字

    阅读完需:约 8 分钟

大小:663.86K时长:03:46
技术速递|使用 Semantic Kernel 解锁 .NET 中 GitHub 模型的强大功能

本文将探索如何使用 Microsoft 的智能应用程序 Semantic Kernel 将 GitHub 的 AI 模型(如 GPT、Llama 和 Phi)集成到您的 .NET 应用程序中。


使用 Semantic Kernel 解锁 .NET 中 GitHub 模型的强大功能


人工智能的世界继续快速发展,GitHub 通过在 GitHub 市场上推出一套流行的大型语言模型(LLM),如 GPT、Llama 和 Phi,加入了这场竞争。这些模型可以帮助开发人员轻松构建强大的人工智能驱动应用程序。在本文中,我们将探讨 .NET 程序员如何利用这些模型并使用 Semantic Kernel 将它们集成到他们的应用程序中。


GitHub 模型简介


GitHub 通过推出 GitHub 模型(https://github.blog/news-insights/product-news/introducing-github-models)扩展了其工具包,这是一套行业领先的人工智能模型,旨在使超过 1 亿开发人员成为人工智能工程师。这些模型(如 Llama 3.1、GPT-4o 和 Phi-3.5)对于涉及自然语言处理 (NLP) 的任务特别有用。在 GitHub 市场中,它们为开发人员提供了一个内置的 Playground,让他们可以在 GitHub 中免费测试不同的提示和模型参数。


对于 .NET 开发人员来说,这些模型为创建能够理解和生成人类语言甚至代码的智能应用程序提供了新的可能性,从而更容易简化各种任务和流程。


Semantic Kernel:简要概述


Semantic Kernel (https://github.com/microsoft/semantic-kernel) 是 Microsoft 推出的一款轻量级可扩展框架,允许开发人员创建利用 LLM 和其他云服务(如 Azure AI Search)的复杂 AI 应用程序。它可轻松集成到您的 .NET 应用程序中,从而能够整合自然语言理解和生成功能。


借助 Semantic Kernel,您可以定义工作流程、对 LLM 的输出进行推理,并将模型链接在一起以创建更复杂的 AI 驱动体验。它充当大型语言模型和应用程序逻辑之间的桥梁。


将 GitHub 模型与 Semantic Kernel 结合使用


举一个实际的例子,让我们探索如何使用 Semantic Kernel 将 GitHub 模型集成到 C# 应用程序中。有一个 GitHub 存储库(https://github.com/elbruno/GithubModelsAndSemanticKernel)提供了如何实现此集成的工作示例。


以下是快速入门的分步指南:


步骤 1:安装必要的 NuGet 包


首先,确保您的 C# 项目中有所需的 NuGet 包:


dotnet add package Microsoft.SemanticKernel --version 1.18.2dotnet add package Microsoft.Extensions.Configuration.UserSecrets --version 9.0.0-rc.1.24431.7
复制代码


Semantic Kernel 包允许您通过 API 与 GitHub 模型进行交互。Microsoft 配置用户密钥用于存储和检索所需的 GitHub 令牌。


步骤 2:使用 GitHub Personal Access Token 设置项目密钥


生成一个新的 GitHub Personal Access Token(https://github.com/settings/tokens)。导航到 C# 项目的根目录并运行以下命令来添加令牌


dotnet user-secrets initdotnet user-secrets set "GH_PAT" "< PAT >"
复制代码


在存储库控制台示例应用程序(https://devblogs.microsoft.com/dotnet/github-ai-models-dotnet-semantic-kernel/)中,这些代码用于检索:


  • GitHub 模型,模型名称

  • GitHub 模型,模型端点

  • GitHub 个人访问令牌


var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();var modelId = "Phi-3.5-mini-instruct";var uri = "https://models.inference.ai.azure.com";var githubPAT = config["GH_PAT"];
复制代码


以下是如何使用密钥设置 modelId 和 uri 以及 GitHub PAT 的示例:



步骤 3:配置 Semantic Kernel 客户端以使用 GitHub 模型


接下来,设置语 Semantic Kernel 与 GitHub 模型 API 集成:


// 创建客户端var client = new OpenAIClient(new ApiKeyCredential(githubPAT), new OpenAIClientOptions { Endpoint = new Uri(uri) });
// 创建聊天完成服务var builder = Kernel.CreateBuilder();builder.AddOpenAIChatCompletion(modelId, client);
// 获得聊天完成服务Kernel kernel = builder.Build();var chat = kernel.GetRequiredService<IChatCompletionService>();
复制代码


步骤 4:运行应用程序


现在,定义您希望 GitHub 模型执行的任务。示例控制台应用程序是在控制台中运行的标准问答聊天:


var history = new ChatHistory();history.AddSystemMessage("You are a useful chatbot. If you don't know an answer, say 'I don't know!'. Always reply in a funny way. Use emojis if possible.");
while (true){ Console.Write("Q: ");     var userQ = Console.ReadLine();     if (string.IsNullOrEmpty(userQ))     {         break;     }     history.AddUserMessage(userQ);   var sb = new StringBuilder();     var result = chat.GetStreamingChatMessageContentsAsync(history);     Console.Write("AI: ");     await foreach (var item in result)     {         sb.Append(item);       Console.Write(item.Content);   }     Console.WriteLine();   history.AddAssistantMessage(sb.ToString());}
复制代码


可选:存储库已准备好使用 Codespaces 运行示例项目。聊天演示应用程序应如下所示:



总结


使用 Semantic Kernel 将 GitHub 模型集成到您的 .NET 应用程序中,为构建 AI 驱动的应用程序开辟了令人兴奋的可能性。借助 Semantic Kernel 等工具,您可以简化开发流程并创建更智能的应用程序。


如果您想深入了解此主题,请查看以下资源:


  • GitHub 模型简介

https://github.blog/news-insights/product-news/introducing-github-models

  • 带有 Semantic Kernel 集成的 GitHub 存储库

https://github.com/elbruno/GithubModelsAndSemanticKernel


祝您编码愉快!


更多精彩内容请点击下载

《Azure OpenAI 生成式人工智能白皮书》

《利用 AI 和 DevOps 重新定义开发人员体验》

《SAP on Microsoft Cloud》

《智能GitHub Copilot副驾驶®提示和技巧》

2024-12-07 18:005991

评论

发布
暂无评论
发现更多内容

Jira 私有化部署即将停服,你准备好了吗?

极狐GitLab

从 2.x 到 3.x,TDengine 在 3D 打印技术中的应用实践

TDengine

tdengine 时序数据库

实战Arthas:常见命令与最佳实践

Java随想录

Java 工具 Arthas 线上问题排查

LiveVideoStack人物专访:深耕多媒体二十载,他怎么看未来的视频云?

阿里云CloudImagine

云计算 视频云 多媒体

光纤的连接

小齐写代码

奖金 30 万!OurBMC 开源大赛等你来战

OurBMC

开放原子大赛 BMC全栈技术 ourBMC 飞腾服务器故障诊断

【年后跳槽必看篇-非广告】Kafka核心知识点-第二章

派大星

Java 面试

【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(文件处理指令-上)

洛神灬殇

Linux 技术分享 后端领域‘’ 2024年第十九篇文章

千万级高性能长连接Go服务架构实践

百度Geek说

golang 架构 高并发 长连接 企业号 1 月 PK 榜

一览2023 Web3 风云录

TechubNews

web3 香港Web3

微服务的拆分规范和原则

伤感汤姆布利柏

一个很热的国产低代码开发平台

2D3D前端可视化开发

物联网 低代码开发平台 数字孪生 前端设计 可视化开发

【第七在线】智能商品计划:让供应链管理更加智能、高效

第七在线

每个开发人员都应该知道的13个Nodejs库

南城FE

JavaScript 前端 nodejs

IPQ5018: Low-Cost OFDMA Supported WiFi 6 IIoT Solution DR5018

wallyslilly

ipq5018

动态规划-序列比对-Smith-Waterman

alexgaoyh

Java 动态规划 编辑距离 序列比对 Smith-Waterman

测试管理进阶 | 如何打造一份出彩的工作汇报!

测试人

软件测试 测试 自动化测试 测试开发 测试管理

别再因为React、Vue吵了,真的毫无新意!

伤感汤姆布利柏

技术速递|使用 Semantic Kernel 解锁 .NET 中 GitHub 模型的强大功能_微软_微软中国MSDN_InfoQ精选文章