.NET 6+Semantic Kernel快速接入OpenAI接口

大家好,我是Edison。

今天我们快速地使用Semantic Kernel来集成OpenAI,使用20来行代码快速实现一个简单的AIGC应用。

这里,我就不多介绍Semantic Kernel了,包括它的一些主要特性如Planners, Functions, Plugins等,这些都留到以后写系列文章再来详细介绍吧。

现阶段你只需要了解,Semantic Kernel 与 LangChain 类似,但 Semantic Kernel 是为应用开发开发人员创建的SDK项目,它支持.NET, Python 以及 Java,但是对.NET支持最成熟(微软自家孩子嘛),可以让你的应用很轻易的集成AI大语言模型。

.NET6应用集成OpenAI

这里,我们快速通过一个.NET 6 控制台应用程序来使用Semantic Kernel集成OpenAI创建一个AIGC应用。

第一步:创建一个.NET6控制台应用程序;

第二步:新建一个appsettings.json,填入以下配置:

复制代码
{
  "LLM_API_MODEL": "mistral-7b-instruct",
  "LLM_API_BASE_URL": "https://api.your-company.com/llm",
  "LLM_API_KEY": "your-llm-api-key" // Replace this value with your llm api key
}

这里我使用的是我司内部提供的大语言模型API,它是OpenAI兼容的。

第三步:通过NuGet管理器安装以下组件包:

  • Microsoft.SemanticKernel,1.11.0

  • Microsoft.SemanticKernel.Connectors.OpenAI,1.11.0

  • Microsoft.Extensions.Http,8.0.0

  • Microsoft.Extensions.Configuration, 6.0.0

  • Microsoft.Extensions.Configuration.Json, 6.0.0

第四步:创建一个OpenAiConfiguration类用于接收appsettings的配置:

复制代码
public class OpenAiConfiguration
{
    public string ModelId { get; set; }
    public string EndPoint { get; set; }
    public string ApiKey { get; set; }

    public OpenAiConfiguration(string modelId, string endPoint, string apiKey)
    {
        ModelId = modelId;
        EndPoint = endPoint;
        ApiKey = apiKey;
    }
}

第五步:创建一个用于转发OpenAI请求的HttpClientHandler,它会将API请求转发你的大语言模型API地址,当然,你的大语言模型API必须是OpenAI兼容的才行。

复制代码
public class CustomOpenAiHandler : HttpClientHandler
{
    private readonly string _openAiBaseAddress;

    public CustomOpenAiHandler(string openAiBaseAddress)
    {
        _openAiBaseAddress = openAiBaseAddress;
    }

    protected override async Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken cancellationToken)
    {
        request.RequestUri = new Uri($"{_openAiBaseAddress}{request.RequestUri.PathAndQuery}");
        return await base.SendAsync(request, cancellationToken);
    }
}

第六步:在Program.cs中添加以下核心步骤的代码,加上注释,合计29行,快速实现一个AIGC应用。

复制代码
using Microsoft.Extensions.Configuration;
using Microsoft.SemanticKernel;
using SemanticKernelDemo.Configurations;
using SemanticKernelDemo.Handlers;

// Step1. Load your custom configuration
var configuration = new ConfigurationBuilder().AddJsonFile($"appsettings.json");
var config = configuration.Build();
var openAiConfiguration = new OpenAiConfiguration(config.GetSection("LLM_API_MODEL").Value, config.GetSection("LLM_API_BASE_URL").Value, config.GetSection("LLM_API_KEY").Value);
// Step2. Create a kernel from Your LLM API
var openAiClient = new HttpClient(new CustomOpenAiHandler(openAiConfiguration.EndPoint));
var builder = Kernel.CreateBuilder();
builder.AddOpenAIChatCompletion(openAiConfiguration.ModelId, openAiConfiguration.ApiKey, httpClient: openAiClient);
var kernel = builder.Build();
// Step3. Create a chat between you and kernel
var promptTemplate = @"<message role=""user"">{0}</message>";
Console.Write("You: ");
var userMessage = string.Empty;
while (!string.IsNullOrEmpty(userMessage = Console.ReadLine()))
{
    var prompt = string.Format(promptTemplate, userMessage);
    var summarize = kernel.CreateFunctionFromPrompt(prompt);
    var response = kernel.InvokeStreamingAsync(summarize);
    Console.Write("AI: ");
    await foreach (var item in response)
        Console.Write(item.ToString());
    Console.WriteLine(Environment.NewLine + "---------------------------------------------------------------------");
    Console.Write("You: ");
}

运行一下,结果如下图所示:

小结

本文介绍了如何在.NET 6环境下使用Semantic Kernel快速接入OpenAI大预言模型API来实现一个AIGC应用,20来行代码就可以实现,是不是很方便?

如果你对Semantic Kernel感兴趣,后续我也可以考虑整理一个系列文章,逐步深入了解和应用Semantic Kernel。


作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

相关推荐
Omics Pro3 小时前
首款多模态生物推理大语言模型
人工智能·算法·语言模型·自然语言处理·数据挖掘·数据分析·aigc
AI精钢3 小时前
什么是面向 Agent 的 LLM?从 Qwen3.6-Plus 看大模型的新分水岭
网络·数据库·人工智能·云原生·aigc
AI精钢4 小时前
从 Prompt Engineering 到 Fine-Tuning:LLM 应用落地的理性决策框架
大数据·人工智能·云原生·prompt·aigc
搏博5 小时前
文献关系可视化与智能发现工具Research Rabbit深度使用教程(基于2026最新版)
ai·aigc·ai写作
AI先驱体验官5 小时前
数字人技术正在改变企业服务:一场静悄悄的效率革命
大数据·运维·人工智能·重构·aigc
KC2706 小时前
OpenAkita 深度解析:开源多Agent协作框架的实战指南
人工智能·aigc·ai编程
春末的南方城市7 小时前
CVPR 2026 | 加州大学 × Adobe 联合发布 FaceCam:无4D数据训练下实现单视频精准相机控制,让短视频创作者轻松掌控“电影级”运镜。
人工智能·深度学习·数码相机·机器学习·计算机视觉·aigc
EdisonZhou8 小时前
MAF快速入门(21)RC5引入的Script运行能力
llm·agent·.net core
亿牛云爬虫专家8 小时前
AIGC数据引擎的基石:图库抓取架构从单机到云原生的演进与实战
云原生·aigc·爬虫代理·自动化运维·数据抓取·图库·数据引擎
最贪吃的虎9 小时前
我的第一个 RAG 程序:从 0 到 1,用 PDF 搭一个最小可运行的知识库问答系统
人工智能·python·算法·机器学习·aigc·embedding·llama