ElderJames / SigmaAI

Enterprise intelligence platform based on LLM and GenAI
Apache License 2.0
17 stars 5 forks source link

发送聊天信息,代码报错 #15

Open kuangkro opened 4 months ago

kuangkro commented 4 months ago

在配置好模型以后(GTP3.5),在聊天窗口发送信息:查询订单123的信息,代码运行到ChatService->SendChatByAppAsync方法第104行时报错:空指针错误 具体错误信息如下: System.NullReferenceException HResult=0x80004003 Message=Object reference not set to an instance of an object. Source=Microsoft.SemanticKernel.Core StackTrace: 在 Microsoft.SemanticKernel.Text.TextChunker.InternalSplitLines(String text, Int32 maxTokensPerLine, Boolean trim, String[] splitOptions, TokenCounter tokenCounter) 在 Microsoft.SemanticKernel.Text.TextChunker.SplitPlainTextLines(String text, Int32 maxTokensPerLine, TokenCounter tokenCounter) 在 Microsoft.SemanticKernel.Plugins.Core.ConversationSummaryPlugin.d8.MoveNext() 在 Microsoft.SemanticKernel.KernelFunctionFromMethod.<>c.<b13_4>d.MoveNext() 在 System.Threading.Tasks.ValueTask1.get_Result() 在 Microsoft.SemanticKernel.KernelFunction.<InvokeAsync>d__18.MoveNext() 在 Microsoft.SemanticKernel.TemplateEngine.CodeBlock.<RenderFunctionCallAsync>d__10.MoveNext() 在 System.Threading.Tasks.ValueTask1.get_Result() 在 Microsoft.SemanticKernel.KernelPromptTemplate.d5.MoveNext() 在 Microsoft.SemanticKernel.KernelFunctionFromPrompt.d16.MoveNext() 在 Microsoft.SemanticKernel.KernelFunctionFromPrompt.d4`1.MoveNext() 在 Microsoft.SemanticKernel.KernelFunctionFromPrompt.d41.System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult(Int16 token) 在 Microsoft.SemanticKernel.KernelFunction.<InvokeStreamingAsync>d__211.MoveNext() 在 Microsoft.SemanticKernel.KernelFunction.d21`1.MoveNext() 在 Microsoft.SemanticKernel.KernelFunction.d21`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) 在 Sigma.Core.Domain.Service.ChatService.<>c__DisplayClass5_0.<g__Execute|0>d.MoveNext() 在 D:\GitRepository\SigmaAI\src\Sigma.Core\Domain\Service\ChatService.cs 中: 第 104 行

此异常最初是在此调用堆栈中引发的: [外部代码] Sigma.Core.Domain.Service.ChatService.SendChatByAppAsync.__Execute|0() (位于 ChatService.cs 中)

请问该问题是什么原因引起的呢? 另外,在“新建模型”功能里面有一个Function Call的配置,打开代表要添加意图识别prompt,这样做的好处是不是可能增加大模型进行native function调用的几率

ElderJames commented 4 months ago

问题出在最新的对历史记录的分配调用插件造成报错,我晚点修复下,你也可以回退几个版本看看。 Function Call的配置是二选一,意图识别就是利用prompt对不支持function api的模型实现function调用。

kuangkro commented 4 months ago

感谢你及时回复,请教一个function call的问题: 对于支持function call的模型,如何使得模型在需要进行函数调用的时候触发函数调用呢? 之前我试过好多次,在不断地更换提示词的情况下偶尔能够触发函数调用,感觉会不会触发函数调用很不可控。

ElderJames commented 4 months ago

这考验模型的识别能力,gpt系列是最好的。可以尝试加入提示词作为function限定的范围,另外function的描述也要尽量详细,最好加入可能的用户问题,这样能够提高命中率。

kuangkro commented 4 months ago

做了好多次订单查询的测试,我发现基于prompt的意图识别比GPT的function call好用太多了,采用意图识别的方式更容易达到想要的效果。 不过采用意图识别方式比较费token,这个可能是一个需要优化的点~

ElderJames commented 4 months ago

报错修复了吗?可以来个PR