下面的代码中使用 ConfigureHttpClientDefaults 遇到问题
var builder = new KernelMemoryBuilder(); // builder.Services.ConfigureHttpClientDefaults(b => // b.ConfigurePrimaryHttpMessageHandler(() => new LoggingHandler())); var memory = builder .WithOpenAIDefaults(OPENAI_API_KEY) .Build<MemoryServerless>(); await memory.ImportDocumentAsync("sample-KM-Readme.pdf", documentId: "doc001");
如果注释 ConfigureHttpClientDefaults 部分的代码,运行时控制台可以正常输出
info: Microsoft.KernelMemory.Handlers.TextExtractionHandler[0] Handler 'extract' ready info: Microsoft.KernelMemory.Handlers.TextPartitioningHandler[0] Handler 'partition' ready info: Microsoft.KernelMemory.Handlers.SummarizationHandler[0] Handler 'summarize' ready info: Microsoft.KernelMemory.Handlers.GenerateEmbeddingsHandler[0] Handler 'gen_embeddings' ready, 1 embedding generators info: Microsoft.KernelMemory.Handlers.SaveRecordsHandler[0] Handler save_records ready, 1 vector storages info: Microsoft.KernelMemory.Handlers.DeleteDocumentHandler[0] Handler 'private_delete_document' ready info: Microsoft.KernelMemory.Handlers.DeleteIndexHandler[0] Handler 'private_delete_index' ready info: Microsoft.KernelMemory.Handlers.DeleteGeneratedFilesHandler[0] Handler 'delete_generated_files' ready info: Microsoft.KernelMemory.Pipeline.BaseOrchestrator[0] Queueing upload of 1 files for further processing [request doc001] info: Microsoft.KernelMemory.Pipeline.BaseOrchestrator[0] File uploaded: sample-KM-Readme.pdf, 174013 bytes info: Microsoft.KernelMemory.Pipeline.BaseOrchestrator[0] Handler 'extract' processed pipeline 'default/doc001' successfully info: Microsoft.KernelMemory.Pipeline.BaseOrchestrator[0] Handler 'partition' processed pipeline 'default/doc001' successfully
如果取消注释,运行时控制台无任何输出
看起来问题可能与 ConfigureHttpClientDefaults 方法的使用有关。这个方法通常用于配置全局的 HttpClient 实例,以便在整个应用程序中共享相同的 HttpClient 配置。但在您的情况下,可能存在一些与此相关的问题,导致 HttpClient 配置不正确。
ConfigureHttpClientDefaults
在这种情况下,我建议您检查以下几点:
HttpClient 配置是否正确: 确保您在 ConfigureHttpClientDefaults 方法中正确地配置了 HttpClient。特别是,确保您的 LoggingHandler 被正确地注册为主要的 HttpMessageHandler。
是否有异常抛出: 检查代码是否抛出了任何异常。您可以尝试使用 try-catch 块来捕获可能的异常,并在控制台输出错误信息。
日志记录: 如果可能的话,尝试在 ConfigureHttpClientDefaults 中添加一些日志记录,以便跟踪代码的执行情况。
HttpClient 配置与其他部分的兼容性: 确保 ConfigureHttpClientDefaults 方法的使用与其他部分的代码兼容,并且不会导致冲突或错误。
调试: 使用调试器逐步执行代码,检查每一步的执行情况,找出导致问题的具体原因。
通过检查以上几点,您应该能够找到导致问题的原因,并解决它。如果问题仍然存在,您可以尝试在相关论坛或社区寻求帮助,或者提供更多详细信息以便我们能够更好地理解问题并给出更准确的建议。