51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
|
|
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;
|
||
|
|
}
|
||
|
|
}
|