semantic-kernel icon indicating copy to clipboard operation
semantic-kernel copied to clipboard

RegisterSemanticSkills and RegisterNativeSkills throw exception on Azure App Service

Open hyunoosung opened this issue 2 years ago • 2 comments

Describe the bug A clear and concise description of what the bug is.

Working well locally, but throws below exception when deployed to Azure Web Service.

{
  "title": "One or more model validation errors occurred.",
  "status": 500,
  "detail": "Microsoft.SemanticKernel.KernelException: ServiceNotFound: Text completion service not available\r\n   at Microsoft.SemanticKernel.KernelConfig.GetTextCompletionServiceIdOrDefault(String serviceId)\r\n   at Microsoft.SemanticKernel.Kernel.GetService[T](String name)\r\n   at Microsoft.SemanticKernel.Kernel.<CreateSemanticFunction>b__33_0()\r\n   at Microsoft.SemanticKernel.Orchestration.SKFunction.SetAIService(Func`1 serviceFactory)\r\n   at Microsoft.SemanticKernel.Kernel.CreateSemanticFunction(String skillName, String functionName, SemanticFunctionConfig functionConfig)\r\n   at Microsoft.SemanticKernel.Kernel.RegisterSemanticFunction(String skillName, String functionName, SemanticFunctionConfig functionConfig)\r\n   at Microsoft.SemanticKernel.InlineFunctionsDefinitionExtension.CreateSemanticFunction(IKernel kernel, String promptTemplate, PromptTemplateConfig config, String functionName, String skillName)\r\n   at Microsoft.SemanticKernel.InlineFunctionsDefinitionExtension.CreateSemanticFunction(IKernel kernel, String promptTemplate, String functionName, String skillName, String description, Int32 maxTokens, Double temperature, Double topP, Double presencePenalty, Double frequencyPenalty, IEnumerable`1 stopSequences)\r\n   at Microsoft.SemanticKernel.CoreSkills.ConversationSummarySkill..ctor(IKernel kernel)\r\n   at CloudHospital.KernelApi.Extensions.FunctionLoadingExtensions.RegisterNativeSkills(IKernel kernel, ICognitiveSearchConnector connector, ILogger logger) in C:\\Users\\hyuno\\Documents\\GitHub\\iCloudHospital\\CloudHospital.Api\\CloudHospital.KernelApi\\Extensions\\FunctionLoadingExtensions.cs:line 38\r\n   at CloudHospital.KernelApi.Contracts.V1.SemanticKernelController.Skills(Kernel kernel, Ask ask, String skillName, String functionName) in C:\\Users\\hyuno\\Documents\\GitHub\\iCloudHospital\\CloudHospital.Api\\CloudHospital.KernelApi\\Contracts\\V1\\SemanticKernelController.cs:line 53\r\n   at lambda_method34(Closure, Object)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r\n--- End of stack trace from previous location ---\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)",
  "instance": "/api/v1/semantickernel/skills/AIChatSkill/functions/CHChat",
  "traceId": "00-cd90d1d8c592552e198b876edd6858b7-af3e3eddbd53e4b5-00",
  "errors": {
    "message": [
      "ServiceNotFound: Text completion service not available"
    ]
  }
}

Tried remote debugging and the code just spit above exception at

skill[functionName] = kernel.RegisterSemanticFunction(skillDirectoryName, functionName, functionConfig);

SematicKernel/KenelExtensions/ImportSemanticSkillFromDirectory.cs line 97

To Reproduce Steps to reproduce the behavior:

  1. Deploy CopilotChatApi to Azure
  2. Try post SemanticKernelController endpoint
  3. See error

Expected behavior A clear and concise description of what you expected to happen.

This just run really well llocally. Tried to find a root cause but failed.

First, Skills directory were not uploaded so I added CopyToOutputDirectory and those files are all uploaded to destination.

<ItemGroup>
  <None Update="SemanticSkillsDirectory\*\*\*.*">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
</ItemGroup>

Screenshots image

image

Desktop (please complete the following information):

  • OS: Windows
  • IDE: Visual Studio
  • NuGet Package Version [0.11.146.1-preview]

Additional context I don't understand why SemanticSkills are form of txt files and config that had to invoke file IO Can't we just load this from DB?

Here's some detailed exception from profiler.

