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

Improve First Contributor Docs / Experience

Open karianna opened this issue 2 years ago • 2 comments

I first checked the README.md and CONTRIBUTUNG.md files. As a contributor I am missing some documentation around what the initial developer workflow should be and I experience some bugs (might be Mac OS X specific). Some observations:

  1. I ran the build.sh file and it came up with the warning about not have dotnet 6 installed (I had dotnet 7 installed via Homebrew)
  2. So I installed dotnet6 via brew isntall dotnet@6
  3. I then ran ./build.sh again but of course it just references the dotnet command so it still used my default of 7
  4. I changed each of the calls to dotnet to be the full PATH to the dotnet 6 executable e.g.
...
# Release config triggers also "dotnet format"
/opt/homebrew/Cellar/dotnet@6/6.0.114/bin/dotnet build --configuration Release --interactive

/opt/homebrew/Cellar/dotnet@6/6.0.114/bin/dotnet test --configuration Release --no-build --no-restore --interactive
...
  1. Although the build swapped back to dotnet 7 from time to time (I assume there are other places in the build toolchain that call dotnet with out a prefix path it got further but then it failed a test:
Failed SemanticKernel.IntegrationTests.CoreSkills.PlannerSkillTests.CreatePlanShouldHaveIfElseConditionalStatementsAndBeAbleToExecuteAsync(prompt: "If is morning tell me a joke about coffee", expectedAnswerContainsAtLeast: ["function.FunSkill.Joke", 1, "<if condition=\"", 1, "</if>", ...]) [127 ms]
  Error Message:
   Microsoft.SemanticKernel.Diagnostics.ValidationException : EmptyValue: The Azure endpoint cannot be empty
  Stack Trace:
     at Microsoft.SemanticKernel.Connectors.AI.OpenAI.AzureSdk.AzureOpenAIClientBase..ctor(String modelId, String endpoint, String apiKey, IDelegatingHandlerFactory handlerFactory, ILogger log) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/Connectors/Connectors.AI.OpenAI/AzureSdk/AzureOpenAIClientBase.cs:line 47
   at Microsoft.SemanticKernel.Connectors.AI.OpenAI.TextCompletion.AzureTextCompletion..ctor(String modelId, String endpoint, String apiKey, IDelegatingHandlerFactory handlerFactory, ILogger log) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/Connectors/Connectors.AI.OpenAI/TextCompletion/AzureTextCompletion.cs:line 32
   at Microsoft.SemanticKernel.KernelConfigOpenAIExtensions.<>c__DisplayClass0_0.<AddAzureTextCompletionService>g__Factory|0(IKernel kernel) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/Connectors/Connectors.AI.OpenAI/KernelConfigOpenAIExtensions.cs:line 36
   at Microsoft.SemanticKernel.Kernel.GetService[T](String name) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/SemanticKernel/Kernel.cs:line 246
   at Microsoft.SemanticKernel.Kernel.<CreateSemanticFunction>b__33_0() in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/SemanticKernel/Kernel.cs:line 330
   at Microsoft.SemanticKernel.Orchestration.SKFunction.SetAIService(Func`1 serviceFactory) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/SemanticKernel/Orchestration/SKFunction.cs:line 206
   at Microsoft.SemanticKernel.Kernel.CreateSemanticFunction(String skillName, String functionName, SemanticFunctionConfig functionConfig) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/SemanticKernel/Kernel.cs:line 330
   at Microsoft.SemanticKernel.Kernel.RegisterSemanticFunction(String skillName, String functionName, SemanticFunctionConfig functionConfig) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/SemanticKernel/Kernel.cs:line 94
   at Microsoft.SemanticKernel.KernelExtensions.ImportSemanticSkillFromDirectoryExtension.ImportSemanticSkillFromDirectory(IKernel kernel, String parentDirectory, String skillDirectoryName) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/SemanticKernel/KernelExtensions/ImportSemanticSkillFromDirectory.cs:line 97
   at SemanticKernel.IntegrationTests.TestHelpers.GetSkill(String skillName, IKernel target) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/SemanticKernel.IntegrationTests/TestHelpers.cs:line 40
   at SemanticKernel.IntegrationTests.CoreSkills.PlannerSkillTests.CreatePlanShouldHaveIfElseConditionalStatementsAndBeAbleToExecuteAsync(String prompt, Object[] expectedAnswerContainsAtLeast) in /Users/martijnverburg/Documents/workspace/microsoft/semantic-kernel/dotnet/src/SemanticKernel.IntegrationTests/CoreSkills/PlannerSkillTests.cs:line 128
--- End of stack trace from previous location ---

I suspect that makes sense as it wants an OpenAI or Azure OpenAI key, but overall the developer experience isn't a smooth run the build and it works experience. So some extra docs / prompts in the build scripts are likely needed

karianna avatar Apr 18 '23 01:04 karianna

@karianna thanks for bringing this up, we will take a look

evchaki avatar Apr 18 '23 20:04 evchaki

@matthewbolanos can you see if we are missing mac steps here?

evchaki avatar May 16 '23 21:05 evchaki

I am not able to repo this. Closing this with the assumption that the problem has now been fixed since this issue is fairly old. Please reopen if there are still issues.

madsbolaris avatar Aug 16 '23 15:08 madsbolaris