langchain4j [BUG] 对象列表未正确序列化

zaqlnxep  于 3个月前  发布在  其他
关注(0)|答案(1)|浏览(32)

在最近的发布中,工具参数支持POJOs。然而,当POJO被 Package 在一个集合中时,我遇到了无法使其正常工作的问题。

描述bug

以下是工具参数为POJO集合时发生的情况:数据内容有效,但结构错误。也就是说,如果参数是java.util.List<MyPojo>,实际对象是一个ArrayList,包含LinkedTreeMap。尽管Map的内容是正确的(意味着键与MyPojo匹配),但结构仍然是错误的。

日志和堆栈跟踪

重现问题

public record AiVariant(String type, String value) {}

    @Tool
    public void saveVariants(
        List<AiVariant> variants
    ) { }

    @Bean
    public ChatLanguageModel openAiChatModel() {
        return OpenAiChatModel.builder()
            .apiKey(openAiApiKey)
            .responseFormat("json_object")
            .build();
    }

    //The RAG is probably not needed for this example. 
    @Bean
    public AiAssistant aiAssistant(ChatLanguageModel openAiChatModel, ContentRetriever rag, ContentTools contentTools) {
        return AiServices.builder(AiAssistant.class)
            .chatLanguageModel(openAiChatModel)
            .tools(contentTools)
            .chatMemory(MessageWindowChatMemory.withMaxMessages(10))
            .contentRetriever(rag)
            .build();
    }
...

public interface AiAssistant {
    @SystemMessage("Json")
    String chat(String message);
}

...

@Component
public class Test implements CommandLineRunner {
   
    @Autowired private AiAssistant aiAssistant;

    @Override
    public void run(final String... args) throws Exception {
        var chat = aiAssistant.chat("Save variants with type jurisdiction and value EU");

当前行为与预期行为

  • 当前行为*:

  • 预期行为*:一个类型为"AiVariants"的对象列表,而不是LinkedTreeMap。
    请完成以下信息:
  • LangChain4j版本:

langchain4j, langchain4j-open-ail & langchain4j-easy-rag: 0.32.0

  • 使用的LLM(s):

默认版本

  • Java版本:

JDK 21

  • Spring Boot版本(如适用):

3.3.1

其他上下文

3pvhb19x

3pvhb19x1#

你好,@G0dC0der,感谢你的报告!
@gs-snagaraj,你愿意接手这个吗?

相关问题