Microsoft.SemanticKernel.KernelException ``` Stack Trace 1 microsoft.semantickernel!Microsoft.SemanticKernel.KernelConfig.GetTextCompletionServiceIdOrDefaultmicrosoft.semantickernel!Microsoft.SemanticKernel.Kernel.GetServicemicrosoft.semantickernel!Microsoft.SemanticKernel.Kernel.b__33_0microsoft.semantickernel!Microsoft.SemanticKernel.Orchestration.SKFunction.SetAIServicemicrosoft.semantickernel!Microsoft.SemanticKernel.Kernel.CreateSemanticFunctionmicrosoft.semantickernel!Microsoft.SemanticKernel.Kernel.RegisterSemanticFunctionmicrosoft.semantickernel!Microsoft.SemanticKernel.KernelExtensions.ImportSemanticSkillFromDirectoryExtension.ImportSemanticSkillFromDirectorycloudhospital.kernelapi!CloudHospital.KernelApi.Extensions.FunctionLoadingExtensions.RegisterSemanticSkillscloudhospital.kernelapi!CloudHospital.KernelApi.Contracts.V1.SemanticKernelController+d__3.MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon].Startcloudhospital.kernelapi!CloudHospital.KernelApi.Contracts.V1.SemanticKernelController.Skillsanonymously hosted dynamicmethods assembly!dynamicClass.lambda_method37microsoft.aspnetcore.mvc.core!Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+AwaitableObjectResultExecutor+d__0::MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1[System.__Canon].Startmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.ValueTask`1[Microsoft.AspNetCore.Mvc.IActionResult] Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+AwaitableObjectResultExecutor::Executemicrosoft.aspnetcore.mvc.core!Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker+g__Logged\|12_1>d::MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::g__Logged\|12_1microsoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::InvokeActionMethodAsyncmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::Nextmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::InvokeNextActionFilterAsyncmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.Filters.ActionExecutedContext] Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::InvokeNextActionFilterAwaitedAsyncmicrosoft.aspnetcore.mvc.core!Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute+d__6::MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute::OnActionExecutionAsyncmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::Nextmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::InvokeNextActionFilterAsyncmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::Nextmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::InvokeNextActionFilterAsyncmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::Nextmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker::InvokeInnerFilterAsyncmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker::Nextmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker::InvokeNextExceptionFilterAsyncmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker::Nextmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker::InvokeNextResourceFiltermicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker::Nextmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker::InvokeFilterPipelineAsyncmicrosoft.aspnetcore.mvc.core!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+g__Logged\|17_1>d::MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startmicrosoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker::g__Logged\|17_1microsoft.aspnetcore.mvc.core!System.Threading.Tasks.Task Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker::InvokeAsyncmicrosoft.aspnetcore.routing!System.Threading.Tasks.Task Microsoft.AspNetCore.Routing.EndpointMiddleware::Invokecloudhospital.kernelapi!Microsoft.Extensions.DependencyInjection.ConfigServiceCollectionExtensions+c+b__11_0>d.MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startcloudhospital.kernelapi!Microsoft.Extensions.DependencyInjection.ConfigServiceCollectionExtensions+c.b__11_0microsoft.aspnetcore.authorization.policy!Microsoft.AspNetCore.Authorization.AuthorizationMiddleware+d__9::MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startmicrosoft.aspnetcore.authorization.policy!System.Threading.Tasks.Task Microsoft.AspNetCore.Authorization.AuthorizationMiddleware::Invokemicrosoft.aspnetcore.authentication!Microsoft.AspNetCore.Authentication.AuthenticationMiddleware+d__6::MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startmicrosoft.aspnetcore.authentication!System.Threading.Tasks.Task Microsoft.AspNetCore.Authentication.AuthenticationMiddleware::Invokemicrosoft.aspnetcore.httpspolicy!System.Threading.Tasks.Task Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware::Invokemicrosoft.aspnetcore.staticfiles!System.Threading.Tasks.Task Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware::Invokeswashbuckle.aspnetcore.swaggerui!Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware+d__5.MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startswashbuckle.aspnetcore.swaggerui!Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invokeswashbuckle.aspnetcore.swagger!Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware+d__4.MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startswashbuckle.aspnetcore.swagger!Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invokemicrosoft.aspnetcore.mvc.versioning!Microsoft.AspNetCore.Mvc.Versioning.ApiVersioningMiddleware.InvokeAsyncmicrosoft.aspnetcore.hostfiltering!System.Threading.Tasks.Task Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware::Invokemicrosoft.aspnetcore.server.iis!Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1+d__2[System.__Canon]::MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Boolean].Startmicrosoft.aspnetcore.server.iis!System.Threading.Tasks.Task`1[System.Boolean] Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1[System.__Canon]::ProcessRequestAsyncmicrosoft.aspnetcore.server.iis!Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext+d__185::MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Startsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Startmicrosoft.aspnetcore.server.iis!System.Threading.Tasks.Task Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext::HandleRequestmicrosoft.aspnetcore.server.iis!Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext::Executesystem.private.corelib.il!System.Threading.ThreadPoolWorkQueue.Dispatchsystem.private.corelib!System.Threading.PortableThreadPool+WorkerThread::WorkerThreadStart ```
System.IO.IOException ``` Stack Trace 1 system.net.sockets!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs::ThrowExceptionsystem.net.sockets.il!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResultsystem.net.security.il!System.Net.Security.SslStream+d__159`1[System.Net.Security.AsyncReadWriteAdapter].MoveNextsystem.private.corelib.il!System.Threading.ExecutionContext.RunInternalsystem.net.sockets.il!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.InvokeContinuationsystem.net.sockets.il!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.OnCompletedsystem.net.sockets.il!System.Net.Sockets.SocketAsyncEventArgs+c.<.cctor>b__176_0system.private.corelib.il!System.Threading.ThreadPoolTypedWorkItemQueue`2[System.Threading.PortableThreadPool+IOCompletionPoller+Event,System.Threading.PortableThreadPool+IOCompletionPoller+Callback].System.Threading.IThreadPoolWorkItem.Executesystem.private.corelib.il!System.Threading.ThreadPoolWorkQueue.Dispatchsystem.private.corelib!System.Threading.PortableThreadPool+WorkerThread::WorkerThreadStart --

Stack Trace 2 system.net.security.il!System.Net.Security.SslStream+<ReadAsyncInternal>d__1591[System.Net.Security.AsyncReadWriteAdapter].MoveNextsystem.net.sockets!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs::ThrowExceptionsystem.net.sockets.il!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResultsystem.net.security.il!System.Net.Security.SslStream+<ReadAsyncInternal>d__1591[System.Net.Security.AsyncReadWriteAdapter].MoveNextsystem.private.corelib.il!System.Threading.ExecutionContext.RunInternalsystem.net.sockets.il!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.InvokeContinuationsystem.net.sockets.il!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.OnCompletedsystem.net.sockets.il!System.Net.Sockets.SocketAsyncEventArgs+<>c.<.cctor>b__176_0system.private.corelib.il!System.Threading.ThreadPoolTypedWorkItemQueue`2[System.Threading.PortableThreadPool+IOCompletionPoller+Event,System.Threading.PortableThreadPool+IOCompletionPoller+Callback].System.Threading.IThreadPoolWorkItem.Executesystem.private.corelib.il!System.Threading.ThreadPoolWorkQueue.Dispatchsystem.private.corelib!System.Threading.PortableThreadPool+WorkerThread::WorkerThreadStart

