你好,
我尝试从32升级到33,但突然我的代码抛出了一个空指针异常:
Java.lang.NullPointerException: 无法调用 "java.lang.Class.isEnum()",因为 "typeArgumentClass" 为空
at dev.langchain4j.service.output.DefaultOutputParserFactory.get(DefaultOutputParserFactory.java:53)
at dev.langchain4j.service.output.ServiceOutputParser.outputFormatInstructions(ServiceOutputParser.java:90)
这个问题出现在ServiceOutputParser类中:
ServiceOutputParser.outputFormatInstructions(Class<?>))
在之前的版本中,这是一个静态方法,现在已经不再是这样了。
如果将List.class作为参数传递给此方法,将抛出空指针异常。
2条答案
按热度按时间nwlqm0z11#
@PrimosK,你能看一下吗?这与#725的更改有关。我可以复制,当使用List.class时,NPE发生是因为他没有参数化类型。
emeijp432#
我们可以将当前实现与旧行为(轻松地)对齐,但鉴于
AiServices
只支持List<String>
和List<Enum>
(在其他情况下出错),我对您的具体用例感到好奇。您期望得到一个字符串列表吗?如果是,您可能可以使用以下方法:
此代码片段使用
TypeToken
将预期类型定义为List<String>
,然后相应地获取格式说明符。这是否符合您的要求?鉴于以下事实:
...我建议 @langchain4j 在需要时介入...