UNIVPLMDataIntegration/Admin.NET/Admin.NET.Core/Ai/Extentions/LLMRegisterExtention.cs

51 lines
1.7 KiB
C#
Raw Normal View History

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.Google;
using Microsoft.SemanticKernel.Connectors.AzureOpenAI;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Connectors.HuggingFace;
using Microsoft.SemanticKernel.Connectors.Ollama;
using Microsoft.SemanticKernel.Connectors.Qdrant;
using Admin.NET.Core.Ai.Option;
using System.Net;
using Admin.NET.Core.Ai.Handlers;
using OllamaSharp;
using Admin.NET.Core.Ai.Interface;
using Admin.NET.Core.Ai.Models;
namespace Admin.NET.Core.Ai.Extentions;
/// <summary>
/// LLM注册扩展类
/// 注意:此扩展不能切换模型,只能使用一个模型
/// </summary>
public static class LLMRegisterExtention
{
/// <summary>
/// 注册LLM大模型,获取Kernel实例
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection AddLLM(this IServiceCollection services)
{
services.AddTransient((serviceProvider) =>
{
ILLMFactory llmFactory = serviceProvider.GetRequiredService<ILLMFactory>();
var llmOptions = App.GetOptions<LLMOptions>();
var modelProvider = llmOptions.ModelProvider;
var provider = llmOptions.Providers.FirstOrDefault(p => p.ProductName == modelProvider);
if (provider == null)
{
throw new Exception($"未找到{modelProvider}模型提供者");
}
return llmFactory.CreateKernel(new LLMModelInput
{
ProductName = provider.ProductName,
ModelId = provider.ChatCompletion.ModelId
});
});
return services;
}
}