Stack Trace 3 system.private.corelib.il!System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throwsystem.private.corelib!System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore1[System.Int32]::ThrowForFailedGetResultsystem.private.corelib.il!System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder1+StateMachineBox1[System.Int32,System.Net.Security.SslStream+<ReadAsyncInternal>d__1591[System.Net.Security.AsyncReadWriteAdapter]].System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResultsystem.net.http.il!System.Net.Http.HttpConnection+<<CheckUsabilityOnScavenge>g__ReadAheadWithZeroByteReadAsync|44_0>d.MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox1[System.Int32,System.Net.Http.HttpConnection+<<CheckUsabilityOnScavenge>g__ReadAheadWithZeroByteReadAsync|44_0>d].ExecutionContextCallbacksystem.private.corelib.il!System.Threading.ExecutionContext.RunInternalsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox1[System.Int32,System.Net.Http.HttpConnection+<<CheckUsabilityOnScavenge>g__ReadAheadWithZeroByteReadAsync|44_0>d].MoveNextsystem.private.corelib.il!System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox1[System.Int32,System.Net.Http.HttpConnection+<<CheckUsabilityOnScavenge>g__ReadAheadWithZeroByteReadAsync|44_0>d].MoveNextsystem.net.security.il!System.Net.Security.SslStream+<ReadAsyncInternal>d__1591[System.Net.Security.AsyncReadWriteAdapter].MoveNextsystem.net.security.il!System.Net.Security.SslStream+<ReadAsyncInternal>d__1591[System.Net.Security.AsyncReadWriteAdapter].MoveNextsystem.net.sockets!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs::ThrowExceptionsystem.net.sockets.il!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResultsystem.net.security.il!System.Net.Security.SslStream+<ReadAsyncInternal>d__1591[System.Net.Security.AsyncReadWriteAdapter].MoveNextsystem.private.corelib.il!System.Threading.ExecutionContext.RunInternalsystem.net.sockets.il!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.InvokeContinuationsystem.net.sockets.il!System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.OnCompletedsystem.net.sockets.il!System.Net.Sockets.SocketAsyncEventArgs+<>c.<.cctor>b__176_0system.private.corelib.il!System.Threading.ThreadPoolTypedWorkItemQueue2[System.Threading.PortableThreadPool+IOCompletionPoller+Event,System.Threading.PortableThreadPool+IOCompletionPoller+Callback].System.Threading.IThreadPoolWorkItem.Executesystem.private.corelib.il!System.Threading.ThreadPoolWorkQueue.Dispatchsystem.private.corelib!System.Threading.PortableThreadPool+WorkerThread::WorkerThreadStart

</details>

hyunoosung avatar Apr 13 '23 18:04 hyunoosung

@hathind-ms Could we look into this?

microsoftShannon avatar Apr 13 '23 20:04 microsoftShannon

This issue has gone after downgrade to net standard 2.0 Not 100% sure of this was related though

hyunoosung avatar Apr 17 '23 08:04 hyunoosung

Lots of other changes have made it in during the past few days.

Closing for now since it can't be reproduced anymore.

Feel free to re-open if it occurs again.

glahaye avatar Apr 18 '23 18:04 glahaye