Как использовать DI с плагинами семантического ядра?C#

Место общения программистов C#
Ответить
Anonymous
 Как использовать DI с плагинами семантического ядра?

Сообщение Anonymous »

Я пробую семантическое ядро ​​Microsoft для завершения чата в приложении Blazor. Я добавил службу, которая использует EF Core: < /p>

Код: Выделить всё

public interface ISearchService
{
Task GetCustomerAsync(string surname);
}
< /code>
Это интерфейс. Реализация проста. Затем я создал класс плагинов: < /p>
[Description("Representats customer data")]
public class SearchPlugin(ISearchService searchService)
{
[KernelFunction("GetCustomer"), Description("Get customer details by their surname")]
[return: Description("Customer details")]
public async Task GetCustomer([Description("Customer surname")] string surname)
=> await searchService.GetCustomerAsync(surname);
}
Я зарегистрирует службу как Scoped :

Код: Выделить всё

services.AddScoped();
< /code>
и зарегистрировать ядро: < /p>
services.AddSemanticKernel(configuration)
.Plugins.AddFromType();
где добавить Semantickernel - метод расширения:
public static IKernelBuilder AddSemanticKernel(this IServiceCollection services, IConfiguration configuration)
{
var modelId = "llama3.2:3b";
var endpoint = new Uri("http://localhost:11424");

services.AddOllamaChatCompletion(modelId, endpoint);

return services.AddKernel();
}
< /code>
Однако, когда я запускаю приложение, я получаю следующее исключение: < /p>

system.invalidoperationException: не может разрешить Scoped Service 'myApp.services.Interfaces.isearchServ' из root provider.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... el-plugins
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»