Lesson 34 of 40
AI & ML
Advanced
55 min
ML.NET & AI Integration
Integrate machine learning into .NET apps using ML.NET 4, Semantic Kernel for LLM orchestration, and Azure AI services.
Part 1: ML.NET AutoML
var context = new MLContext();
var data = context.Data.LoadFromTextFile<OrderData>("orders.csv");
var experiment = context.Auto().CreateRegressionExperiment(300);
var result = experiment.Execute(data, labelColumnName: "Total");
var data = context.Data.LoadFromTextFile<OrderData>("orders.csv");
var experiment = context.Auto().CreateRegressionExperiment(300);
var result = experiment.Execute(data, labelColumnName: "Total");
Part 2: Semantic Kernel for LLM Apps
var kernel = Kernel.CreateBuilder()
.AddAzureOpenAIChatCompletion("gpt-4o", endpoint, apiKey)
.Build();
var result = await kernel.InvokePromptAsync(
"Summarize this order: {{$order}}",
new KernelArguments { ["order"] = orderJson });
.AddAzureOpenAIChatCompletion("gpt-4o", endpoint, apiKey)
.Build();
var result = await kernel.InvokePromptAsync(
"Summarize this order: {{$order}}",
new KernelArguments { ["order"] = orderJson });
Part 3: Copilot Studio Plugin
Expose your .NET service as a Copilot Studio plugin:
// Kernel function exposed as AI plugin
[KernelFunction, Description("Gets order by ID")]
public async Task<string> GetOrder(
[Description("The order identifier")] int orderId)
=> (await _svc.GetAsync(orderId)).ToString();
[KernelFunction, Description("Gets order by ID")]
public async Task<string> GetOrder(
[Description("The order identifier")] int orderId)
=> (await _svc.GetAsync(orderId)).ToString();
Part 4: ONNX Model Inference
Run pre-trained ONNX models (PyTorch, scikit-learn) in .NET:
var session = new InferenceSession("model.onnx");
var inputs = new NamedOnnxValue[] { NamedOnnxValue.CreateFromTensor("input", tensor) };
var outputs = session.Run(inputs);
var prediction = outputs.First().AsEnumerable<float>().ToArray();
var inputs = new NamedOnnxValue[] { NamedOnnxValue.CreateFromTensor("input", tensor) };
var outputs = session.Run(inputs);
var prediction = outputs.First().AsEnumerable<float>().ToArray();