alkampfergit / KernelMemory.Extensions

Some unofficial extensions to Kernel Memory to do some advanced RAG
MIT License
8 stars 0 forks source link

Randomatic error in OpenaiRagQueryExecutor #11

Open alkampfergit opened 1 week ago

alkampfergit commented 1 week ago

It seems that we had some error in the enumerateArray, probably the api did not respond something useful, but the problem is that we have a generic error and absolutely no clue on what really happened.

[12:07:07 ERR][Jarvis.AI.Host.Controllers.RagController] Internal error answering question: Exception in handler KernelMemory.Extensions.QueryPipeline.OpenaiRagQueryExecutor - System.InvalidOperationException: The requested operation requires an element of type 'Array', but the target element has type 'Number'.
   at System.Text.Json.ThrowHelper.ThrowJsonElementWrongTypeException(JsonTokenType expectedType, JsonTokenType actualType)
   at System.Text.Json.JsonElement.EnumerateArray()
   at KernelMemory.Extensions.QueryPipeline.OpenaiRagQueryExecutor.GenerateAnswerAsync(String question, String documents, CancellationToken token)
   at KernelMemory.Extensions.QueryPipeline.OpenaiRagQueryExecutor.OnHandleAsync(UserQuestion userQuestion, CancellationToken cancellationToken)
   at KernelMemory.Extensions.UserQuestionPipeline.ExecuteQuery(UserQuestion userQuestion, CancellationToken cancellationToken)
alkampfergit commented 6 days ago

Error seems to be related to this line

var citations = ((JsonElement)toolCall.Arguments["documents"]).EnumerateArray().Select(e => e.GetInt32() - 1).ToHashSet();

Probably when there is no any citations the arguments passed to documents it is not an empty array, but has a type number, do not know why it happens, but to replicate it is possible to ask several time for question that cannot be answered by the memory.